123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160216121622163216421652166216721682169217021712172217321742175217621772178217921802181218221832184218521862187218821892190219121922193219421952196219721982199220022012202220322042205220622072208220922102211221222132214221522162217221822192220222122222223222422252226222722282229223022312232223322342235223622372238223922402241224222432244224522462247224822492250225122522253225422552256225722582259226022612262226322642265226622672268226922702271227222732274227522762277227822792280228122822283228422852286228722882289229022912292229322942295229622972298229923002301230223032304230523062307230823092310231123122313231423152316231723182319232023212322232323242325232623272328232923302331233223332334233523362337233823392340234123422343234423452346234723482349235023512352235323542355235623572358235923602361236223632364236523662367236823692370237123722373237423752376237723782379238023812382238323842385238623872388238923902391239223932394239523962397239823992400240124022403240424052406240724082409241024112412241324142415241624172418241924202421242224232424242524262427242824292430243124322433243424352436243724382439244024412442244324442445244624472448244924502451245224532454245524562457245824592460246124622463246424652466246724682469247024712472247324742475247624772478247924802481248224832484248524862487248824892490249124922493249424952496249724982499250025012502250325042505250625072508250925102511251225132514251525162517251825192520252125222523252425252526252725282529253025312532253325342535253625372538253925402541254225432544254525462547254825492550255125522553255425552556255725582559256025612562256325642565256625672568256925702571257225732574257525762577257825792580258125822583258425852586258725882589259025912592259325942595259625972598259926002601260226032604260526062607260826092610261126122613261426152616261726182619262026212622262326242625262626272628262926302631263226332634263526362637263826392640264126422643264426452646264726482649265026512652265326542655265626572658265926602661266226632664266526662667266826692670267126722673267426752676267726782679268026812682268326842685268626872688268926902691269226932694269526962697269826992700270127022703270427052706270727082709271027112712271327142715271627172718271927202721272227232724272527262727272827292730273127322733273427352736273727382739274027412742274327442745274627472748274927502751275227532754275527562757275827592760276127622763276427652766276727682769277027712772277327742775277627772778277927802781278227832784278527862787278827892790279127922793279427952796279727982799280028012802280328042805280628072808280928102811281228132814281528162817281828192820282128222823282428252826282728282829283028312832283328342835283628372838283928402841284228432844284528462847284828492850285128522853285428552856285728582859286028612862286328642865286628672868286928702871287228732874287528762877287828792880288128822883288428852886288728882889289028912892289328942895289628972898289929002901290229032904290529062907290829092910291129122913291429152916291729182919292029212922292329242925292629272928292929302931293229332934293529362937293829392940294129422943294429452946294729482949295029512952295329542955295629572958295929602961296229632964296529662967296829692970297129722973297429752976297729782979298029812982298329842985298629872988298929902991299229932994299529962997299829993000300130023003300430053006300730083009301030113012301330143015301630173018301930203021302230233024302530263027302830293030303130323033303430353036303730383039304030413042304330443045304630473048304930503051305230533054305530563057305830593060306130623063306430653066306730683069307030713072307330743075307630773078307930803081308230833084308530863087308830893090309130923093309430953096309730983099310031013102310331043105310631073108310931103111311231133114311531163117311831193120312131223123312431253126312731283129313031313132313331343135313631373138313931403141314231433144314531463147314831493150315131523153315431553156315731583159316031613162316331643165316631673168316931703171317231733174317531763177317831793180318131823183318431853186318731883189319031913192319331943195319631973198319932003201320232033204320532063207320832093210321132123213321432153216321732183219322032213222322332243225322632273228322932303231323232333234323532363237323832393240324132423243324432453246324732483249325032513252325332543255325632573258325932603261326232633264326532663267326832693270327132723273327432753276327732783279328032813282328332843285328632873288328932903291329232933294329532963297329832993300330133023303330433053306330733083309331033113312331333143315331633173318331933203321332233233324332533263327332833293330333133323333333433353336333733383339334033413342334333443345334633473348334933503351335233533354335533563357335833593360336133623363336433653366336733683369337033713372337333743375337633773378337933803381338233833384338533863387338833893390339133923393339433953396339733983399340034013402340334043405340634073408340934103411341234133414341534163417341834193420342134223423342434253426342734283429343034313432343334343435343634373438343934403441344234433444344534463447344834493450345134523453345434553456345734583459346034613462346334643465346634673468346934703471347234733474347534763477347834793480348134823483348434853486348734883489349034913492349334943495349634973498349935003501350235033504350535063507350835093510351135123513351435153516351735183519352035213522352335243525352635273528352935303531353235333534353535363537353835393540354135423543354435453546354735483549355035513552355335543555355635573558355935603561356235633564356535663567356835693570357135723573357435753576357735783579358035813582358335843585358635873588358935903591359235933594359535963597359835993600360136023603360436053606360736083609361036113612361336143615361636173618361936203621362236233624362536263627362836293630363136323633363436353636363736383639364036413642364336443645364636473648364936503651365236533654365536563657365836593660366136623663366436653666366736683669367036713672367336743675367636773678367936803681368236833684368536863687368836893690369136923693369436953696369736983699370037013702370337043705370637073708370937103711371237133714371537163717371837193720372137223723372437253726372737283729373037313732373337343735373637373738373937403741374237433744374537463747374837493750375137523753375437553756375737583759376037613762376337643765376637673768376937703771377237733774377537763777377837793780378137823783378437853786378737883789379037913792379337943795379637973798379938003801380238033804380538063807380838093810381138123813381438153816381738183819382038213822382338243825382638273828382938303831383238333834383538363837383838393840384138423843384438453846384738483849385038513852385338543855385638573858385938603861386238633864386538663867386838693870387138723873387438753876387738783879388038813882388338843885388638873888388938903891389238933894389538963897389838993900390139023903390439053906390739083909391039113912391339143915391639173918391939203921392239233924392539263927392839293930393139323933393439353936393739383939394039413942394339443945394639473948394939503951395239533954395539563957395839593960396139623963396439653966396739683969397039713972397339743975397639773978397939803981398239833984398539863987398839893990399139923993399439953996399739983999400040014002400340044005400640074008400940104011401240134014401540164017401840194020402140224023402440254026402740284029403040314032403340344035403640374038403940404041404240434044404540464047404840494050405140524053405440554056405740584059406040614062406340644065406640674068406940704071407240734074407540764077407840794080408140824083408440854086408740884089409040914092409340944095409640974098409941004101410241034104410541064107410841094110411141124113411441154116411741184119412041214122412341244125412641274128412941304131413241334134413541364137413841394140414141424143414441454146414741484149415041514152415341544155415641574158415941604161416241634164416541664167416841694170417141724173417441754176417741784179418041814182418341844185418641874188418941904191419241934194419541964197419841994200420142024203420442054206420742084209421042114212421342144215421642174218421942204221422242234224422542264227422842294230423142324233423442354236423742384239424042414242424342444245424642474248424942504251425242534254425542564257425842594260426142624263426442654266426742684269427042714272427342744275427642774278427942804281428242834284428542864287428842894290429142924293429442954296429742984299430043014302430343044305430643074308430943104311431243134314431543164317431843194320432143224323432443254326432743284329433043314332433343344335433643374338433943404341434243434344434543464347434843494350435143524353435443554356435743584359436043614362436343644365436643674368436943704371437243734374437543764377437843794380438143824383438443854386438743884389439043914392439343944395439643974398439944004401440244034404440544064407440844094410441144124413441444154416441744184419442044214422442344244425442644274428442944304431443244334434443544364437443844394440444144424443444444454446444744484449445044514452445344544455445644574458445944604461446244634464446544664467446844694470447144724473447444754476447744784479448044814482448344844485448644874488448944904491449244934494449544964497449844994500450145024503450445054506450745084509451045114512451345144515451645174518451945204521452245234524452545264527452845294530453145324533453445354536453745384539454045414542454345444545454645474548454945504551455245534554455545564557455845594560456145624563456445654566456745684569457045714572457345744575457645774578457945804581458245834584458545864587458845894590459145924593459445954596459745984599460046014602460346044605460646074608460946104611461246134614461546164617461846194620462146224623462446254626462746284629463046314632463346344635463646374638463946404641464246434644464546464647464846494650465146524653465446554656465746584659466046614662466346644665466646674668466946704671467246734674467546764677467846794680468146824683468446854686468746884689469046914692469346944695469646974698469947004701470247034704470547064707470847094710471147124713471447154716471747184719472047214722472347244725472647274728472947304731473247334734473547364737473847394740474147424743474447454746474747484749475047514752475347544755475647574758475947604761476247634764476547664767476847694770477147724773477447754776477747784779478047814782478347844785478647874788478947904791479247934794479547964797479847994800480148024803480448054806480748084809481048114812481348144815481648174818481948204821482248234824482548264827482848294830483148324833483448354836483748384839484048414842484348444845484648474848484948504851485248534854485548564857485848594860486148624863486448654866486748684869487048714872487348744875487648774878487948804881488248834884488548864887488848894890489148924893489448954896489748984899490049014902490349044905490649074908490949104911491249134914491549164917491849194920492149224923492449254926492749284929493049314932493349344935493649374938493949404941494249434944494549464947494849494950495149524953495449554956495749584959496049614962496349644965496649674968496949704971497249734974497549764977497849794980498149824983498449854986498749884989499049914992499349944995499649974998499950005001500250035004500550065007500850095010501150125013501450155016501750185019502050215022502350245025502650275028502950305031503250335034503550365037503850395040504150425043504450455046504750485049505050515052505350545055505650575058505950605061506250635064506550665067506850695070507150725073507450755076507750785079508050815082508350845085508650875088508950905091509250935094509550965097509850995100510151025103510451055106510751085109511051115112511351145115511651175118511951205121512251235124512551265127512851295130513151325133513451355136513751385139514051415142514351445145514651475148514951505151515251535154515551565157515851595160516151625163516451655166516751685169517051715172517351745175517651775178517951805181518251835184518551865187518851895190519151925193519451955196519751985199520052015202520352045205520652075208520952105211521252135214521552165217521852195220522152225223522452255226522752285229523052315232523352345235523652375238523952405241524252435244524552465247524852495250525152525253525452555256525752585259526052615262526352645265526652675268526952705271527252735274527552765277527852795280528152825283528452855286528752885289529052915292529352945295529652975298529953005301530253035304530553065307530853095310531153125313531453155316531753185319532053215322532353245325532653275328532953305331533253335334533553365337533853395340534153425343534453455346534753485349535053515352535353545355535653575358535953605361536253635364536553665367536853695370537153725373537453755376537753785379538053815382538353845385538653875388538953905391539253935394539553965397539853995400540154025403540454055406540754085409541054115412541354145415541654175418541954205421542254235424542554265427542854295430543154325433543454355436543754385439544054415442544354445445544654475448544954505451545254535454545554565457545854595460546154625463546454655466546754685469547054715472547354745475547654775478547954805481548254835484548554865487548854895490549154925493549454955496549754985499550055015502550355045505550655075508550955105511551255135514551555165517551855195520552155225523552455255526552755285529553055315532553355345535553655375538553955405541554255435544554555465547554855495550555155525553555455555556555755585559556055615562556355645565556655675568556955705571557255735574557555765577557855795580558155825583558455855586558755885589559055915592559355945595559655975598559956005601560256035604560556065607560856095610561156125613561456155616561756185619562056215622562356245625562656275628562956305631563256335634563556365637563856395640564156425643564456455646564756485649565056515652565356545655565656575658565956605661566256635664566556665667566856695670567156725673567456755676567756785679568056815682568356845685568656875688568956905691569256935694569556965697569856995700570157025703570457055706570757085709571057115712571357145715571657175718571957205721572257235724572557265727572857295730573157325733573457355736573757385739574057415742574357445745574657475748574957505751575257535754575557565757575857595760576157625763576457655766576757685769577057715772577357745775577657775778577957805781578257835784578557865787578857895790579157925793579457955796579757985799580058015802580358045805580658075808580958105811581258135814581558165817581858195820582158225823582458255826582758285829583058315832583358345835583658375838583958405841584258435844584558465847584858495850585158525853585458555856585758585859586058615862586358645865586658675868586958705871587258735874587558765877587858795880588158825883588458855886588758885889589058915892589358945895589658975898589959005901590259035904590559065907590859095910591159125913591459155916591759185919592059215922592359245925592659275928592959305931593259335934593559365937593859395940594159425943594459455946594759485949595059515952595359545955595659575958595959605961596259635964596559665967596859695970597159725973597459755976597759785979598059815982598359845985598659875988598959905991599259935994599559965997599859996000600160026003600460056006600760086009601060116012601360146015601660176018601960206021602260236024602560266027602860296030603160326033603460356036603760386039604060416042604360446045604660476048604960506051605260536054605560566057605860596060606160626063606460656066606760686069607060716072607360746075607660776078607960806081608260836084608560866087608860896090609160926093609460956096609760986099610061016102610361046105610661076108610961106111611261136114611561166117611861196120612161226123612461256126612761286129613061316132613361346135613661376138613961406141614261436144614561466147614861496150615161526153615461556156615761586159616061616162616361646165616661676168616961706171617261736174617561766177617861796180618161826183618461856186618761886189619061916192619361946195619661976198619962006201620262036204620562066207620862096210621162126213621462156216621762186219622062216222622362246225622662276228622962306231623262336234623562366237623862396240624162426243624462456246624762486249625062516252625362546255625662576258625962606261626262636264626562666267626862696270627162726273627462756276627762786279628062816282628362846285628662876288628962906291629262936294629562966297629862996300630163026303630463056306630763086309631063116312631363146315631663176318631963206321632263236324632563266327632863296330633163326333633463356336633763386339634063416342634363446345634663476348634963506351635263536354635563566357635863596360636163626363636463656366636763686369637063716372637363746375637663776378637963806381638263836384638563866387638863896390639163926393639463956396639763986399640064016402640364046405640664076408640964106411641264136414641564166417641864196420642164226423642464256426642764286429643064316432643364346435643664376438643964406441644264436444644564466447644864496450645164526453645464556456645764586459646064616462646364646465646664676468646964706471647264736474647564766477647864796480648164826483648464856486648764886489649064916492649364946495649664976498649965006501650265036504650565066507650865096510651165126513651465156516651765186519652065216522652365246525652665276528652965306531653265336534653565366537653865396540654165426543654465456546654765486549655065516552655365546555655665576558655965606561656265636564656565666567656865696570657165726573657465756576657765786579658065816582658365846585658665876588658965906591659265936594659565966597659865996600660166026603660466056606660766086609661066116612661366146615661666176618661966206621662266236624662566266627662866296630663166326633663466356636663766386639664066416642664366446645664666476648664966506651665266536654665566566657665866596660666166626663666466656666666766686669667066716672667366746675667666776678667966806681668266836684668566866687668866896690669166926693669466956696669766986699670067016702670367046705670667076708670967106711671267136714671567166717671867196720672167226723672467256726672767286729673067316732673367346735673667376738673967406741674267436744674567466747674867496750675167526753675467556756675767586759676067616762676367646765676667676768676967706771677267736774677567766777677867796780678167826783678467856786678767886789679067916792679367946795679667976798679968006801680268036804680568066807680868096810681168126813681468156816681768186819682068216822682368246825682668276828682968306831683268336834683568366837683868396840684168426843684468456846684768486849685068516852685368546855685668576858685968606861686268636864686568666867686868696870687168726873687468756876687768786879688068816882688368846885688668876888688968906891689268936894689568966897689868996900690169026903690469056906690769086909691069116912691369146915691669176918691969206921692269236924692569266927692869296930693169326933693469356936693769386939694069416942694369446945694669476948694969506951695269536954695569566957695869596960696169626963696469656966696769686969697069716972697369746975697669776978697969806981698269836984698569866987698869896990699169926993699469956996699769986999700070017002700370047005700670077008700970107011701270137014701570167017701870197020702170227023702470257026702770287029703070317032703370347035703670377038703970407041704270437044704570467047704870497050705170527053705470557056705770587059706070617062706370647065706670677068706970707071707270737074707570767077707870797080708170827083708470857086708770887089709070917092709370947095709670977098709971007101710271037104710571067107710871097110711171127113711471157116711771187119712071217122712371247125712671277128712971307131713271337134713571367137713871397140714171427143714471457146714771487149715071517152715371547155715671577158715971607161716271637164716571667167716871697170717171727173717471757176717771787179718071817182718371847185718671877188718971907191719271937194719571967197719871997200720172027203720472057206720772087209721072117212721372147215721672177218721972207221722272237224722572267227722872297230723172327233723472357236723772387239724072417242724372447245724672477248724972507251725272537254725572567257725872597260726172627263726472657266726772687269727072717272727372747275727672777278727972807281728272837284728572867287728872897290729172927293729472957296729772987299730073017302730373047305730673077308730973107311731273137314731573167317731873197320732173227323732473257326732773287329733073317332733373347335733673377338733973407341734273437344734573467347734873497350735173527353735473557356735773587359736073617362736373647365736673677368736973707371737273737374737573767377737873797380738173827383738473857386738773887389739073917392739373947395739673977398739974007401740274037404740574067407740874097410741174127413741474157416741774187419742074217422742374247425742674277428742974307431743274337434743574367437743874397440744174427443744474457446744774487449745074517452745374547455745674577458745974607461746274637464746574667467746874697470747174727473747474757476747774787479748074817482748374847485748674877488748974907491749274937494749574967497749874997500750175027503750475057506750775087509751075117512751375147515751675177518751975207521752275237524752575267527752875297530753175327533753475357536753775387539754075417542754375447545754675477548754975507551755275537554755575567557755875597560756175627563756475657566756775687569757075717572757375747575757675777578757975807581758275837584758575867587758875897590759175927593759475957596759775987599760076017602760376047605760676077608760976107611761276137614761576167617761876197620762176227623762476257626762776287629763076317632763376347635763676377638763976407641764276437644764576467647764876497650765176527653765476557656765776587659766076617662766376647665766676677668766976707671767276737674767576767677767876797680768176827683768476857686768776887689769076917692769376947695769676977698769977007701770277037704770577067707770877097710771177127713771477157716771777187719772077217722772377247725772677277728772977307731773277337734773577367737773877397740774177427743774477457746774777487749775077517752775377547755775677577758775977607761776277637764776577667767776877697770777177727773777477757776777777787779778077817782778377847785778677877788778977907791779277937794779577967797779877997800780178027803780478057806780778087809781078117812781378147815781678177818781978207821782278237824782578267827782878297830783178327833783478357836783778387839784078417842784378447845784678477848784978507851785278537854785578567857785878597860786178627863786478657866786778687869787078717872787378747875787678777878787978807881788278837884788578867887788878897890789178927893789478957896789778987899790079017902790379047905790679077908790979107911791279137914791579167917791879197920792179227923792479257926792779287929793079317932793379347935793679377938793979407941794279437944794579467947794879497950795179527953795479557956795779587959796079617962796379647965796679677968796979707971797279737974797579767977797879797980798179827983798479857986798779887989799079917992799379947995799679977998799980008001800280038004800580068007800880098010801180128013801480158016801780188019802080218022802380248025802680278028802980308031803280338034803580368037803880398040804180428043804480458046804780488049805080518052805380548055805680578058805980608061806280638064806580668067806880698070807180728073807480758076807780788079808080818082808380848085808680878088808980908091809280938094809580968097809880998100810181028103810481058106810781088109811081118112811381148115811681178118811981208121812281238124812581268127812881298130813181328133813481358136813781388139814081418142814381448145814681478148814981508151815281538154815581568157815881598160816181628163816481658166816781688169817081718172817381748175817681778178817981808181818281838184818581868187818881898190819181928193819481958196819781988199820082018202820382048205820682078208820982108211821282138214821582168217821882198220822182228223822482258226822782288229823082318232823382348235823682378238823982408241824282438244824582468247824882498250825182528253825482558256825782588259826082618262826382648265826682678268826982708271827282738274827582768277827882798280828182828283828482858286828782888289829082918292829382948295829682978298829983008301830283038304830583068307830883098310831183128313831483158316831783188319832083218322832383248325832683278328832983308331833283338334833583368337833883398340834183428343834483458346834783488349835083518352835383548355835683578358835983608361836283638364836583668367836883698370837183728373837483758376837783788379838083818382838383848385838683878388838983908391839283938394839583968397839883998400840184028403840484058406840784088409841084118412841384148415841684178418841984208421842284238424842584268427842884298430843184328433843484358436843784388439844084418442844384448445844684478448844984508451845284538454845584568457845884598460846184628463846484658466846784688469847084718472847384748475847684778478847984808481848284838484848584868487848884898490849184928493849484958496849784988499850085018502850385048505850685078508850985108511851285138514851585168517851885198520852185228523852485258526852785288529853085318532853385348535853685378538853985408541854285438544854585468547854885498550855185528553855485558556855785588559856085618562856385648565856685678568856985708571857285738574857585768577857885798580858185828583858485858586858785888589859085918592859385948595859685978598859986008601860286038604860586068607860886098610861186128613861486158616861786188619862086218622862386248625862686278628862986308631863286338634863586368637863886398640864186428643864486458646864786488649865086518652865386548655865686578658865986608661866286638664866586668667866886698670867186728673867486758676867786788679868086818682868386848685868686878688868986908691869286938694869586968697869886998700870187028703870487058706870787088709871087118712871387148715871687178718871987208721872287238724872587268727872887298730873187328733873487358736873787388739874087418742874387448745874687478748874987508751875287538754875587568757875887598760876187628763876487658766876787688769877087718772877387748775877687778778877987808781878287838784878587868787878887898790879187928793879487958796879787988799880088018802880388048805880688078808880988108811881288138814881588168817881888198820882188228823882488258826882788288829883088318832883388348835883688378838883988408841884288438844884588468847884888498850885188528853885488558856885788588859886088618862886388648865886688678868886988708871887288738874887588768877887888798880888188828883888488858886888788888889889088918892889388948895889688978898889989008901890289038904890589068907890889098910891189128913891489158916891789188919892089218922892389248925892689278928892989308931893289338934893589368937893889398940894189428943894489458946894789488949895089518952895389548955895689578958895989608961896289638964896589668967896889698970897189728973897489758976897789788979898089818982898389848985898689878988898989908991899289938994899589968997899889999000900190029003900490059006900790089009901090119012901390149015901690179018901990209021902290239024902590269027902890299030903190329033903490359036903790389039904090419042904390449045904690479048904990509051905290539054905590569057905890599060906190629063906490659066906790689069907090719072907390749075907690779078907990809081908290839084908590869087908890899090909190929093909490959096909790989099910091019102910391049105910691079108910991109111911291139114911591169117911891199120912191229123912491259126912791289129913091319132913391349135913691379138913991409141914291439144914591469147914891499150915191529153915491559156915791589159916091619162916391649165916691679168916991709171917291739174917591769177917891799180918191829183918491859186918791889189919091919192919391949195919691979198919992009201920292039204920592069207920892099210921192129213921492159216921792189219922092219222922392249225922692279228922992309231923292339234923592369237923892399240924192429243924492459246924792489249925092519252925392549255925692579258925992609261926292639264926592669267926892699270927192729273927492759276927792789279928092819282928392849285928692879288928992909291929292939294929592969297929892999300930193029303930493059306930793089309931093119312931393149315931693179318931993209321932293239324932593269327932893299330933193329333933493359336933793389339934093419342934393449345934693479348934993509351935293539354935593569357935893599360936193629363936493659366936793689369937093719372937393749375937693779378937993809381938293839384938593869387938893899390939193929393939493959396939793989399940094019402940394049405940694079408940994109411941294139414941594169417941894199420942194229423942494259426942794289429943094319432943394349435943694379438943994409441944294439444944594469447944894499450945194529453945494559456945794589459946094619462946394649465946694679468946994709471947294739474947594769477947894799480948194829483948494859486948794889489949094919492949394949495949694979498949995009501950295039504950595069507950895099510951195129513951495159516951795189519952095219522952395249525952695279528952995309531953295339534953595369537953895399540954195429543954495459546954795489549955095519552955395549555955695579558955995609561956295639564956595669567956895699570957195729573957495759576957795789579958095819582958395849585958695879588958995909591959295939594959595969597959895999600960196029603960496059606960796089609961096119612961396149615961696179618961996209621962296239624962596269627962896299630963196329633963496359636963796389639964096419642964396449645964696479648964996509651965296539654965596569657965896599660966196629663966496659666966796689669967096719672967396749675967696779678967996809681968296839684968596869687968896899690969196929693969496959696969796989699970097019702970397049705970697079708970997109711971297139714971597169717971897199720972197229723972497259726972797289729973097319732973397349735973697379738973997409741974297439744974597469747974897499750975197529753975497559756975797589759976097619762976397649765976697679768976997709771977297739774977597769777977897799780978197829783978497859786978797889789979097919792979397949795979697979798979998009801980298039804980598069807980898099810981198129813981498159816981798189819982098219822982398249825982698279828982998309831983298339834983598369837983898399840984198429843984498459846984798489849985098519852985398549855985698579858985998609861986298639864986598669867986898699870987198729873987498759876987798789879988098819882988398849885988698879888988998909891989298939894989598969897989898999900990199029903990499059906990799089909991099119912991399149915991699179918991999209921992299239924992599269927992899299930993199329933993499359936993799389939994099419942994399449945994699479948994999509951995299539954995599569957995899599960996199629963996499659966996799689969997099719972997399749975997699779978997999809981998299839984998599869987998899899990999199929993999499959996999799989999100001000110002100031000410005100061000710008100091001010011100121001310014100151001610017100181001910020100211002210023100241002510026100271002810029100301003110032100331003410035100361003710038100391004010041100421004310044100451004610047100481004910050100511005210053100541005510056100571005810059100601006110062100631006410065100661006710068100691007010071100721007310074100751007610077100781007910080100811008210083100841008510086100871008810089100901009110092100931009410095100961009710098100991010010101101021010310104101051010610107101081010910110101111011210113101141011510116101171011810119101201012110122101231012410125101261012710128101291013010131101321013310134101351013610137101381013910140101411014210143101441014510146101471014810149101501015110152101531015410155101561015710158101591016010161101621016310164101651016610167101681016910170101711017210173101741017510176101771017810179101801018110182101831018410185101861018710188101891019010191101921019310194101951019610197101981019910200102011020210203102041020510206102071020810209102101021110212102131021410215102161021710218102191022010221102221022310224102251022610227102281022910230102311023210233102341023510236102371023810239102401024110242102431024410245102461024710248102491025010251102521025310254102551025610257102581025910260102611026210263102641026510266102671026810269102701027110272102731027410275102761027710278102791028010281102821028310284102851028610287102881028910290102911029210293102941029510296102971029810299103001030110302103031030410305103061030710308103091031010311103121031310314103151031610317103181031910320103211032210323103241032510326103271032810329103301033110332103331033410335103361033710338103391034010341103421034310344103451034610347103481034910350103511035210353103541035510356103571035810359103601036110362103631036410365103661036710368103691037010371103721037310374103751037610377103781037910380103811038210383103841038510386103871038810389103901039110392103931039410395103961039710398103991040010401104021040310404104051040610407104081040910410104111041210413104141041510416104171041810419104201042110422104231042410425104261042710428104291043010431104321043310434104351043610437104381043910440104411044210443104441044510446104471044810449104501045110452104531045410455104561045710458104591046010461104621046310464104651046610467104681046910470104711047210473104741047510476104771047810479104801048110482104831048410485104861048710488104891049010491104921049310494104951049610497104981049910500105011050210503105041050510506105071050810509105101051110512105131051410515105161051710518105191052010521105221052310524105251052610527105281052910530105311053210533105341053510536105371053810539105401054110542105431054410545105461054710548105491055010551105521055310554105551055610557105581055910560105611056210563105641056510566105671056810569105701057110572105731057410575105761057710578105791058010581105821058310584105851058610587105881058910590105911059210593105941059510596105971059810599106001060110602106031060410605106061060710608106091061010611106121061310614106151061610617106181061910620106211062210623106241062510626106271062810629106301063110632106331063410635106361063710638106391064010641106421064310644106451064610647106481064910650106511065210653106541065510656106571065810659106601066110662106631066410665106661066710668106691067010671106721067310674106751067610677106781067910680106811068210683106841068510686106871068810689106901069110692106931069410695106961069710698106991070010701107021070310704107051070610707107081070910710107111071210713107141071510716107171071810719107201072110722107231072410725107261072710728107291073010731107321073310734107351073610737107381073910740107411074210743107441074510746107471074810749107501075110752107531075410755107561075710758107591076010761107621076310764107651076610767107681076910770107711077210773107741077510776107771077810779107801078110782107831078410785107861078710788107891079010791107921079310794107951079610797107981079910800108011080210803108041080510806108071080810809108101081110812108131081410815108161081710818108191082010821108221082310824108251082610827108281082910830108311083210833108341083510836108371083810839108401084110842108431084410845108461084710848108491085010851108521085310854108551085610857108581085910860108611086210863108641086510866108671086810869108701087110872108731087410875108761087710878108791088010881108821088310884108851088610887108881088910890108911089210893108941089510896108971089810899109001090110902109031090410905109061090710908109091091010911109121091310914109151091610917109181091910920109211092210923109241092510926109271092810929109301093110932109331093410935109361093710938109391094010941109421094310944109451094610947109481094910950109511095210953109541095510956109571095810959109601096110962109631096410965109661096710968109691097010971109721097310974109751097610977109781097910980109811098210983109841098510986109871098810989109901099110992109931099410995109961099710998109991100011001110021100311004110051100611007110081100911010110111101211013110141101511016110171101811019110201102111022110231102411025110261102711028110291103011031110321103311034110351103611037110381103911040110411104211043110441104511046110471104811049110501105111052110531105411055110561105711058110591106011061110621106311064110651106611067110681106911070110711107211073110741107511076110771107811079110801108111082110831108411085110861108711088110891109011091110921109311094110951109611097110981109911100111011110211103111041110511106111071110811109111101111111112111131111411115111161111711118111191112011121111221112311124111251112611127111281112911130111311113211133111341113511136111371113811139111401114111142111431114411145111461114711148111491115011151111521115311154111551115611157111581115911160111611116211163111641116511166111671116811169111701117111172111731117411175111761117711178111791118011181111821118311184111851118611187111881118911190111911119211193111941119511196111971119811199112001120111202112031120411205112061120711208112091121011211112121121311214112151121611217112181121911220112211122211223112241122511226112271122811229112301123111232112331123411235112361123711238112391124011241112421124311244112451124611247112481124911250112511125211253112541125511256112571125811259112601126111262112631126411265112661126711268112691127011271112721127311274112751127611277112781127911280112811128211283112841128511286112871128811289112901129111292112931129411295112961129711298112991130011301113021130311304113051130611307113081130911310113111131211313113141131511316113171131811319113201132111322113231132411325113261132711328113291133011331113321133311334113351133611337113381133911340113411134211343113441134511346113471134811349113501135111352113531135411355113561135711358113591136011361113621136311364113651136611367113681136911370113711137211373113741137511376113771137811379113801138111382113831138411385113861138711388113891139011391113921139311394113951139611397113981139911400114011140211403114041140511406114071140811409114101141111412114131141411415114161141711418114191142011421114221142311424114251142611427114281142911430114311143211433114341143511436114371143811439114401144111442114431144411445114461144711448114491145011451114521145311454114551145611457114581145911460114611146211463114641146511466114671146811469114701147111472114731147411475114761147711478114791148011481114821148311484114851148611487114881148911490114911149211493114941149511496114971149811499115001150111502115031150411505115061150711508115091151011511115121151311514115151151611517115181151911520115211152211523115241152511526115271152811529115301153111532115331153411535115361153711538115391154011541115421154311544115451154611547115481154911550115511155211553115541155511556115571155811559115601156111562115631156411565115661156711568115691157011571115721157311574115751157611577115781157911580115811158211583115841158511586115871158811589115901159111592115931159411595115961159711598115991160011601116021160311604116051160611607116081160911610116111161211613116141161511616116171161811619116201162111622116231162411625116261162711628116291163011631116321163311634116351163611637116381163911640116411164211643116441164511646116471164811649116501165111652116531165411655116561165711658116591166011661116621166311664116651166611667116681166911670116711167211673116741167511676116771167811679116801168111682116831168411685116861168711688116891169011691116921169311694116951169611697116981169911700117011170211703117041170511706117071170811709117101171111712117131171411715117161171711718117191172011721117221172311724117251172611727117281172911730117311173211733117341173511736117371173811739117401174111742117431174411745117461174711748117491175011751117521175311754117551175611757117581175911760117611176211763117641176511766117671176811769117701177111772117731177411775117761177711778117791178011781117821178311784117851178611787117881178911790117911179211793117941179511796117971179811799118001180111802118031180411805118061180711808118091181011811118121181311814118151181611817118181181911820118211182211823118241182511826118271182811829118301183111832118331183411835118361183711838118391184011841118421184311844118451184611847118481184911850118511185211853118541185511856118571185811859118601186111862118631186411865118661186711868118691187011871118721187311874118751187611877118781187911880118811188211883118841188511886118871188811889118901189111892118931189411895118961189711898118991190011901119021190311904119051190611907119081190911910119111191211913119141191511916119171191811919119201192111922119231192411925119261192711928119291193011931119321193311934119351193611937119381193911940119411194211943119441194511946119471194811949119501195111952119531195411955119561195711958119591196011961119621196311964119651196611967119681196911970119711197211973119741197511976119771197811979119801198111982119831198411985119861198711988119891199011991119921199311994119951199611997119981199912000120011200212003120041200512006120071200812009120101201112012120131201412015120161201712018120191202012021120221202312024120251202612027120281202912030120311203212033120341203512036120371203812039120401204112042120431204412045120461204712048120491205012051120521205312054120551205612057120581205912060120611206212063120641206512066120671206812069120701207112072120731207412075120761207712078120791208012081120821208312084120851208612087120881208912090120911209212093120941209512096120971209812099121001210112102121031210412105121061210712108121091211012111121121211312114121151211612117121181211912120121211212212123121241212512126121271212812129121301213112132121331213412135121361213712138121391214012141121421214312144121451214612147121481214912150121511215212153121541215512156121571215812159121601216112162121631216412165121661216712168121691217012171121721217312174121751217612177121781217912180121811218212183121841218512186121871218812189121901219112192121931219412195121961219712198121991220012201122021220312204122051220612207122081220912210122111221212213122141221512216122171221812219122201222112222122231222412225122261222712228122291223012231122321223312234122351223612237122381223912240122411224212243122441224512246122471224812249122501225112252122531225412255122561225712258122591226012261122621226312264122651226612267122681226912270122711227212273122741227512276122771227812279122801228112282122831228412285122861228712288122891229012291122921229312294122951229612297122981229912300123011230212303123041230512306123071230812309123101231112312123131231412315123161231712318123191232012321123221232312324123251232612327123281232912330123311233212333123341233512336123371233812339123401234112342123431234412345123461234712348123491235012351123521235312354123551235612357123581235912360123611236212363123641236512366123671236812369123701237112372123731237412375123761237712378123791238012381123821238312384123851238612387123881238912390123911239212393123941239512396123971239812399124001240112402124031240412405124061240712408124091241012411124121241312414124151241612417124181241912420124211242212423124241242512426124271242812429124301243112432124331243412435124361243712438124391244012441124421244312444124451244612447124481244912450124511245212453124541245512456124571245812459124601246112462124631246412465124661246712468124691247012471124721247312474124751247612477124781247912480124811248212483124841248512486124871248812489124901249112492124931249412495124961249712498124991250012501125021250312504125051250612507125081250912510125111251212513125141251512516125171251812519125201252112522125231252412525125261252712528125291253012531125321253312534125351253612537125381253912540125411254212543125441254512546125471254812549125501255112552125531255412555125561255712558125591256012561125621256312564125651256612567125681256912570125711257212573125741257512576125771257812579125801258112582125831258412585125861258712588125891259012591125921259312594125951259612597125981259912600126011260212603126041260512606126071260812609126101261112612126131261412615126161261712618126191262012621126221262312624126251262612627126281262912630126311263212633126341263512636126371263812639126401264112642126431264412645126461264712648126491265012651126521265312654126551265612657126581265912660126611266212663126641266512666126671266812669126701267112672126731267412675126761267712678126791268012681126821268312684126851268612687126881268912690126911269212693126941269512696126971269812699127001270112702127031270412705127061270712708127091271012711127121271312714127151271612717127181271912720127211272212723127241272512726127271272812729127301273112732127331273412735127361273712738127391274012741127421274312744127451274612747127481274912750127511275212753127541275512756127571275812759127601276112762127631276412765127661276712768127691277012771127721277312774127751277612777127781277912780127811278212783127841278512786127871278812789127901279112792127931279412795127961279712798127991280012801128021280312804128051280612807128081280912810128111281212813128141281512816128171281812819128201282112822128231282412825128261282712828128291283012831128321283312834128351283612837128381283912840128411284212843128441284512846128471284812849128501285112852128531285412855128561285712858128591286012861128621286312864128651286612867128681286912870128711287212873128741287512876128771287812879128801288112882128831288412885128861288712888128891289012891128921289312894128951289612897128981289912900129011290212903129041290512906129071290812909129101291112912129131291412915129161291712918129191292012921129221292312924129251292612927129281292912930129311293212933129341293512936129371293812939129401294112942129431294412945129461294712948129491295012951129521295312954129551295612957129581295912960129611296212963129641296512966129671296812969129701297112972129731297412975129761297712978129791298012981129821298312984129851298612987129881298912990129911299212993129941299512996129971299812999130001300113002130031300413005130061300713008130091301013011130121301313014130151301613017130181301913020130211302213023130241302513026130271302813029130301303113032130331303413035130361303713038130391304013041130421304313044130451304613047130481304913050130511305213053130541305513056130571305813059130601306113062130631306413065130661306713068130691307013071130721307313074130751307613077130781307913080130811308213083130841308513086130871308813089130901309113092130931309413095130961309713098130991310013101131021310313104131051310613107131081310913110131111311213113131141311513116131171311813119131201312113122131231312413125131261312713128131291313013131131321313313134131351313613137131381313913140131411314213143131441314513146131471314813149131501315113152131531315413155131561315713158131591316013161131621316313164131651316613167131681316913170131711317213173131741317513176131771317813179131801318113182131831318413185131861318713188131891319013191131921319313194131951319613197131981319913200132011320213203132041320513206132071320813209132101321113212132131321413215132161321713218132191322013221132221322313224132251322613227132281322913230132311323213233132341323513236132371323813239132401324113242132431324413245132461324713248132491325013251132521325313254132551325613257132581325913260132611326213263132641326513266132671326813269132701327113272132731327413275132761327713278132791328013281132821328313284132851328613287132881328913290132911329213293132941329513296132971329813299133001330113302133031330413305133061330713308133091331013311133121331313314133151331613317133181331913320133211332213323133241332513326133271332813329133301333113332133331333413335133361333713338133391334013341133421334313344133451334613347133481334913350133511335213353133541335513356133571335813359133601336113362133631336413365133661336713368133691337013371133721337313374133751337613377133781337913380133811338213383133841338513386133871338813389133901339113392133931339413395133961339713398133991340013401134021340313404134051340613407134081340913410134111341213413134141341513416134171341813419134201342113422134231342413425134261342713428134291343013431134321343313434134351343613437134381343913440134411344213443134441344513446134471344813449134501345113452134531345413455134561345713458134591346013461134621346313464134651346613467134681346913470134711347213473134741347513476134771347813479134801348113482134831348413485134861348713488134891349013491134921349313494134951349613497134981349913500135011350213503135041350513506135071350813509135101351113512135131351413515135161351713518135191352013521135221352313524135251352613527135281352913530135311353213533135341353513536135371353813539135401354113542135431354413545135461354713548135491355013551135521355313554135551355613557135581355913560135611356213563135641356513566135671356813569135701357113572135731357413575135761357713578135791358013581135821358313584135851358613587135881358913590135911359213593135941359513596135971359813599136001360113602136031360413605136061360713608136091361013611136121361313614136151361613617136181361913620136211362213623136241362513626136271362813629136301363113632136331363413635136361363713638136391364013641136421364313644136451364613647136481364913650136511365213653136541365513656136571365813659136601366113662136631366413665136661366713668136691367013671136721367313674136751367613677136781367913680136811368213683136841368513686136871368813689136901369113692136931369413695136961369713698136991370013701137021370313704137051370613707137081370913710137111371213713137141371513716137171371813719137201372113722137231372413725137261372713728137291373013731137321373313734137351373613737137381373913740137411374213743137441374513746137471374813749137501375113752137531375413755137561375713758137591376013761137621376313764137651376613767137681376913770137711377213773137741377513776137771377813779137801378113782137831378413785137861378713788137891379013791137921379313794137951379613797137981379913800138011380213803138041380513806138071380813809138101381113812138131381413815138161381713818138191382013821138221382313824138251382613827138281382913830138311383213833138341383513836138371383813839138401384113842138431384413845138461384713848138491385013851138521385313854138551385613857138581385913860138611386213863138641386513866138671386813869138701387113872138731387413875138761387713878138791388013881138821388313884138851388613887138881388913890138911389213893138941389513896138971389813899139001390113902139031390413905139061390713908139091391013911139121391313914139151391613917139181391913920139211392213923139241392513926139271392813929139301393113932139331393413935139361393713938139391394013941139421394313944139451394613947139481394913950139511395213953139541395513956139571395813959139601396113962139631396413965139661396713968139691397013971139721397313974139751397613977139781397913980139811398213983139841398513986139871398813989139901399113992139931399413995139961399713998139991400014001140021400314004140051400614007140081400914010140111401214013140141401514016140171401814019140201402114022140231402414025140261402714028140291403014031140321403314034140351403614037140381403914040140411404214043140441404514046140471404814049140501405114052140531405414055140561405714058140591406014061140621406314064140651406614067140681406914070140711407214073140741407514076140771407814079140801408114082140831408414085140861408714088140891409014091140921409314094140951409614097140981409914100141011410214103141041410514106141071410814109141101411114112141131411414115141161411714118141191412014121141221412314124141251412614127141281412914130141311413214133141341413514136141371413814139141401414114142141431414414145141461414714148141491415014151141521415314154141551415614157141581415914160141611416214163141641416514166141671416814169141701417114172141731417414175141761417714178141791418014181141821418314184141851418614187141881418914190141911419214193141941419514196141971419814199142001420114202142031420414205142061420714208142091421014211142121421314214142151421614217142181421914220142211422214223142241422514226142271422814229142301423114232142331423414235142361423714238142391424014241142421424314244142451424614247142481424914250142511425214253142541425514256142571425814259142601426114262142631426414265142661426714268142691427014271142721427314274142751427614277142781427914280142811428214283142841428514286142871428814289142901429114292142931429414295142961429714298142991430014301143021430314304143051430614307143081430914310143111431214313143141431514316143171431814319143201432114322143231432414325143261432714328143291433014331143321433314334143351433614337143381433914340143411434214343143441434514346143471434814349143501435114352143531435414355143561435714358143591436014361143621436314364143651436614367143681436914370143711437214373143741437514376143771437814379143801438114382143831438414385143861438714388143891439014391143921439314394143951439614397143981439914400144011440214403144041440514406144071440814409144101441114412144131441414415144161441714418144191442014421144221442314424144251442614427144281442914430144311443214433144341443514436144371443814439144401444114442144431444414445144461444714448144491445014451144521445314454144551445614457144581445914460144611446214463144641446514466144671446814469144701447114472144731447414475144761447714478144791448014481144821448314484144851448614487144881448914490144911449214493144941449514496144971449814499145001450114502145031450414505145061450714508145091451014511145121451314514145151451614517145181451914520145211452214523145241452514526145271452814529145301453114532145331453414535145361453714538145391454014541145421454314544145451454614547145481454914550145511455214553145541455514556145571455814559145601456114562145631456414565145661456714568145691457014571145721457314574145751457614577145781457914580145811458214583145841458514586145871458814589145901459114592145931459414595145961459714598145991460014601146021460314604146051460614607146081460914610146111461214613146141461514616146171461814619146201462114622146231462414625146261462714628146291463014631146321463314634146351463614637146381463914640146411464214643146441464514646146471464814649146501465114652146531465414655146561465714658146591466014661146621466314664146651466614667146681466914670146711467214673146741467514676146771467814679146801468114682146831468414685146861468714688146891469014691146921469314694146951469614697146981469914700147011470214703147041470514706147071470814709147101471114712147131471414715147161471714718147191472014721147221472314724147251472614727147281472914730147311473214733147341473514736147371473814739147401474114742147431474414745147461474714748147491475014751147521475314754147551475614757147581475914760147611476214763147641476514766147671476814769147701477114772147731477414775147761477714778147791478014781147821478314784147851478614787147881478914790147911479214793147941479514796147971479814799148001480114802148031480414805148061480714808148091481014811148121481314814148151481614817148181481914820148211482214823148241482514826148271482814829148301483114832148331483414835148361483714838148391484014841148421484314844148451484614847148481484914850148511485214853148541485514856148571485814859148601486114862148631486414865148661486714868148691487014871148721487314874148751487614877148781487914880148811488214883148841488514886148871488814889148901489114892148931489414895148961489714898148991490014901149021490314904149051490614907149081490914910149111491214913149141491514916149171491814919149201492114922149231492414925149261492714928149291493014931149321493314934149351493614937149381493914940149411494214943149441494514946149471494814949149501495114952149531495414955149561495714958149591496014961149621496314964149651496614967149681496914970149711497214973149741497514976149771497814979149801498114982149831498414985149861498714988149891499014991149921499314994149951499614997149981499915000150011500215003150041500515006150071500815009150101501115012150131501415015150161501715018150191502015021150221502315024150251502615027150281502915030150311503215033150341503515036150371503815039150401504115042150431504415045150461504715048150491505015051150521505315054150551505615057150581505915060150611506215063150641506515066150671506815069150701507115072150731507415075150761507715078150791508015081150821508315084150851508615087150881508915090150911509215093150941509515096150971509815099151001510115102151031510415105151061510715108151091511015111151121511315114151151511615117151181511915120151211512215123151241512515126151271512815129151301513115132151331513415135151361513715138151391514015141151421514315144151451514615147151481514915150151511515215153151541515515156151571515815159151601516115162151631516415165151661516715168151691517015171151721517315174151751517615177151781517915180151811518215183151841518515186151871518815189151901519115192151931519415195151961519715198151991520015201152021520315204152051520615207152081520915210152111521215213152141521515216152171521815219152201522115222152231522415225152261522715228152291523015231152321523315234152351523615237152381523915240152411524215243152441524515246152471524815249152501525115252152531525415255152561525715258152591526015261152621526315264152651526615267152681526915270152711527215273152741527515276152771527815279152801528115282152831528415285152861528715288152891529015291152921529315294152951529615297152981529915300153011530215303153041530515306153071530815309153101531115312153131531415315153161531715318153191532015321153221532315324153251532615327153281532915330153311533215333153341533515336153371533815339153401534115342153431534415345153461534715348153491535015351153521535315354153551535615357153581535915360153611536215363153641536515366153671536815369153701537115372153731537415375153761537715378153791538015381153821538315384153851538615387153881538915390153911539215393153941539515396153971539815399154001540115402154031540415405154061540715408154091541015411154121541315414154151541615417154181541915420154211542215423154241542515426154271542815429154301543115432154331543415435154361543715438154391544015441154421544315444154451544615447154481544915450154511545215453154541545515456154571545815459154601546115462154631546415465154661546715468154691547015471154721547315474154751547615477154781547915480154811548215483154841548515486154871548815489154901549115492154931549415495154961549715498154991550015501155021550315504155051550615507155081550915510155111551215513155141551515516155171551815519155201552115522155231552415525155261552715528155291553015531155321553315534155351553615537155381553915540155411554215543155441554515546155471554815549155501555115552155531555415555155561555715558155591556015561155621556315564155651556615567155681556915570155711557215573155741557515576155771557815579155801558115582155831558415585155861558715588155891559015591155921559315594155951559615597155981559915600156011560215603156041560515606156071560815609156101561115612156131561415615156161561715618156191562015621156221562315624156251562615627156281562915630156311563215633156341563515636156371563815639156401564115642156431564415645156461564715648156491565015651156521565315654156551565615657156581565915660156611566215663156641566515666156671566815669156701567115672156731567415675156761567715678156791568015681156821568315684156851568615687156881568915690156911569215693156941569515696156971569815699157001570115702157031570415705157061570715708157091571015711157121571315714157151571615717157181571915720157211572215723157241572515726157271572815729157301573115732157331573415735157361573715738157391574015741157421574315744157451574615747157481574915750157511575215753157541575515756157571575815759157601576115762157631576415765157661576715768157691577015771157721577315774157751577615777157781577915780157811578215783157841578515786157871578815789157901579115792157931579415795157961579715798157991580015801158021580315804158051580615807158081580915810158111581215813158141581515816158171581815819158201582115822158231582415825158261582715828158291583015831158321583315834158351583615837158381583915840158411584215843158441584515846158471584815849158501585115852158531585415855158561585715858158591586015861158621586315864158651586615867158681586915870158711587215873158741587515876158771587815879158801588115882158831588415885158861588715888158891589015891158921589315894158951589615897158981589915900159011590215903159041590515906159071590815909159101591115912159131591415915159161591715918159191592015921159221592315924159251592615927159281592915930159311593215933159341593515936159371593815939159401594115942159431594415945159461594715948159491595015951159521595315954159551595615957159581595915960159611596215963159641596515966159671596815969159701597115972159731597415975159761597715978159791598015981159821598315984159851598615987159881598915990159911599215993159941599515996159971599815999160001600116002160031600416005160061600716008160091601016011160121601316014160151601616017160181601916020160211602216023160241602516026160271602816029160301603116032160331603416035160361603716038160391604016041160421604316044160451604616047160481604916050160511605216053160541605516056160571605816059160601606116062160631606416065160661606716068160691607016071160721607316074160751607616077160781607916080160811608216083160841608516086160871608816089160901609116092160931609416095160961609716098160991610016101161021610316104161051610616107161081610916110161111611216113161141611516116161171611816119161201612116122161231612416125161261612716128161291613016131161321613316134161351613616137161381613916140161411614216143161441614516146161471614816149161501615116152161531615416155161561615716158161591616016161161621616316164161651616616167161681616916170161711617216173161741617516176161771617816179161801618116182161831618416185161861618716188161891619016191161921619316194161951619616197161981619916200162011620216203162041620516206162071620816209162101621116212162131621416215162161621716218162191622016221162221622316224162251622616227162281622916230162311623216233162341623516236162371623816239162401624116242162431624416245162461624716248162491625016251162521625316254162551625616257162581625916260162611626216263162641626516266162671626816269162701627116272162731627416275162761627716278162791628016281162821628316284162851628616287162881628916290162911629216293162941629516296162971629816299163001630116302163031630416305163061630716308163091631016311163121631316314163151631616317163181631916320163211632216323163241632516326163271632816329163301633116332163331633416335163361633716338163391634016341163421634316344163451634616347163481634916350163511635216353163541635516356163571635816359163601636116362163631636416365163661636716368163691637016371163721637316374163751637616377163781637916380163811638216383163841638516386163871638816389163901639116392163931639416395163961639716398163991640016401164021640316404164051640616407164081640916410164111641216413164141641516416164171641816419164201642116422164231642416425164261642716428164291643016431164321643316434164351643616437164381643916440164411644216443164441644516446164471644816449164501645116452164531645416455164561645716458164591646016461164621646316464164651646616467164681646916470164711647216473164741647516476164771647816479164801648116482164831648416485164861648716488164891649016491164921649316494164951649616497164981649916500165011650216503165041650516506165071650816509165101651116512165131651416515165161651716518165191652016521165221652316524165251652616527165281652916530165311653216533165341653516536165371653816539165401654116542165431654416545165461654716548165491655016551165521655316554165551655616557165581655916560165611656216563165641656516566165671656816569165701657116572165731657416575165761657716578165791658016581165821658316584165851658616587165881658916590165911659216593165941659516596165971659816599166001660116602166031660416605166061660716608166091661016611166121661316614166151661616617166181661916620166211662216623166241662516626166271662816629166301663116632166331663416635166361663716638166391664016641166421664316644166451664616647166481664916650166511665216653166541665516656166571665816659166601666116662166631666416665166661666716668166691667016671166721667316674166751667616677166781667916680166811668216683166841668516686166871668816689166901669116692166931669416695166961669716698166991670016701167021670316704167051670616707167081670916710167111671216713167141671516716167171671816719167201672116722167231672416725167261672716728167291673016731167321673316734167351673616737167381673916740167411674216743167441674516746167471674816749167501675116752167531675416755167561675716758167591676016761167621676316764167651676616767167681676916770167711677216773167741677516776167771677816779167801678116782167831678416785167861678716788167891679016791167921679316794167951679616797167981679916800168011680216803168041680516806168071680816809168101681116812168131681416815168161681716818168191682016821168221682316824168251682616827168281682916830168311683216833168341683516836168371683816839168401684116842168431684416845168461684716848168491685016851168521685316854168551685616857168581685916860168611686216863168641686516866168671686816869168701687116872168731687416875168761687716878168791688016881168821688316884168851688616887168881688916890168911689216893168941689516896168971689816899169001690116902169031690416905169061690716908169091691016911169121691316914169151691616917169181691916920169211692216923169241692516926169271692816929169301693116932169331693416935169361693716938169391694016941169421694316944169451694616947169481694916950169511695216953169541695516956169571695816959169601696116962169631696416965169661696716968169691697016971169721697316974169751697616977169781697916980169811698216983169841698516986169871698816989169901699116992169931699416995169961699716998169991700017001170021700317004170051700617007170081700917010170111701217013170141701517016170171701817019170201702117022170231702417025170261702717028170291703017031170321703317034170351703617037170381703917040170411704217043170441704517046170471704817049170501705117052170531705417055170561705717058170591706017061170621706317064170651706617067170681706917070170711707217073170741707517076170771707817079170801708117082170831708417085170861708717088170891709017091170921709317094170951709617097170981709917100171011710217103171041710517106171071710817109171101711117112171131711417115171161711717118171191712017121171221712317124171251712617127171281712917130171311713217133171341713517136171371713817139171401714117142171431714417145171461714717148171491715017151171521715317154171551715617157171581715917160171611716217163171641716517166171671716817169171701717117172171731717417175171761717717178171791718017181171821718317184171851718617187171881718917190171911719217193171941719517196171971719817199172001720117202172031720417205172061720717208172091721017211172121721317214172151721617217172181721917220172211722217223172241722517226172271722817229172301723117232172331723417235172361723717238172391724017241172421724317244172451724617247172481724917250172511725217253172541725517256172571725817259172601726117262172631726417265172661726717268172691727017271172721727317274172751727617277172781727917280172811728217283172841728517286172871728817289172901729117292172931729417295172961729717298172991730017301173021730317304173051730617307173081730917310173111731217313173141731517316173171731817319173201732117322173231732417325173261732717328173291733017331173321733317334173351733617337173381733917340173411734217343173441734517346173471734817349173501735117352173531735417355173561735717358173591736017361173621736317364173651736617367173681736917370173711737217373173741737517376173771737817379173801738117382173831738417385173861738717388173891739017391173921739317394173951739617397173981739917400174011740217403174041740517406174071740817409174101741117412174131741417415174161741717418174191742017421174221742317424174251742617427174281742917430174311743217433174341743517436174371743817439174401744117442174431744417445174461744717448174491745017451174521745317454174551745617457174581745917460174611746217463174641746517466174671746817469174701747117472174731747417475174761747717478174791748017481174821748317484174851748617487174881748917490174911749217493174941749517496174971749817499175001750117502175031750417505175061750717508175091751017511175121751317514175151751617517175181751917520175211752217523175241752517526175271752817529175301753117532175331753417535175361753717538175391754017541175421754317544175451754617547175481754917550175511755217553175541755517556175571755817559175601756117562175631756417565175661756717568175691757017571175721757317574175751757617577175781757917580175811758217583175841758517586175871758817589175901759117592175931759417595175961759717598175991760017601176021760317604176051760617607176081760917610176111761217613176141761517616176171761817619176201762117622176231762417625176261762717628176291763017631176321763317634176351763617637176381763917640176411764217643176441764517646176471764817649176501765117652176531765417655176561765717658176591766017661176621766317664176651766617667176681766917670176711767217673176741767517676176771767817679176801768117682176831768417685176861768717688176891769017691176921769317694176951769617697176981769917700177011770217703177041770517706177071770817709177101771117712177131771417715177161771717718177191772017721177221772317724177251772617727177281772917730177311773217733177341773517736177371773817739177401774117742177431774417745177461774717748177491775017751177521775317754177551775617757177581775917760177611776217763177641776517766177671776817769177701777117772177731777417775177761777717778177791778017781177821778317784177851778617787177881778917790177911779217793177941779517796177971779817799178001780117802178031780417805178061780717808178091781017811178121781317814178151781617817178181781917820178211782217823178241782517826178271782817829178301783117832178331783417835178361783717838178391784017841178421784317844178451784617847178481784917850178511785217853178541785517856178571785817859178601786117862178631786417865178661786717868178691787017871178721787317874178751787617877178781787917880178811788217883178841788517886178871788817889178901789117892178931789417895178961789717898178991790017901179021790317904179051790617907179081790917910179111791217913179141791517916179171791817919179201792117922179231792417925179261792717928179291793017931179321793317934179351793617937179381793917940179411794217943179441794517946179471794817949179501795117952179531795417955179561795717958179591796017961179621796317964179651796617967179681796917970179711797217973179741797517976179771797817979179801798117982179831798417985179861798717988179891799017991179921799317994179951799617997179981799918000180011800218003180041800518006180071800818009180101801118012180131801418015180161801718018180191802018021180221802318024180251802618027180281802918030180311803218033180341803518036180371803818039180401804118042180431804418045180461804718048180491805018051180521805318054180551805618057180581805918060180611806218063180641806518066180671806818069180701807118072180731807418075180761807718078180791808018081180821808318084180851808618087180881808918090180911809218093180941809518096180971809818099181001810118102181031810418105181061810718108181091811018111181121811318114181151811618117181181811918120181211812218123181241812518126181271812818129181301813118132181331813418135181361813718138181391814018141181421814318144181451814618147181481814918150181511815218153181541815518156181571815818159181601816118162181631816418165181661816718168181691817018171181721817318174181751817618177181781817918180181811818218183181841818518186181871818818189181901819118192181931819418195181961819718198181991820018201182021820318204182051820618207182081820918210182111821218213182141821518216182171821818219182201822118222182231822418225182261822718228182291823018231182321823318234182351823618237182381823918240182411824218243182441824518246182471824818249182501825118252182531825418255182561825718258182591826018261182621826318264182651826618267182681826918270182711827218273182741827518276182771827818279182801828118282182831828418285182861828718288182891829018291182921829318294182951829618297182981829918300183011830218303183041830518306183071830818309183101831118312183131831418315183161831718318183191832018321183221832318324183251832618327183281832918330183311833218333183341833518336183371833818339183401834118342183431834418345183461834718348183491835018351183521835318354183551835618357183581835918360183611836218363183641836518366183671836818369183701837118372183731837418375183761837718378183791838018381183821838318384183851838618387183881838918390183911839218393183941839518396183971839818399184001840118402184031840418405184061840718408184091841018411184121841318414184151841618417184181841918420184211842218423184241842518426184271842818429184301843118432184331843418435184361843718438184391844018441184421844318444184451844618447184481844918450184511845218453184541845518456184571845818459184601846118462184631846418465184661846718468184691847018471184721847318474184751847618477184781847918480184811848218483184841848518486184871848818489184901849118492184931849418495184961849718498184991850018501185021850318504185051850618507185081850918510185111851218513185141851518516185171851818519185201852118522185231852418525185261852718528185291853018531185321853318534185351853618537185381853918540185411854218543185441854518546185471854818549185501855118552185531855418555185561855718558185591856018561185621856318564185651856618567185681856918570185711857218573185741857518576185771857818579185801858118582185831858418585185861858718588185891859018591185921859318594185951859618597185981859918600186011860218603186041860518606186071860818609186101861118612186131861418615186161861718618186191862018621186221862318624186251862618627186281862918630186311863218633186341863518636186371863818639186401864118642186431864418645186461864718648186491865018651186521865318654186551865618657186581865918660186611866218663186641866518666186671866818669186701867118672186731867418675186761867718678186791868018681186821868318684186851868618687186881868918690186911869218693186941869518696186971869818699187001870118702187031870418705187061870718708187091871018711187121871318714187151871618717187181871918720187211872218723187241872518726187271872818729187301873118732187331873418735187361873718738187391874018741187421874318744187451874618747187481874918750187511875218753187541875518756187571875818759187601876118762187631876418765187661876718768187691877018771187721877318774187751877618777187781877918780187811878218783187841878518786187871878818789187901879118792187931879418795187961879718798187991880018801188021880318804188051880618807188081880918810188111881218813188141881518816188171881818819188201882118822188231882418825188261882718828188291883018831188321883318834188351883618837188381883918840188411884218843188441884518846188471884818849188501885118852188531885418855188561885718858188591886018861188621886318864188651886618867188681886918870188711887218873188741887518876188771887818879188801888118882188831888418885188861888718888188891889018891188921889318894188951889618897188981889918900189011890218903189041890518906189071890818909189101891118912189131891418915189161891718918189191892018921189221892318924189251892618927189281892918930189311893218933189341893518936189371893818939189401894118942189431894418945189461894718948189491895018951189521895318954189551895618957189581895918960189611896218963189641896518966189671896818969189701897118972189731897418975189761897718978189791898018981189821898318984189851898618987189881898918990189911899218993189941899518996189971899818999190001900119002190031900419005190061900719008190091901019011190121901319014190151901619017190181901919020190211902219023190241902519026190271902819029190301903119032190331903419035190361903719038190391904019041190421904319044190451904619047190481904919050190511905219053190541905519056190571905819059190601906119062190631906419065190661906719068190691907019071190721907319074190751907619077190781907919080190811908219083190841908519086190871908819089190901909119092190931909419095190961909719098190991910019101191021910319104191051910619107191081910919110191111911219113191141911519116191171911819119191201912119122191231912419125191261912719128191291913019131191321913319134191351913619137191381913919140191411914219143191441914519146191471914819149191501915119152191531915419155191561915719158191591916019161191621916319164191651916619167191681916919170191711917219173191741917519176191771917819179191801918119182191831918419185191861918719188191891919019191191921919319194191951919619197191981919919200192011920219203192041920519206192071920819209192101921119212192131921419215192161921719218192191922019221192221922319224192251922619227192281922919230192311923219233192341923519236192371923819239192401924119242192431924419245192461924719248192491925019251192521925319254192551925619257192581925919260192611926219263192641926519266192671926819269192701927119272192731927419275192761927719278192791928019281192821928319284192851928619287192881928919290192911929219293192941929519296192971929819299193001930119302193031930419305193061930719308193091931019311193121931319314193151931619317193181931919320193211932219323193241932519326193271932819329193301933119332193331933419335193361933719338193391934019341193421934319344193451934619347193481934919350193511935219353193541935519356193571935819359193601936119362193631936419365193661936719368193691937019371193721937319374193751937619377193781937919380193811938219383193841938519386193871938819389193901939119392193931939419395193961939719398193991940019401194021940319404194051940619407194081940919410194111941219413194141941519416194171941819419194201942119422194231942419425194261942719428194291943019431194321943319434194351943619437194381943919440194411944219443194441944519446194471944819449194501945119452194531945419455194561945719458194591946019461194621946319464194651946619467194681946919470194711947219473194741947519476194771947819479194801948119482194831948419485194861948719488194891949019491194921949319494194951949619497194981949919500195011950219503195041950519506195071950819509195101951119512195131951419515195161951719518195191952019521195221952319524195251952619527195281952919530195311953219533195341953519536195371953819539195401954119542195431954419545195461954719548195491955019551195521955319554195551955619557195581955919560195611956219563195641956519566195671956819569195701957119572195731957419575195761957719578195791958019581195821958319584195851958619587195881958919590195911959219593195941959519596195971959819599196001960119602196031960419605196061960719608196091961019611196121961319614196151961619617196181961919620196211962219623196241962519626196271962819629196301963119632196331963419635196361963719638196391964019641196421964319644196451964619647196481964919650196511965219653196541965519656196571965819659196601966119662196631966419665196661966719668196691967019671196721967319674196751967619677196781967919680196811968219683196841968519686196871968819689196901969119692196931969419695196961969719698196991970019701197021970319704197051970619707197081970919710197111971219713197141971519716197171971819719197201972119722197231972419725197261972719728197291973019731197321973319734197351973619737197381973919740197411974219743197441974519746197471974819749197501975119752197531975419755197561975719758197591976019761197621976319764197651976619767197681976919770197711977219773197741977519776197771977819779197801978119782197831978419785197861978719788197891979019791197921979319794197951979619797197981979919800198011980219803198041980519806198071980819809198101981119812198131981419815198161981719818198191982019821198221982319824198251982619827198281982919830198311983219833198341983519836198371983819839198401984119842198431984419845198461984719848198491985019851198521985319854198551985619857198581985919860198611986219863198641986519866198671986819869198701987119872198731987419875198761987719878198791988019881198821988319884198851988619887198881988919890198911989219893198941989519896198971989819899199001990119902199031990419905199061990719908199091991019911199121991319914199151991619917199181991919920199211992219923199241992519926199271992819929199301993119932199331993419935199361993719938199391994019941199421994319944199451994619947199481994919950199511995219953199541995519956199571995819959199601996119962199631996419965199661996719968199691997019971199721997319974199751997619977199781997919980199811998219983199841998519986199871998819989199901999119992199931999419995199961999719998199992000020001200022000320004200052000620007200082000920010200112001220013200142001520016200172001820019200202002120022200232002420025200262002720028200292003020031200322003320034200352003620037200382003920040200412004220043200442004520046200472004820049200502005120052200532005420055200562005720058200592006020061200622006320064200652006620067200682006920070200712007220073200742007520076200772007820079200802008120082200832008420085200862008720088200892009020091200922009320094200952009620097200982009920100201012010220103201042010520106201072010820109201102011120112201132011420115201162011720118201192012020121201222012320124201252012620127201282012920130201312013220133201342013520136201372013820139201402014120142201432014420145201462014720148201492015020151201522015320154201552015620157201582015920160201612016220163201642016520166201672016820169201702017120172201732017420175201762017720178201792018020181201822018320184201852018620187201882018920190201912019220193201942019520196201972019820199202002020120202202032020420205202062020720208202092021020211202122021320214202152021620217202182021920220202212022220223202242022520226202272022820229202302023120232202332023420235202362023720238202392024020241202422024320244202452024620247202482024920250202512025220253202542025520256202572025820259202602026120262202632026420265202662026720268202692027020271202722027320274202752027620277202782027920280202812028220283202842028520286202872028820289202902029120292202932029420295202962029720298202992030020301203022030320304203052030620307203082030920310203112031220313203142031520316203172031820319203202032120322203232032420325203262032720328203292033020331203322033320334203352033620337203382033920340203412034220343203442034520346203472034820349203502035120352203532035420355203562035720358203592036020361203622036320364203652036620367203682036920370203712037220373203742037520376203772037820379203802038120382203832038420385203862038720388203892039020391203922039320394203952039620397203982039920400204012040220403204042040520406204072040820409204102041120412204132041420415204162041720418204192042020421204222042320424204252042620427204282042920430204312043220433204342043520436204372043820439204402044120442204432044420445204462044720448204492045020451204522045320454204552045620457204582045920460204612046220463204642046520466204672046820469204702047120472204732047420475204762047720478204792048020481204822048320484204852048620487204882048920490204912049220493204942049520496204972049820499205002050120502205032050420505205062050720508205092051020511205122051320514205152051620517205182051920520205212052220523205242052520526205272052820529205302053120532205332053420535205362053720538205392054020541205422054320544205452054620547205482054920550205512055220553205542055520556205572055820559205602056120562205632056420565205662056720568205692057020571205722057320574205752057620577205782057920580205812058220583205842058520586205872058820589205902059120592205932059420595205962059720598205992060020601206022060320604206052060620607206082060920610206112061220613206142061520616206172061820619206202062120622206232062420625206262062720628206292063020631206322063320634206352063620637206382063920640206412064220643206442064520646206472064820649206502065120652206532065420655206562065720658206592066020661206622066320664206652066620667206682066920670206712067220673206742067520676206772067820679206802068120682206832068420685206862068720688206892069020691206922069320694206952069620697206982069920700207012070220703207042070520706207072070820709207102071120712207132071420715207162071720718207192072020721207222072320724207252072620727207282072920730207312073220733207342073520736207372073820739207402074120742207432074420745207462074720748207492075020751207522075320754207552075620757207582075920760207612076220763207642076520766207672076820769207702077120772207732077420775207762077720778207792078020781207822078320784207852078620787207882078920790207912079220793207942079520796207972079820799208002080120802208032080420805208062080720808208092081020811208122081320814208152081620817208182081920820208212082220823208242082520826208272082820829208302083120832208332083420835208362083720838208392084020841208422084320844208452084620847208482084920850208512085220853208542085520856208572085820859208602086120862208632086420865208662086720868208692087020871208722087320874208752087620877208782087920880208812088220883208842088520886208872088820889208902089120892208932089420895208962089720898208992090020901209022090320904209052090620907209082090920910209112091220913209142091520916209172091820919209202092120922209232092420925209262092720928209292093020931209322093320934209352093620937209382093920940209412094220943209442094520946209472094820949209502095120952209532095420955209562095720958209592096020961209622096320964209652096620967209682096920970209712097220973209742097520976209772097820979209802098120982209832098420985209862098720988209892099020991209922099320994209952099620997209982099921000210012100221003210042100521006210072100821009210102101121012210132101421015210162101721018210192102021021210222102321024210252102621027210282102921030210312103221033210342103521036210372103821039210402104121042210432104421045210462104721048210492105021051210522105321054210552105621057210582105921060210612106221063210642106521066210672106821069210702107121072210732107421075210762107721078210792108021081210822108321084210852108621087210882108921090210912109221093210942109521096210972109821099211002110121102211032110421105211062110721108211092111021111211122111321114211152111621117211182111921120211212112221123211242112521126211272112821129211302113121132211332113421135211362113721138211392114021141211422114321144211452114621147211482114921150211512115221153211542115521156211572115821159211602116121162211632116421165211662116721168211692117021171211722117321174211752117621177211782117921180211812118221183211842118521186211872118821189211902119121192211932119421195211962119721198211992120021201212022120321204212052120621207212082120921210212112121221213212142121521216212172121821219212202122121222212232122421225212262122721228212292123021231212322123321234212352123621237212382123921240212412124221243212442124521246212472124821249212502125121252212532125421255212562125721258212592126021261212622126321264212652126621267212682126921270212712127221273212742127521276212772127821279212802128121282212832128421285212862128721288212892129021291212922129321294212952129621297212982129921300213012130221303213042130521306213072130821309213102131121312213132131421315213162131721318213192132021321213222132321324213252132621327213282132921330213312133221333213342133521336213372133821339213402134121342213432134421345213462134721348213492135021351213522135321354213552135621357213582135921360213612136221363213642136521366213672136821369213702137121372213732137421375213762137721378213792138021381213822138321384213852138621387213882138921390213912139221393213942139521396213972139821399214002140121402214032140421405214062140721408214092141021411214122141321414214152141621417214182141921420214212142221423214242142521426214272142821429214302143121432214332143421435214362143721438214392144021441214422144321444214452144621447214482144921450214512145221453214542145521456214572145821459214602146121462214632146421465214662146721468214692147021471214722147321474214752147621477214782147921480214812148221483214842148521486214872148821489214902149121492214932149421495214962149721498214992150021501215022150321504215052150621507215082150921510215112151221513215142151521516215172151821519215202152121522215232152421525215262152721528215292153021531215322153321534215352153621537215382153921540215412154221543215442154521546215472154821549215502155121552215532155421555215562155721558215592156021561215622156321564215652156621567215682156921570215712157221573215742157521576215772157821579215802158121582215832158421585215862158721588215892159021591215922159321594215952159621597215982159921600216012160221603216042160521606216072160821609216102161121612216132161421615216162161721618216192162021621216222162321624216252162621627216282162921630216312163221633216342163521636216372163821639216402164121642216432164421645216462164721648216492165021651216522165321654216552165621657216582165921660216612166221663216642166521666216672166821669216702167121672216732167421675216762167721678216792168021681216822168321684216852168621687216882168921690216912169221693216942169521696216972169821699217002170121702217032170421705217062170721708217092171021711217122171321714217152171621717217182171921720217212172221723217242172521726217272172821729217302173121732217332173421735217362173721738217392174021741217422174321744217452174621747217482174921750217512175221753217542175521756217572175821759217602176121762217632176421765217662176721768217692177021771217722177321774217752177621777217782177921780217812178221783217842178521786217872178821789217902179121792217932179421795217962179721798217992180021801218022180321804218052180621807218082180921810218112181221813218142181521816218172181821819218202182121822218232182421825218262182721828218292183021831218322183321834218352183621837218382183921840218412184221843218442184521846218472184821849218502185121852218532185421855218562185721858218592186021861218622186321864218652186621867218682186921870218712187221873218742187521876218772187821879218802188121882218832188421885218862188721888218892189021891218922189321894218952189621897218982189921900219012190221903219042190521906219072190821909219102191121912219132191421915219162191721918219192192021921219222192321924219252192621927219282192921930219312193221933219342193521936219372193821939219402194121942219432194421945219462194721948219492195021951219522195321954219552195621957219582195921960219612196221963219642196521966219672196821969219702197121972219732197421975219762197721978219792198021981219822198321984219852198621987219882198921990219912199221993219942199521996219972199821999220002200122002220032200422005220062200722008220092201022011220122201322014220152201622017220182201922020220212202222023220242202522026220272202822029220302203122032220332203422035220362203722038220392204022041220422204322044220452204622047220482204922050220512205222053220542205522056220572205822059220602206122062220632206422065220662206722068220692207022071220722207322074220752207622077220782207922080220812208222083220842208522086220872208822089220902209122092220932209422095220962209722098220992210022101221022210322104221052210622107221082210922110221112211222113221142211522116221172211822119221202212122122221232212422125221262212722128221292213022131221322213322134221352213622137221382213922140221412214222143221442214522146221472214822149221502215122152221532215422155221562215722158221592216022161221622216322164221652216622167221682216922170221712217222173221742217522176221772217822179221802218122182221832218422185221862218722188221892219022191221922219322194221952219622197221982219922200222012220222203222042220522206222072220822209222102221122212222132221422215222162221722218222192222022221222222222322224222252222622227222282222922230222312223222233222342223522236222372223822239222402224122242222432224422245222462224722248222492225022251222522225322254222552225622257222582225922260222612226222263222642226522266222672226822269222702227122272222732227422275222762227722278222792228022281222822228322284222852228622287222882228922290222912229222293222942229522296222972229822299223002230122302223032230422305223062230722308223092231022311223122231322314223152231622317223182231922320223212232222323223242232522326223272232822329223302233122332223332233422335223362233722338223392234022341223422234322344223452234622347223482234922350223512235222353223542235522356223572235822359223602236122362223632236422365223662236722368223692237022371223722237322374223752237622377223782237922380223812238222383223842238522386223872238822389223902239122392223932239422395223962239722398223992240022401224022240322404224052240622407224082240922410224112241222413224142241522416224172241822419224202242122422224232242422425224262242722428224292243022431224322243322434224352243622437224382243922440224412244222443224442244522446224472244822449224502245122452224532245422455224562245722458224592246022461224622246322464224652246622467224682246922470224712247222473224742247522476224772247822479224802248122482224832248422485224862248722488224892249022491224922249322494224952249622497224982249922500225012250222503225042250522506225072250822509225102251122512225132251422515225162251722518225192252022521225222252322524225252252622527225282252922530225312253222533225342253522536225372253822539225402254122542225432254422545225462254722548225492255022551225522255322554225552255622557225582255922560225612256222563225642256522566225672256822569225702257122572225732257422575225762257722578225792258022581225822258322584225852258622587225882258922590225912259222593225942259522596225972259822599226002260122602226032260422605226062260722608226092261022611226122261322614226152261622617226182261922620226212262222623226242262522626226272262822629226302263122632226332263422635226362263722638226392264022641226422264322644226452264622647226482264922650226512265222653226542265522656226572265822659226602266122662226632266422665226662266722668226692267022671226722267322674226752267622677226782267922680226812268222683226842268522686226872268822689226902269122692226932269422695226962269722698226992270022701227022270322704227052270622707227082270922710227112271222713227142271522716227172271822719227202272122722227232272422725227262272722728227292273022731227322273322734227352273622737227382273922740227412274222743227442274522746227472274822749227502275122752227532275422755227562275722758227592276022761227622276322764227652276622767227682276922770227712277222773227742277522776227772277822779227802278122782227832278422785227862278722788227892279022791227922279322794227952279622797227982279922800228012280222803228042280522806228072280822809228102281122812228132281422815228162281722818228192282022821228222282322824228252282622827228282282922830228312283222833228342283522836228372283822839228402284122842228432284422845228462284722848228492285022851228522285322854228552285622857228582285922860228612286222863228642286522866228672286822869228702287122872228732287422875228762287722878228792288022881228822288322884228852288622887228882288922890228912289222893228942289522896228972289822899229002290122902229032290422905229062290722908229092291022911229122291322914229152291622917229182291922920229212292222923229242292522926229272292822929229302293122932229332293422935229362293722938229392294022941229422294322944229452294622947229482294922950229512295222953229542295522956229572295822959229602296122962229632296422965229662296722968229692297022971229722297322974229752297622977229782297922980229812298222983229842298522986229872298822989229902299122992229932299422995229962299722998229992300023001230022300323004230052300623007230082300923010230112301223013230142301523016230172301823019230202302123022230232302423025230262302723028230292303023031230322303323034230352303623037230382303923040230412304223043230442304523046230472304823049230502305123052230532305423055230562305723058230592306023061230622306323064230652306623067230682306923070230712307223073230742307523076230772307823079 |
- /**
- * @license
- * Video.js 7.20.2 <http://videojs.com/>
- * Copyright Brightcove, Inc. <https://www.brightcove.com/>
- * Available under Apache License Version 2.0
- * <https://github.com/videojs/video.js/blob/main/LICENSE>
- *
- * Includes vtt.js <https://github.com/mozilla/vtt.js>
- * Available under Apache License Version 2.0
- * <https://github.com/mozilla/vtt.js/blob/main/LICENSE>
- */
- !(function (e, t) {
- 'object' == typeof exports && 'undefined' != typeof module
- ? (module.exports = t())
- : 'function' == typeof define && define.amd
- ? define(t)
- : ((e = 'undefined' != typeof globalThis ? globalThis : e || self).videojs = t())
- })(this, function () {
- 'use strict'
- for (
- var e,
- u = '7.20.2',
- i = {},
- a = function (e, t) {
- return (i[e] = i[e] || []), t && (i[e] = i[e].concat(t)), i[e]
- },
- n = function (e, t) {
- t = a(e).indexOf(t)
- return !(t <= -1) && ((i[e] = i[e].slice()), i[e].splice(t, 1), !0)
- },
- l = { prefixed: !0 },
- t = [
- ['requestFullscreen', 'exitFullscreen', 'fullscreenElement', 'fullscreenEnabled', 'fullscreenchange', 'fullscreenerror', 'fullscreen'],
- ['webkitRequestFullscreen', 'webkitExitFullscreen', 'webkitFullscreenElement', 'webkitFullscreenEnabled', 'webkitfullscreenchange', 'webkitfullscreenerror', '-webkit-full-screen'],
- ['mozRequestFullScreen', 'mozCancelFullScreen', 'mozFullScreenElement', 'mozFullScreenEnabled', 'mozfullscreenchange', 'mozfullscreenerror', '-moz-full-screen'],
- ['msRequestFullscreen', 'msExitFullscreen', 'msFullscreenElement', 'msFullscreenEnabled', 'MSFullscreenChange', 'MSFullscreenError', '-ms-fullscreen'],
- ],
- r = t[0],
- s = 0;
- s < t.length;
- s++
- )
- if (t[s][1] in document) {
- e = t[s]
- break
- }
- if (e) {
- for (var o = 0; o < e.length; o++) l[r[o]] = e[o]
- l.prefixed = e[0] !== r[0]
- }
- var c = [],
- d = function (a, s) {
- return function (e, t, i) {
- var n,
- r = s.levels[t],
- t = new RegExp('^(' + r + ')$')
- 'log' !== e && i.unshift(e.toUpperCase() + ':'),
- i.unshift(a + ':'),
- c && (c.push([].concat(i)), (n = c.length - 1e3), c.splice(0, 0 < n ? n : 0)),
- !window.console ||
- ((n = !(n = window.console[e]) && 'debug' === e ? window.console.info || window.console.log : n) && r && t.test(e) && n[Array.isArray(i) ? 'apply' : 'call'](window.console, i))
- }
- }
- var h = (function t(i) {
- function n() {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- a('log', r, t)
- }
- var r = 'info',
- a = d(i, n)
- return (
- (n.createLogger = function (e) {
- return t(i + ': ' + e)
- }),
- (n.levels = { all: 'debug|log|warn|error', off: '', debug: 'debug|log|warn|error', info: 'log|warn|error', warn: 'warn|error', error: 'error', DEFAULT: r }),
- (n.level = function (e) {
- if ('string' == typeof e) {
- if (!n.levels.hasOwnProperty(e)) throw new Error('"' + e + '" in not a valid log level')
- r = e
- }
- return r
- }),
- ((n.history = function () {
- return c ? [].concat(c) : []
- }).filter = function (t) {
- return (c || []).filter(function (e) {
- return new RegExp('.*' + t + '.*').test(e[0])
- })
- }),
- (n.history.clear = function () {
- c && (c.length = 0)
- }),
- (n.history.disable = function () {
- null !== c && ((c.length = 0), (c = null))
- }),
- (n.history.enable = function () {
- null === c && (c = [])
- }),
- (n.error = function () {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- return a('error', r, t)
- }),
- (n.warn = function () {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- return a('warn', r, t)
- }),
- (n.debug = function () {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- return a('debug', r, t)
- }),
- n
- )
- })('VIDEOJS'),
- p = h.createLogger,
- f = 'undefined' != typeof globalThis ? globalThis : 'undefined' != typeof window ? window : 'undefined' != typeof global ? global : 'undefined' != typeof self ? self : {}
- function m(e, t) {
- return e((t = { exports: {} }), t.exports), t.exports
- }
- var g = m(function (e) {
- function t() {
- return (
- (e.exports = t =
- Object.assign ||
- function (e) {
- for (var t = 1; t < arguments.length; t++) {
- var i,
- n = arguments[t]
- for (i in n) Object.prototype.hasOwnProperty.call(n, i) && (e[i] = n[i])
- }
- return e
- }),
- t.apply(this, arguments)
- )
- }
- e.exports = t
- }),
- y = Object.prototype.toString,
- v = function (e) {
- return T(e) ? Object.keys(e) : []
- }
- function _(t, i) {
- v(t).forEach(function (e) {
- return i(t[e], e)
- })
- }
- function b(i) {
- for (var e = arguments.length, t = new Array(1 < e ? e - 1 : 0), n = 1; n < e; n++) t[n - 1] = arguments[n]
- return Object.assign
- ? g.apply(void 0, [i].concat(t))
- : (t.forEach(function (e) {
- e &&
- _(e, function (e, t) {
- i[t] = e
- })
- }),
- i)
- }
- function T(e) {
- return !!e && 'object' == typeof e
- }
- function S(e) {
- return T(e) && '[object Object]' === y.call(e) && e.constructor === Object
- }
- function w(e, t) {
- if (!e || !t) return ''
- if ('function' != typeof window.getComputedStyle) return ''
- var i
- try {
- i = window.getComputedStyle(e)
- } catch (e) {
- return ''
- }
- return i ? i.getPropertyValue(t) || i[t] : ''
- }
- var E = (window.navigator && window.navigator.userAgent) || '',
- k = /AppleWebKit\/([\d.]+)/i.exec(E),
- C = k ? parseFloat(k.pop()) : null,
- I = /iPod/i.test(E),
- x = (jt = E.match(/OS (\d+)_/i)) && jt[1] ? jt[1] : null,
- A = /Android/i.test(E),
- P = (function () {
- var e = E.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i)
- if (!e) return null
- var t = e[1] && parseFloat(e[1]),
- i = e[2] && parseFloat(e[2])
- return t && i ? parseFloat(e[1] + '.' + e[2]) : t || null
- })(),
- L = A && P < 5 && C < 537,
- D = /Firefox/i.test(E),
- O = /Edg/i.test(E),
- M = !O && (/Chrome/i.test(E) || /CriOS/i.test(E)),
- R = (zt = E.match(/(Chrome|CriOS)\/(\d+)/)) && zt[2] ? parseFloat(zt[2]) : null,
- N = (Xt = !(Xt = (Xt = /MSIE\s(\d+)\.\d/.exec(E)) && parseFloat(Xt[1])) && /Trident\/7.0/i.test(E) && /rv:11.0/.test(E) ? 11 : Xt),
- U = /Safari/i.test(E) && !M && !A && !O,
- B = /Windows/i.test(E),
- F = Boolean(X() && ('ontouchstart' in window || window.navigator.maxTouchPoints || (window.DocumentTouch && window.document instanceof window.DocumentTouch))),
- j = /iPad/i.test(E) || (U && F && !/iPhone/i.test(E)),
- H = /iPhone/i.test(E) && !j,
- q = H || j || I,
- V = (U || q) && !M,
- W = Object.freeze({
- __proto__: null,
- IS_IPOD: I,
- IOS_VERSION: x,
- IS_ANDROID: A,
- ANDROID_VERSION: P,
- IS_NATIVE_ANDROID: L,
- IS_FIREFOX: D,
- IS_EDGE: O,
- IS_CHROME: M,
- CHROME_VERSION: R,
- IE_VERSION: N,
- IS_SAFARI: U,
- IS_WINDOWS: B,
- TOUCH_ENABLED: F,
- IS_IPAD: j,
- IS_IPHONE: H,
- IS_IOS: q,
- IS_ANY_SAFARI: V,
- })
- function G(e) {
- return 'string' == typeof e && Boolean(e.trim())
- }
- function z(e) {
- if (0 <= e.indexOf(' ')) throw new Error('class has illegal whitespace characters')
- }
- function X() {
- return document === window.document
- }
- function K(e) {
- return T(e) && 1 === e.nodeType
- }
- function Y() {
- try {
- return window.parent !== window.self
- } catch (e) {
- return !0
- }
- }
- function Q(i) {
- return function (e, t) {
- if (!G(e)) return document[i](null)
- t = K((t = G(t) ? document.querySelector(t) : t)) ? t : document
- return t[i] && t[i](e)
- }
- }
- function $(e, i, t, n) {
- void 0 === e && (e = 'div'), void 0 === i && (i = {}), void 0 === t && (t = {})
- var r = document.createElement(e)
- return (
- Object.getOwnPropertyNames(i).forEach(function (e) {
- var t = i[e]
- ;-1 !== e.indexOf('aria-') || 'role' === e || 'type' === e
- ? (h.warn(
- 'Setting attributes in the second argument of createEl()\nhas been deprecated. Use the third argument instead.\ncreateEl(type, properties, attributes). Attempting to set ' +
- e +
- ' to ' +
- t +
- '.'
- ),
- r.setAttribute(e, t))
- : 'textContent' === e
- ? J(r, t)
- : (r[e] === t && 'tabIndex' !== e) || (r[e] = t)
- }),
- Object.getOwnPropertyNames(t).forEach(function (e) {
- r.setAttribute(e, t[e])
- }),
- n && ye(r, n),
- r
- )
- }
- function J(e, t) {
- return 'undefined' == typeof e.textContent ? (e.innerText = t) : (e.textContent = t), e
- }
- function Z(e, t) {
- t.firstChild ? t.insertBefore(e, t.firstChild) : t.appendChild(e)
- }
- function ee(e, t) {
- return z(t), e.classList ? e.classList.contains(t) : new RegExp('(^|\\s)' + t + '($|\\s)').test(e.className)
- }
- function te(e, t) {
- return e.classList ? e.classList.add(t) : ee(e, t) || (e.className = (e.className + ' ' + t).trim()), e
- }
- function ie(e, t) {
- return e
- ? (e.classList
- ? e.classList.remove(t)
- : (z(t),
- (e.className = e.className
- .split(/\s+/)
- .filter(function (e) {
- return e !== t
- })
- .join(' '))),
- e)
- : (h.warn("removeClass was called with an element that doesn't exist"), null)
- }
- function ne(e, t, i) {
- var n = ee(e, t)
- if ((i = 'boolean' != typeof (i = 'function' == typeof i ? i(e, t) : i) ? !n : i) !== n) return (i ? te : ie)(e, t), e
- }
- function re(i, n) {
- Object.getOwnPropertyNames(n).forEach(function (e) {
- var t = n[e]
- null === t || 'undefined' == typeof t || !1 === t ? i.removeAttribute(e) : i.setAttribute(e, !0 === t ? '' : t)
- })
- }
- function ae(e) {
- var t = {},
- i = ',autoplay,controls,playsinline,loop,muted,default,defaultMuted,'
- if (e && e.attributes && 0 < e.attributes.length)
- for (var n = e.attributes, r = n.length - 1; 0 <= r; r--) {
- var a = n[r].name,
- s = n[r].value
- ;('boolean' != typeof e[a] && -1 === i.indexOf(',' + a + ',')) || (s = null !== s), (t[a] = s)
- }
- return t
- }
- function se(e, t) {
- return e.getAttribute(t)
- }
- function oe(e, t, i) {
- e.setAttribute(t, i)
- }
- function ue(e, t) {
- e.removeAttribute(t)
- }
- function le() {
- document.body.focus(),
- (document.onselectstart = function () {
- return !1
- })
- }
- function ce() {
- document.onselectstart = function () {
- return !0
- }
- }
- function de(e) {
- if (e && e.getBoundingClientRect && e.parentNode) {
- var t = e.getBoundingClientRect(),
- i = {}
- return (
- ['bottom', 'height', 'left', 'right', 'top', 'width'].forEach(function (e) {
- void 0 !== t[e] && (i[e] = t[e])
- }),
- i.height || (i.height = parseFloat(w(e, 'height'))),
- i.width || (i.width = parseFloat(w(e, 'width'))),
- i
- )
- }
- }
- function he(e) {
- if (!e || (e && !e.offsetParent)) return { left: 0, top: 0, width: 0, height: 0 }
- for (var t = e.offsetWidth, i = e.offsetHeight, n = 0, r = 0; e.offsetParent && e !== document[l.fullscreenElement]; ) (n += e.offsetLeft), (r += e.offsetTop), (e = e.offsetParent)
- return { left: n, top: r, width: t, height: i }
- }
- function pe(e, t) {
- var i = { x: 0, y: 0 }
- if (q)
- for (var n = e; n && 'html' !== n.nodeName.toLowerCase(); ) {
- var r,
- a = w(n, 'transform')
- ;/^matrix/.test(a)
- ? ((r = a.slice(7, -1).split(/,\s/).map(Number)), (i.x += r[4]), (i.y += r[5]))
- : /^matrix3d/.test(a) && ((a = a.slice(9, -1).split(/,\s/).map(Number)), (i.x += a[12]), (i.y += a[13])),
- (n = n.parentNode)
- }
- var s = {},
- o = he(t.target),
- u = he(e),
- l = u.width,
- c = u.height,
- e = t.offsetY - (u.top - o.top),
- o = t.offsetX - (u.left - o.left)
- return (
- t.changedTouches && ((o = t.changedTouches[0].pageX - u.left), (e = t.changedTouches[0].pageY + u.top), q && ((o -= i.x), (e -= i.y))),
- (s.y = 1 - Math.max(0, Math.min(1, e / c))),
- (s.x = Math.max(0, Math.min(1, o / l))),
- s
- )
- }
- function fe(e) {
- return T(e) && 3 === e.nodeType
- }
- function me(e) {
- for (; e.firstChild; ) e.removeChild(e.firstChild)
- return e
- }
- function ge(e) {
- return (
- 'function' == typeof e && (e = e()),
- (Array.isArray(e) ? e : [e])
- .map(function (e) {
- return K((e = 'function' == typeof e ? e() : e)) || fe(e) ? e : 'string' == typeof e && /\S/.test(e) ? document.createTextNode(e) : void 0
- })
- .filter(function (e) {
- return e
- })
- )
- }
- function ye(t, e) {
- return (
- ge(e).forEach(function (e) {
- return t.appendChild(e)
- }),
- t
- )
- }
- function ve(e, t) {
- return ye(me(e), t)
- }
- function _e(e) {
- return (
- (void 0 === e.button && void 0 === e.buttons) ||
- (0 === e.button && void 0 === e.buttons) ||
- ('mouseup' === e.type && 0 === e.button && 0 === e.buttons) ||
- (0 === e.button && 1 === e.buttons)
- )
- }
- var be,
- Te = Q('querySelector'),
- Se = Q('querySelectorAll'),
- we = Object.freeze({
- __proto__: null,
- isReal: X,
- isEl: K,
- isInFrame: Y,
- createEl: $,
- textContent: J,
- prependTo: Z,
- hasClass: ee,
- addClass: te,
- removeClass: ie,
- toggleClass: ne,
- setAttributes: re,
- getAttributes: ae,
- getAttribute: se,
- setAttribute: oe,
- removeAttribute: ue,
- blockTextSelection: le,
- unblockTextSelection: ce,
- getBoundingClientRect: de,
- findPosition: he,
- getPointerPosition: pe,
- isTextNode: fe,
- emptyEl: me,
- normalizeContent: ge,
- appendContent: ye,
- insertContent: ve,
- isSingleLeftClick: _e,
- $: Te,
- $$: Se,
- }),
- Ee = !1,
- ke = function () {
- if (!1 !== be.options.autoSetup) {
- var e = Array.prototype.slice.call(document.getElementsByTagName('video')),
- t = Array.prototype.slice.call(document.getElementsByTagName('audio')),
- i = Array.prototype.slice.call(document.getElementsByTagName('video-js')),
- n = e.concat(t, i)
- if (n && 0 < n.length)
- for (var r = 0, a = n.length; r < a; r++) {
- var s = n[r]
- if (!s || !s.getAttribute) {
- Ce(1)
- break
- }
- void 0 === s.player && null !== s.getAttribute('data-setup') && be(s)
- }
- else Ee || Ce(1)
- }
- }
- function Ce(e, t) {
- X() && (t && (be = t), window.setTimeout(ke, e))
- }
- function Ie() {
- ;(Ee = !0), window.removeEventListener('load', Ie)
- }
- X() && ('complete' === document.readyState ? Ie() : window.addEventListener('load', Ie))
- function xe(e) {
- var t = document.createElement('style')
- return (t.className = e), t
- }
- function Ae(e, t) {
- e.styleSheet ? (e.styleSheet.cssText = t) : (e.textContent = t)
- }
- var Pe = 3
- window.WeakMap ||
- (ui = (function () {
- function e() {
- ;(this.vdata = 'vdata' + Math.floor((window.performance && window.performance.now()) || Date.now())), (this.data = {})
- }
- var t = e.prototype
- return (
- (t.set = function (e, t) {
- var i = e[this.vdata] || Pe++
- return e[this.vdata] || (e[this.vdata] = i), (this.data[i] = t), this
- }),
- (t.get = function (e) {
- var t = e[this.vdata]
- if (t) return this.data[t]
- h('We have no data for this element', e)
- }),
- (t.has = function (e) {
- return e[this.vdata] in this.data
- }),
- (t.delete = function (e) {
- var t = e[this.vdata]
- t && (delete this.data[t], delete e[this.vdata])
- }),
- e
- )
- })())
- var Le,
- De = new (window.WeakMap ? WeakMap : ui)()
- function Oe(e, t) {
- var i
- De.has(e) &&
- (0 === (i = De.get(e)).handlers[t].length &&
- (delete i.handlers[t], e.removeEventListener ? e.removeEventListener(t, i.dispatcher, !1) : e.detachEvent && e.detachEvent('on' + t, i.dispatcher)),
- Object.getOwnPropertyNames(i.handlers).length <= 0 && (delete i.handlers, delete i.dispatcher, delete i.disabled),
- 0 === Object.getOwnPropertyNames(i).length && De.delete(e))
- }
- function Me(t, i, e, n) {
- e.forEach(function (e) {
- t(i, e, n)
- })
- }
- function Re(e) {
- if (e.fixed_) return e
- function t() {
- return !0
- }
- function i() {
- return !1
- }
- if (!e || !e.isPropagationStopped || !e.isImmediatePropagationStopped) {
- var n,
- r,
- a,
- s = e || window.event
- for (n in ((e = {}), s))
- 'layerX' !== n &&
- 'layerY' !== n &&
- 'keyLocation' !== n &&
- 'webkitMovementX' !== n &&
- 'webkitMovementY' !== n &&
- 'path' !== n &&
- (('returnValue' === n && s.preventDefault) || (e[n] = s[n]))
- e.target || (e.target = e.srcElement || document),
- e.relatedTarget || (e.relatedTarget = e.fromElement === e.target ? e.toElement : e.fromElement),
- (e.preventDefault = function () {
- s.preventDefault && s.preventDefault(), (e.returnValue = !1), (s.returnValue = !1), (e.defaultPrevented = !0)
- }),
- (e.defaultPrevented = !1),
- (e.stopPropagation = function () {
- s.stopPropagation && s.stopPropagation(), (e.cancelBubble = !0), (s.cancelBubble = !0), (e.isPropagationStopped = t)
- }),
- (e.isPropagationStopped = i),
- (e.stopImmediatePropagation = function () {
- s.stopImmediatePropagation && s.stopImmediatePropagation(), (e.isImmediatePropagationStopped = t), e.stopPropagation()
- }),
- (e.isImmediatePropagationStopped = i),
- null !== e.clientX &&
- void 0 !== e.clientX &&
- ((r = document.documentElement),
- (a = document.body),
- (e.pageX = e.clientX + ((r && r.scrollLeft) || (a && a.scrollLeft) || 0) - ((r && r.clientLeft) || (a && a.clientLeft) || 0)),
- (e.pageY = e.clientY + ((r && r.scrollTop) || (a && a.scrollTop) || 0) - ((r && r.clientTop) || (a && a.clientTop) || 0))),
- (e.which = e.charCode || e.keyCode),
- null !== e.button && void 0 !== e.button && (e.button = 1 & e.button ? 0 : 4 & e.button ? 1 : 2 & e.button ? 2 : 0)
- }
- return (e.fixed_ = !0), e
- }
- var Ne = function () {
- if ('boolean' != typeof Le) {
- Le = !1
- try {
- var e = Object.defineProperty({}, 'passive', {
- get: function () {
- Le = !0
- },
- })
- window.addEventListener('test', null, e), window.removeEventListener('test', null, e)
- } catch (e) {}
- }
- return Le
- },
- Ue = ['touchstart', 'touchmove']
- function Be(s, e, t) {
- if (Array.isArray(e)) return Me(Be, s, e, t)
- De.has(s) || De.set(s, {})
- var o = De.get(s)
- o.handlers || (o.handlers = {}),
- o.handlers[e] || (o.handlers[e] = []),
- t.guid || (t.guid = Pe++),
- o.handlers[e].push(t),
- o.dispatcher ||
- ((o.disabled = !1),
- (o.dispatcher = function (e, t) {
- if (!o.disabled) {
- e = Re(e)
- var i = o.handlers[e.type]
- if (i)
- for (var n = i.slice(0), r = 0, a = n.length; r < a && !e.isImmediatePropagationStopped(); r++)
- try {
- n[r].call(s, e, t)
- } catch (e) {
- h.error(e)
- }
- }
- })),
- 1 === o.handlers[e].length &&
- (s.addEventListener ? ((t = !1), Ne() && -1 < Ue.indexOf(e) && (t = { passive: !0 }), s.addEventListener(e, o.dispatcher, t)) : s.attachEvent && s.attachEvent('on' + e, o.dispatcher))
- }
- function Fe(e, t, i) {
- if (De.has(e)) {
- var n = De.get(e)
- if (n.handlers) {
- if (Array.isArray(t)) return Me(Fe, e, t, i)
- var r = function (e, t) {
- ;(n.handlers[t] = []), Oe(e, t)
- }
- if (void 0 !== t) {
- var a = n.handlers[t]
- if (a)
- if (i) {
- if (i.guid) for (var s = 0; s < a.length; s++) a[s].guid === i.guid && a.splice(s--, 1)
- Oe(e, t)
- } else r(e, t)
- } else for (var o in n.handlers) Object.prototype.hasOwnProperty.call(n.handlers || {}, o) && r(e, o)
- }
- }
- }
- function je(e, t, i) {
- var n = De.has(e) ? De.get(e) : {},
- r = e.parentNode || e.ownerDocument
- return (
- 'string' == typeof t ? (t = { type: t, target: e }) : t.target || (t.target = e),
- (t = Re(t)),
- n.dispatcher && n.dispatcher.call(e, t, i),
- r && !t.isPropagationStopped() && !0 === t.bubbles
- ? je.call(null, r, t, i)
- : !r &&
- !t.defaultPrevented &&
- t.target &&
- t.target[t.type] &&
- (De.has(t.target) || De.set(t.target, {}),
- (r = De.get(t.target)),
- t.target[t.type] && ((r.disabled = !0), 'function' == typeof t.target[t.type] && t.target[t.type](), (r.disabled = !1))),
- !t.defaultPrevented
- )
- }
- function He(e, t, i) {
- if (Array.isArray(t)) return Me(He, e, t, i)
- function n() {
- Fe(e, t, n), i.apply(this, arguments)
- }
- ;(n.guid = i.guid = i.guid || Pe++), Be(e, t, n)
- }
- function qe(e, t, i) {
- function n() {
- Fe(e, t, n), i.apply(this, arguments)
- }
- ;(n.guid = i.guid = i.guid || Pe++), Be(e, t, n)
- }
- function Ve(e, t, i) {
- return t.guid || (t.guid = Pe++), ((e = t.bind(e)).guid = i ? i + '_' + t.guid : t.guid), e
- }
- function We(t, i) {
- var n = window.performance.now()
- return function () {
- var e = window.performance.now()
- i <= e - n && (t.apply(void 0, arguments), (n = e))
- }
- }
- function Ge(n, r, a, s) {
- var o
- function e() {
- var e = this,
- t = arguments,
- i = function () {
- ;(i = o = null), a || n.apply(e, t)
- }
- !o && a && n.apply(e, t), s.clearTimeout(o), (o = s.setTimeout(i, r))
- }
- return (
- void 0 === s && (s = window),
- (e.cancel = function () {
- s.clearTimeout(o), (o = null)
- }),
- e
- )
- }
- function ze() {}
- var Xe,
- Ke = Object.freeze({ __proto__: null, fixEvent: Re, on: Be, off: Fe, trigger: je, one: He, any: qe })
- ;(ze.prototype.allowedEvents_ = {}),
- (ze.prototype.addEventListener = ze.prototype.on =
- function (e, t) {
- var i = this.addEventListener
- ;(this.addEventListener = function () {}), Be(this, e, t), (this.addEventListener = i)
- }),
- (ze.prototype.removeEventListener = ze.prototype.off =
- function (e, t) {
- Fe(this, e, t)
- }),
- (ze.prototype.one = function (e, t) {
- var i = this.addEventListener
- ;(this.addEventListener = function () {}), He(this, e, t), (this.addEventListener = i)
- }),
- (ze.prototype.any = function (e, t) {
- var i = this.addEventListener
- ;(this.addEventListener = function () {}), qe(this, e, t), (this.addEventListener = i)
- }),
- (ze.prototype.dispatchEvent = ze.prototype.trigger =
- function (e) {
- var t = e.type || e
- ;(e = Re((e = 'string' == typeof e ? { type: t } : e))), this.allowedEvents_[t] && this['on' + t] && this['on' + t](e), je(this, e)
- }),
- (ze.prototype.queueTrigger = function (e) {
- var t = this
- Xe = Xe || new Map()
- var i = e.type || e,
- n = Xe.get(this)
- n || ((n = new Map()), Xe.set(this, n))
- var r = n.get(i)
- n.delete(i), window.clearTimeout(r)
- r = window.setTimeout(function () {
- 0 === n.size && ((n = null), Xe.delete(t)), t.trigger(e)
- }, 0)
- n.set(i, r)
- })
- function Ye(e) {
- return 'function' == typeof e.name ? e.name() : 'string' == typeof e.name ? e.name : e.name_ || (e.constructor && e.constructor.name ? e.constructor.name : typeof e)
- }
- function Qe(e) {
- return ('string' == typeof e && /\S/.test(e)) || (Array.isArray(e) && !!e.length)
- }
- function $e(e, t, i) {
- if (!e || (!e.nodeName && !it(e))) throw new Error('Invalid target for ' + Ye(t) + '#' + i + '; must be a DOM node or evented object.')
- }
- function Je(e, t, i) {
- if (!Qe(e)) throw new Error('Invalid event type for ' + Ye(t) + '#' + i + '; must be a non-empty string or array.')
- }
- function Ze(e, t, i) {
- if ('function' != typeof e) throw new Error('Invalid listener for ' + Ye(t) + '#' + i + '; must be a function.')
- }
- function et(e, t, i) {
- var n,
- r,
- a = t.length < 3 || t[0] === e || t[0] === e.eventBusEl_,
- t = a ? ((n = e.eventBusEl_), 3 <= t.length && t.shift(), (r = t[0]), t[1]) : ((n = t[0]), (r = t[1]), t[2])
- return $e(n, e, i), Je(r, e, i), Ze(t, e, i), { isTargetingSelf: a, target: n, type: r, listener: (t = Ve(e, t)) }
- }
- function tt(e, t, i, n) {
- $e(e, e, t), e.nodeName ? Ke[t](e, i, n) : e[t](i, n)
- }
- var it = function (t) {
- return (
- t instanceof ze ||
- (!!t.eventBusEl_ &&
- ['on', 'one', 'off', 'trigger'].every(function (e) {
- return 'function' == typeof t[e]
- }))
- )
- },
- nt = {
- on: function () {
- for (var e = this, t = arguments.length, i = new Array(t), n = 0; n < t; n++) i[n] = arguments[n]
- var r,
- a = et(this, i, 'on'),
- s = a.isTargetingSelf,
- o = a.target,
- u = a.type,
- l = a.listener
- tt(o, 'on', u, l),
- s ||
- (((r = function () {
- return e.off(o, u, l)
- }).guid = l.guid),
- ((s = function () {
- return e.off('dispose', r)
- }).guid = l.guid),
- tt(this, 'on', 'dispose', r),
- tt(o, 'on', 'dispose', s))
- },
- one: function () {
- for (var r = this, e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- var n = et(this, t, 'one'),
- a = n.isTargetingSelf,
- s = n.target,
- o = n.type,
- u = n.listener
- a
- ? tt(s, 'one', o, u)
- : (((a = function e() {
- r.off(s, o, e)
- for (var t = arguments.length, i = new Array(t), n = 0; n < t; n++) i[n] = arguments[n]
- u.apply(null, i)
- }).guid = u.guid),
- tt(s, 'one', o, a))
- },
- any: function () {
- for (var r = this, e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- var n = et(this, t, 'any'),
- a = n.isTargetingSelf,
- s = n.target,
- o = n.type,
- u = n.listener
- a
- ? tt(s, 'any', o, u)
- : (((a = function e() {
- r.off(s, o, e)
- for (var t = arguments.length, i = new Array(t), n = 0; n < t; n++) i[n] = arguments[n]
- u.apply(null, i)
- }).guid = u.guid),
- tt(s, 'any', o, a))
- },
- off: function (e, t, i) {
- !e || Qe(e)
- ? Fe(this.eventBusEl_, e, t)
- : ((t = t),
- $e((e = e), this, 'off'),
- Je(t, this, 'off'),
- Ze(i, this, 'off'),
- (i = Ve(this, i)),
- this.off('dispose', i),
- e.nodeName ? (Fe(e, t, i), Fe(e, 'dispose', i)) : it(e) && (e.off(t, i), e.off('dispose', i)))
- },
- trigger: function (e, t) {
- $e(this.eventBusEl_, this, 'trigger')
- var i = e && 'string' != typeof e ? e.type : e
- if (!Qe(i)) {
- i = 'Invalid event type for ' + Ye(this) + '#trigger; must be a non-empty string or object with a type key that has a non-empty value.'
- if (!e) throw new Error(i)
- ;(this.log || h).error(i)
- }
- return je(this.eventBusEl_, e, t)
- },
- }
- function rt(e, t) {
- t = (t = void 0 === t ? {} : t).eventBusKey
- if (t) {
- if (!e[t].nodeName) throw new Error('The eventBusKey "' + t + '" does not refer to an element.')
- e.eventBusEl_ = e[t]
- } else e.eventBusEl_ = $('span', { className: 'vjs-event-bus' })
- return (
- b(e, nt),
- e.eventedCallbacks &&
- e.eventedCallbacks.forEach(function (e) {
- e()
- }),
- e.on('dispose', function () {
- e.off(),
- [e, e.el_, e.eventBusEl_].forEach(function (e) {
- e && De.has(e) && De.delete(e)
- }),
- window.setTimeout(function () {
- e.eventBusEl_ = null
- }, 0)
- }),
- e
- )
- }
- var at = {
- state: {},
- setState: function (e) {
- var i,
- n = this
- return (
- _((e = 'function' == typeof e ? e() : e), function (e, t) {
- n.state[t] !== e && ((i = i || {})[t] = { from: n.state[t], to: e }), (n.state[t] = e)
- }),
- i && it(this) && this.trigger({ changes: i, type: 'statechanged' }),
- i
- )
- },
- }
- function st(e, t) {
- return b(e, at), (e.state = b({}, e.state, t)), 'function' == typeof e.handleStateChanged && it(e) && e.on('statechanged', e.handleStateChanged), e
- }
- function ot(e) {
- return 'string' != typeof e
- ? e
- : e.replace(/./, function (e) {
- return e.toLowerCase()
- })
- }
- function ut(e) {
- return 'string' != typeof e
- ? e
- : e.replace(/./, function (e) {
- return e.toUpperCase()
- })
- }
- function lt() {
- for (var i = {}, e = arguments.length, t = new Array(e), n = 0; n < e; n++) t[n] = arguments[n]
- return (
- t.forEach(function (e) {
- e &&
- _(e, function (e, t) {
- S(e) ? (S(i[t]) || (i[t] = {}), (i[t] = lt(i[t], e))) : (i[t] = e)
- })
- }),
- i
- )
- }
- var ct =
- window.Map ||
- (function () {
- function e() {
- this.map_ = {}
- }
- var t = e.prototype
- return (
- (t.has = function (e) {
- return e in this.map_
- }),
- (t.delete = function (e) {
- var t = this.has(e)
- return delete this.map_[e], t
- }),
- (t.set = function (e, t) {
- return (this.map_[e] = t), this
- }),
- (t.forEach = function (e, t) {
- for (var i in this.map_) e.call(t, this.map_[i], i, this)
- }),
- e
- )
- })(),
- dt =
- window.Set ||
- (function () {
- function e() {
- this.set_ = {}
- }
- var t = e.prototype
- return (
- (t.has = function (e) {
- return e in this.set_
- }),
- (t.delete = function (e) {
- var t = this.has(e)
- return delete this.set_[e], t
- }),
- (t.add = function (e) {
- return (this.set_[e] = 1), this
- }),
- (t.forEach = function (e, t) {
- for (var i in this.set_) e.call(t, i, i, this)
- }),
- e
- )
- })(),
- ht = m(function (e, t) {
- function i(e) {
- if ((!e || 'object' != typeof e || ((t = e.which || e.keyCode || e.charCode) && (e = t)), 'number' == typeof e)) return o[e]
- var t = String(e),
- e = n[t.toLowerCase()]
- return e || ((e = r[t.toLowerCase()]) ? e : 1 === t.length ? t.charCodeAt(0) : void 0)
- }
- i.isEventKey = function (e, t) {
- if (e && 'object' == typeof e) {
- var i = e.which || e.keyCode || e.charCode
- if (null == i) return !1
- if ('string' == typeof t) {
- e = n[t.toLowerCase()]
- if (e) return e === i
- if ((e = r[t.toLowerCase()])) return e === i
- } else if ('number' == typeof t) return t === i
- return !1
- }
- }
- for (
- var n =
- ((t = e.exports = i).code =
- t.codes =
- {
- backspace: 8,
- tab: 9,
- enter: 13,
- shift: 16,
- ctrl: 17,
- alt: 18,
- 'pause/break': 19,
- 'caps lock': 20,
- esc: 27,
- space: 32,
- 'page up': 33,
- 'page down': 34,
- end: 35,
- home: 36,
- left: 37,
- up: 38,
- right: 39,
- down: 40,
- insert: 45,
- delete: 46,
- command: 91,
- 'left command': 91,
- 'right command': 93,
- 'numpad *': 106,
- 'numpad +': 107,
- 'numpad -': 109,
- 'numpad .': 110,
- 'numpad /': 111,
- 'num lock': 144,
- 'scroll lock': 145,
- 'my computer': 182,
- 'my calculator': 183,
- ';': 186,
- '=': 187,
- ',': 188,
- '-': 189,
- '.': 190,
- '/': 191,
- '`': 192,
- '[': 219,
- '\\': 220,
- ']': 221,
- "'": 222,
- }),
- r = (t.aliases = {
- windows: 91,
- '⇧': 16,
- '⌥': 18,
- '⌃': 17,
- '⌘': 91,
- ctl: 17,
- control: 17,
- option: 18,
- pause: 19,
- break: 19,
- caps: 20,
- return: 13,
- escape: 27,
- spc: 32,
- spacebar: 32,
- pgup: 33,
- pgdn: 34,
- ins: 45,
- del: 46,
- cmd: 91,
- }),
- a = 97;
- a < 123;
- a++
- )
- n[String.fromCharCode(a)] = a - 32
- for (var a = 48; a < 58; a++) n[a - 48] = a
- for (a = 1; a < 13; a++) n['f' + a] = a + 111
- for (a = 0; a < 10; a++) n['numpad ' + a] = a + 96
- var s,
- o = (t.names = t.title = {})
- for (a in n) o[n[a]] = a
- for (s in r) n[s] = r[s]
- })
- ht.code, ht.codes, ht.aliases, ht.names, ht.title
- var pt = (function () {
- function s(e, t, i) {
- var n = this
- !e && this.play ? (this.player_ = e = this) : (this.player_ = e),
- (this.isDisposed_ = !1),
- (this.parentComponent_ = null),
- (this.options_ = lt({}, this.options_)),
- (t = this.options_ = lt(this.options_, t)),
- (this.id_ = t.id || (t.el && t.el.id)),
- this.id_ || ((e = (e && e.id && e.id()) || 'no_player'), (this.id_ = e + '_component_' + Pe++)),
- (this.name_ = t.name || null),
- t.el ? (this.el_ = t.el) : !1 !== t.createEl && (this.el_ = this.createEl()),
- t.className &&
- this.el_ &&
- t.className.split(' ').forEach(function (e) {
- return n.addClass(e)
- }),
- !1 !== t.evented &&
- (rt(this, { eventBusKey: this.el_ ? 'el_' : null }),
- (this.handleLanguagechange = this.handleLanguagechange.bind(this)),
- this.on(this.player_, 'languagechange', this.handleLanguagechange)),
- st(this, this.constructor.defaultState),
- (this.children_ = []),
- (this.childIndex_ = {}),
- (this.childNameIndex_ = {}),
- (this.setTimeoutIds_ = new dt()),
- (this.setIntervalIds_ = new dt()),
- (this.rafIds_ = new dt()),
- (this.namedRafs_ = new ct()),
- (this.clearingTimersOnDispose_ = !1) !== t.initChildren && this.initChildren(),
- this.ready(i),
- !1 !== t.reportTouchActivity && this.enableTouchActivity()
- }
- var e = s.prototype
- return (
- (e.dispose = function (e) {
- if ((void 0 === e && (e = {}), !this.isDisposed_)) {
- if ((this.readyQueue_ && (this.readyQueue_.length = 0), this.trigger({ type: 'dispose', bubbles: !1 }), (this.isDisposed_ = !0), this.children_))
- for (var t = this.children_.length - 1; 0 <= t; t--) this.children_[t].dispose && this.children_[t].dispose()
- ;(this.children_ = null),
- (this.childIndex_ = null),
- (this.childNameIndex_ = null),
- (this.parentComponent_ = null),
- this.el_ && (this.el_.parentNode && (e.restoreEl ? this.el_.parentNode.replaceChild(e.restoreEl, this.el_) : this.el_.parentNode.removeChild(this.el_)), (this.el_ = null)),
- (this.player_ = null)
- }
- }),
- (e.isDisposed = function () {
- return Boolean(this.isDisposed_)
- }),
- (e.player = function () {
- return this.player_
- }),
- (e.options = function (e) {
- return e && (this.options_ = lt(this.options_, e)), this.options_
- }),
- (e.el = function () {
- return this.el_
- }),
- (e.createEl = function (e, t, i) {
- return $(e, t, i)
- }),
- (e.localize = function (e, i, t) {
- void 0 === t && (t = e)
- var n = this.player_.language && this.player_.language(),
- r = this.player_.languages && this.player_.languages(),
- a = r && r[n],
- n = n && n.split('-')[0],
- n = r && r[n],
- t = t
- return (
- a && a[e] ? (t = a[e]) : n && n[e] && (t = n[e]),
- (t = i
- ? t.replace(/\{(\d+)\}/g, function (e, t) {
- t = i[t - 1]
- return 'undefined' == typeof t ? e : t
- })
- : t)
- )
- }),
- (e.handleLanguagechange = function () {}),
- (e.contentEl = function () {
- return this.contentEl_ || this.el_
- }),
- (e.id = function () {
- return this.id_
- }),
- (e.name = function () {
- return this.name_
- }),
- (e.children = function () {
- return this.children_
- }),
- (e.getChildById = function (e) {
- return this.childIndex_[e]
- }),
- (e.getChild = function (e) {
- if (e) return this.childNameIndex_[e]
- }),
- (e.getDescendant = function () {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- for (
- var t = t.reduce(function (e, t) {
- return e.concat(t)
- }, []),
- n = this,
- r = 0;
- r < t.length;
- r++
- )
- if (!(n = n.getChild(t[r])) || !n.getChild) return
- return n
- }),
- (e.addChild = function (e, t, i) {
- if ((void 0 === t && (t = {}), void 0 === i && (i = this.children_.length), 'string' == typeof e)) {
- var n = ut(e),
- r = t.componentClass || n
- t.name = n
- var a = s.getComponent(r)
- if (!a) throw new Error('Component ' + r + ' does not exist')
- if ('function' != typeof a) return null
- a = new a(this.player_ || this, t)
- } else a = e
- return (
- a.parentComponent_ && a.parentComponent_.removeChild(a),
- this.children_.splice(i, 0, a),
- (a.parentComponent_ = this),
- 'function' == typeof a.id && (this.childIndex_[a.id()] = a),
- (n = n || (a.name && ut(a.name()))) && ((this.childNameIndex_[n] = a), (this.childNameIndex_[ot(n)] = a)),
- 'function' == typeof a.el &&
- a.el() &&
- ((n = null),
- this.children_[i + 1] && (this.children_[i + 1].el_ ? (n = this.children_[i + 1].el_) : K(this.children_[i + 1]) && (n = this.children_[i + 1])),
- this.contentEl().insertBefore(a.el(), n)),
- a
- )
- }),
- (e.removeChild = function (e) {
- if ((e = 'string' == typeof e ? this.getChild(e) : e) && this.children_) {
- for (var t, i = !1, n = this.children_.length - 1; 0 <= n; n--)
- if (this.children_[n] === e) {
- ;(i = !0), this.children_.splice(n, 1)
- break
- }
- i &&
- ((e.parentComponent_ = null),
- (this.childIndex_[e.id()] = null),
- (this.childNameIndex_[ut(e.name())] = null),
- (this.childNameIndex_[ot(e.name())] = null),
- (t = e.el()) && t.parentNode === this.contentEl() && this.contentEl().removeChild(e.el()))
- }
- }),
- (e.initChildren = function () {
- var i,
- t,
- e,
- n = this,
- r = this.options_.children
- r &&
- ((i = this.options_),
- (t = s.getComponent('Tech')),
- (e = Array.isArray(r) ? r : Object.keys(r))
- .concat(
- Object.keys(this.options_).filter(function (t) {
- return !e.some(function (e) {
- return 'string' == typeof e ? t === e : t === e.name
- })
- })
- )
- .map(function (e) {
- var t,
- e = 'string' == typeof e ? r[(t = e)] || n.options_[t] || {} : ((t = e.name), e)
- return { name: t, opts: e }
- })
- .filter(function (e) {
- e = s.getComponent(e.opts.componentClass || ut(e.name))
- return e && !t.isTech(e)
- })
- .forEach(function (e) {
- var t = e.name,
- e = e.opts
- !1 !== (e = void 0 !== i[t] ? i[t] : e) && (((e = !0 === e ? {} : e).playerOptions = n.options_.playerOptions), (e = n.addChild(t, e)) && (n[t] = e))
- }))
- }),
- (e.buildCSSClass = function () {
- return ''
- }),
- (e.ready = function (e, t) {
- if ((void 0 === t && (t = !1), e)) return this.isReady_ ? void (t ? e.call(this) : this.setTimeout(e, 1)) : ((this.readyQueue_ = this.readyQueue_ || []), void this.readyQueue_.push(e))
- }),
- (e.triggerReady = function () {
- ;(this.isReady_ = !0),
- this.setTimeout(function () {
- var e = this.readyQueue_
- ;(this.readyQueue_ = []),
- e &&
- 0 < e.length &&
- e.forEach(function (e) {
- e.call(this)
- }, this),
- this.trigger('ready')
- }, 1)
- }),
- (e.$ = function (e, t) {
- return Te(e, t || this.contentEl())
- }),
- (e.$$ = function (e, t) {
- return Se(e, t || this.contentEl())
- }),
- (e.hasClass = function (e) {
- return ee(this.el_, e)
- }),
- (e.addClass = function (e) {
- te(this.el_, e)
- }),
- (e.removeClass = function (e) {
- ie(this.el_, e)
- }),
- (e.toggleClass = function (e, t) {
- ne(this.el_, e, t)
- }),
- (e.show = function () {
- this.removeClass('vjs-hidden')
- }),
- (e.hide = function () {
- this.addClass('vjs-hidden')
- }),
- (e.lockShowing = function () {
- this.addClass('vjs-lock-showing')
- }),
- (e.unlockShowing = function () {
- this.removeClass('vjs-lock-showing')
- }),
- (e.getAttribute = function (e) {
- return se(this.el_, e)
- }),
- (e.setAttribute = function (e, t) {
- oe(this.el_, e, t)
- }),
- (e.removeAttribute = function (e) {
- ue(this.el_, e)
- }),
- (e.width = function (e, t) {
- return this.dimension('width', e, t)
- }),
- (e.height = function (e, t) {
- return this.dimension('height', e, t)
- }),
- (e.dimensions = function (e, t) {
- this.width(e, !0), this.height(t)
- }),
- (e.dimension = function (e, t, i) {
- if (void 0 !== t)
- return (
- -1 !== ('' + (t = null === t || t != t ? 0 : t)).indexOf('%') || -1 !== ('' + t).indexOf('px') ? (this.el_.style[e] = t) : (this.el_.style[e] = 'auto' === t ? '' : t + 'px'),
- void (i || this.trigger('componentresize'))
- )
- if (!this.el_) return 0
- ;(t = this.el_.style[e]), (i = t.indexOf('px'))
- return -1 !== i ? parseInt(t.slice(0, i), 10) : parseInt(this.el_['offset' + ut(e)], 10)
- }),
- (e.currentDimension = function (e) {
- var t = 0
- if ('width' !== e && 'height' !== e) throw new Error('currentDimension only accepts width or height value')
- return (t = w(this.el_, e)), (0 !== (t = parseFloat(t)) && !isNaN(t)) || ((e = 'offset' + ut(e)), (t = this.el_[e])), t
- }),
- (e.currentDimensions = function () {
- return { width: this.currentDimension('width'), height: this.currentDimension('height') }
- }),
- (e.currentWidth = function () {
- return this.currentDimension('width')
- }),
- (e.currentHeight = function () {
- return this.currentDimension('height')
- }),
- (e.focus = function () {
- this.el_.focus()
- }),
- (e.blur = function () {
- this.el_.blur()
- }),
- (e.handleKeyDown = function (e) {
- this.player_ && (ht.isEventKey(e, 'Tab') || e.stopPropagation(), this.player_.handleKeyDown(e))
- }),
- (e.handleKeyPress = function (e) {
- this.handleKeyDown(e)
- }),
- (e.emitTapEvents = function () {
- var i,
- t = 0,
- n = null
- this.on('touchstart', function (e) {
- 1 === e.touches.length && ((n = { pageX: e.touches[0].pageX, pageY: e.touches[0].pageY }), (t = window.performance.now()), (i = !0))
- }),
- this.on('touchmove', function (e) {
- var t
- 1 < e.touches.length ? (i = !1) : n && ((t = e.touches[0].pageX - n.pageX), (e = e.touches[0].pageY - n.pageY), 10 < Math.sqrt(t * t + e * e) && (i = !1))
- })
- function e() {
- i = !1
- }
- this.on('touchleave', e),
- this.on('touchcancel', e),
- this.on('touchend', function (e) {
- !(n = null) === i && window.performance.now() - t < 200 && (e.preventDefault(), this.trigger('tap'))
- })
- }),
- (e.enableTouchActivity = function () {
- var t, i, e
- this.player() &&
- this.player().reportUserActivity &&
- ((t = Ve(this.player(), this.player().reportUserActivity)),
- this.on('touchstart', function () {
- t(), this.clearInterval(i), (i = this.setInterval(t, 250))
- }),
- (e = function (e) {
- t(), this.clearInterval(i)
- }),
- this.on('touchmove', t),
- this.on('touchend', e),
- this.on('touchcancel', e))
- }),
- (e.setTimeout = function (e, t) {
- var i,
- n = this
- return (
- (e = Ve(this, e)),
- this.clearTimersOnDispose_(),
- (i = window.setTimeout(function () {
- n.setTimeoutIds_.has(i) && n.setTimeoutIds_.delete(i), e()
- }, t)),
- this.setTimeoutIds_.add(i),
- i
- )
- }),
- (e.clearTimeout = function (e) {
- return this.setTimeoutIds_.has(e) && (this.setTimeoutIds_.delete(e), window.clearTimeout(e)), e
- }),
- (e.setInterval = function (e, t) {
- ;(e = Ve(this, e)), this.clearTimersOnDispose_()
- t = window.setInterval(e, t)
- return this.setIntervalIds_.add(t), t
- }),
- (e.clearInterval = function (e) {
- return this.setIntervalIds_.has(e) && (this.setIntervalIds_.delete(e), window.clearInterval(e)), e
- }),
- (e.requestAnimationFrame = function (e) {
- var t,
- i = this
- return this.supportsRaf_
- ? (this.clearTimersOnDispose_(),
- (e = Ve(this, e)),
- (t = window.requestAnimationFrame(function () {
- i.rafIds_.has(t) && i.rafIds_.delete(t), e()
- })),
- this.rafIds_.add(t),
- t)
- : this.setTimeout(e, 1e3 / 60)
- }),
- (e.requestNamedAnimationFrame = function (e, t) {
- var i = this
- if (!this.namedRafs_.has(e)) {
- this.clearTimersOnDispose_(), (t = Ve(this, t))
- var n = this.requestAnimationFrame(function () {
- t(), i.namedRafs_.has(e) && i.namedRafs_.delete(e)
- })
- return this.namedRafs_.set(e, n), e
- }
- }),
- (e.cancelNamedAnimationFrame = function (e) {
- this.namedRafs_.has(e) && (this.cancelAnimationFrame(this.namedRafs_.get(e)), this.namedRafs_.delete(e))
- }),
- (e.cancelAnimationFrame = function (e) {
- return this.supportsRaf_ ? (this.rafIds_.has(e) && (this.rafIds_.delete(e), window.cancelAnimationFrame(e)), e) : this.clearTimeout(e)
- }),
- (e.clearTimersOnDispose_ = function () {
- var n = this
- this.clearingTimersOnDispose_ ||
- ((this.clearingTimersOnDispose_ = !0),
- this.one('dispose', function () {
- ;[
- ['namedRafs_', 'cancelNamedAnimationFrame'],
- ['rafIds_', 'cancelAnimationFrame'],
- ['setTimeoutIds_', 'clearTimeout'],
- ['setIntervalIds_', 'clearInterval'],
- ].forEach(function (e) {
- var t = e[0],
- i = e[1]
- n[t].forEach(function (e, t) {
- return n[i](t)
- })
- }),
- (n.clearingTimersOnDispose_ = !1)
- }))
- }),
- (s.registerComponent = function (e, t) {
- if ('string' != typeof e || !e) throw new Error('Illegal component name, "' + e + '"; must be a non-empty string.')
- var i = s.getComponent('Tech'),
- n = i && i.isTech(t),
- i = s === t || s.prototype.isPrototypeOf(t.prototype)
- if (n || !i) {
- var r = n ? 'techs must be registered using Tech.registerTech()' : 'must be a Component subclass'
- throw new Error('Illegal component, "' + e + '"; ' + r + '.')
- }
- ;(e = ut(e)), s.components_ || (s.components_ = {})
- r = s.getComponent('Player')
- if ('Player' === e && r && r.players) {
- var a = r.players,
- r = Object.keys(a)
- if (
- a &&
- 0 < r.length &&
- r
- .map(function (e) {
- return a[e]
- })
- .every(Boolean)
- )
- throw new Error('Can not register Player component after player has been created.')
- }
- return (s.components_[e] = t), (s.components_[ot(e)] = t)
- }),
- (s.getComponent = function (e) {
- if (e && s.components_) return s.components_[e]
- }),
- s
- )
- })()
- ;(pt.prototype.supportsRaf_ = 'function' == typeof window.requestAnimationFrame && 'function' == typeof window.cancelAnimationFrame), pt.registerComponent('Component', pt)
- var ft = function (e) {
- if (void 0 === e) throw new ReferenceError("this hasn't been initialised - super() hasn't been called")
- return e
- }
- var mt = function (e, t) {
- ;(e.prototype = Object.create(t.prototype)), ((e.prototype.constructor = e).__proto__ = t)
- }
- function gt(e, t, i, n) {
- return (
- (function (e, t, i) {
- if ('number' != typeof t || t < 0 || i < t)
- throw new Error("Failed to execute '" + e + "' on 'TimeRanges': The index provided (" + t + ') is non-numeric or out of bounds (0-' + i + ').')
- })(e, n, i.length - 1),
- i[n][t]
- )
- }
- function yt(e) {
- var t =
- void 0 === e || 0 === e.length
- ? {
- length: 0,
- start: function () {
- throw new Error('This TimeRanges object is empty')
- },
- end: function () {
- throw new Error('This TimeRanges object is empty')
- },
- }
- : { length: e.length, start: gt.bind(null, 'start', 0, e), end: gt.bind(null, 'end', 1, e) }
- return (
- window.Symbol &&
- window.Symbol.iterator &&
- (t[window.Symbol.iterator] = function () {
- return (e || []).values()
- }),
- t
- )
- }
- function vt(e, t) {
- return Array.isArray(e) ? yt(e) : void 0 === e || void 0 === t ? yt() : yt([[e, t]])
- }
- function _t(e, t) {
- var i,
- n,
- r = 0
- if (!t) return 0
- ;(e && e.length) || (e = vt(0, 0))
- for (var a = 0; a < e.length; a++) (i = e.start(a)), (r += (n = t < (n = e.end(a)) ? t : n) - i)
- return r / t
- }
- function bt(e) {
- if (e instanceof bt) return e
- 'number' == typeof e ? (this.code = e) : 'string' == typeof e ? (this.message = e) : T(e) && ('number' == typeof e.code && (this.code = e.code), b(this, e)),
- this.message || (this.message = bt.defaultMessages[this.code] || '')
- }
- ;(bt.prototype.code = 0),
- (bt.prototype.message = ''),
- (bt.prototype.status = null),
- (bt.errorTypes = ['MEDIA_ERR_CUSTOM', 'MEDIA_ERR_ABORTED', 'MEDIA_ERR_NETWORK', 'MEDIA_ERR_DECODE', 'MEDIA_ERR_SRC_NOT_SUPPORTED', 'MEDIA_ERR_ENCRYPTED']),
- (bt.defaultMessages = {
- 1: 'You aborted the media playback',
- 2: 'A network error caused the media download to fail part-way.',
- 3: 'The media playback was aborted due to a corruption problem or because the media used features your browser did not support.',
- 4: 'The media could not be loaded, either because the server or network failed or because the format is not supported.',
- 5: 'The media is encrypted and we do not have the keys to decrypt it.',
- })
- for (var Tt = 0; Tt < bt.errorTypes.length; Tt++) (bt[bt.errorTypes[Tt]] = Tt), (bt.prototype[bt.errorTypes[Tt]] = Tt)
- var St = function (e, t) {
- var i,
- n = null
- try {
- i = JSON.parse(e, t)
- } catch (e) {
- n = e
- }
- return [n, i]
- }
- function wt(e) {
- return null != e && 'function' == typeof e.then
- }
- function Et(e) {
- wt(e) && e.then(null, function (e) {})
- }
- function kt(n) {
- return ['kind', 'label', 'language', 'id', 'inBandMetadataTrackDispatchType', 'mode', 'src'].reduce(
- function (e, t, i) {
- return n[t] && (e[t] = n[t]), e
- },
- {
- cues:
- n.cues &&
- Array.prototype.map.call(n.cues, function (e) {
- return { startTime: e.startTime, endTime: e.endTime, text: e.text, id: e.id }
- }),
- }
- )
- }
- var Ct = function (e) {
- var t = e.$$('track'),
- i = Array.prototype.map.call(t, function (e) {
- return e.track
- })
- return Array.prototype.map
- .call(t, function (e) {
- var t = kt(e.track)
- return e.src && (t.src = e.src), t
- })
- .concat(
- Array.prototype.filter
- .call(e.textTracks(), function (e) {
- return -1 === i.indexOf(e)
- })
- .map(kt)
- )
- },
- It = function (e, i) {
- return (
- e.forEach(function (e) {
- var t = i.addRemoteTextTrack(e).track
- !e.src &&
- e.cues &&
- e.cues.forEach(function (e) {
- return t.addCue(e)
- })
- }),
- i.textTracks()
- )
- },
- xt = 'vjs-modal-dialog',
- At = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- (i.handleKeyDown_ = function (e) {
- return i.handleKeyDown(e)
- }),
- (i.close_ = function (e) {
- return i.close(e)
- }),
- (i.opened_ = i.hasBeenOpened_ = i.hasBeenFilled_ = !1),
- i.closeable(!i.options_.uncloseable),
- i.content(i.options_.content),
- (i.contentEl_ = $('div', { className: xt + '-content' }, { role: 'document' })),
- (i.descEl_ = $('p', { className: xt + '-description vjs-control-text', id: i.el().getAttribute('aria-describedby') })),
- J(i.descEl_, i.description()),
- i.el_.appendChild(i.descEl_),
- i.el_.appendChild(i.contentEl_),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.createEl = function () {
- return n.prototype.createEl.call(
- this,
- 'div',
- { className: this.buildCSSClass(), tabIndex: -1 },
- { 'aria-describedby': this.id() + '_description', 'aria-hidden': 'true', 'aria-label': this.label(), role: 'dialog' }
- )
- }),
- (t.dispose = function () {
- ;(this.contentEl_ = null), (this.descEl_ = null), (this.previouslyActiveEl_ = null), n.prototype.dispose.call(this)
- }),
- (t.buildCSSClass = function () {
- return xt + ' vjs-hidden ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.label = function () {
- return this.localize(this.options_.label || 'Modal Window')
- }),
- (t.description = function () {
- var e = this.options_.description || this.localize('This is a modal window.')
- return this.closeable() && (e += ' ' + this.localize('This modal can be closed by pressing the Escape key or activating the close button.')), e
- }),
- (t.open = function () {
- var e
- this.opened_ ||
- ((e = this.player()),
- this.trigger('beforemodalopen'),
- (this.opened_ = !0),
- (!this.options_.fillAlways && (this.hasBeenOpened_ || this.hasBeenFilled_)) || this.fill(),
- (this.wasPlaying_ = !e.paused()),
- this.options_.pauseOnOpen && this.wasPlaying_ && e.pause(),
- this.on('keydown', this.handleKeyDown_),
- (this.hadControls_ = e.controls()),
- e.controls(!1),
- this.show(),
- this.conditionalFocus_(),
- this.el().setAttribute('aria-hidden', 'false'),
- this.trigger('modalopen'),
- (this.hasBeenOpened_ = !0))
- }),
- (t.opened = function (e) {
- return 'boolean' == typeof e && this[e ? 'open' : 'close'](), this.opened_
- }),
- (t.close = function () {
- var e
- this.opened_ &&
- ((e = this.player()),
- this.trigger('beforemodalclose'),
- (this.opened_ = !1),
- this.wasPlaying_ && this.options_.pauseOnOpen && e.play(),
- this.off('keydown', this.handleKeyDown_),
- this.hadControls_ && e.controls(!0),
- this.hide(),
- this.el().setAttribute('aria-hidden', 'true'),
- this.trigger('modalclose'),
- this.conditionalBlur_(),
- this.options_.temporary && this.dispose())
- }),
- (t.closeable = function (e) {
- var t, i
- return (
- 'boolean' == typeof e &&
- ((t = this.closeable_ = !!e),
- (i = this.getChild('closeButton')),
- t &&
- !i &&
- ((e = this.contentEl_),
- (this.contentEl_ = this.el_),
- (i = this.addChild('closeButton', { controlText: 'Close Modal Dialog' })),
- (this.contentEl_ = e),
- this.on(i, 'close', this.close_)),
- !t && i && (this.off(i, 'close', this.close_), this.removeChild(i), i.dispose())),
- this.closeable_
- )
- }),
- (t.fill = function () {
- this.fillWith(this.content())
- }),
- (t.fillWith = function (e) {
- var t = this.contentEl(),
- i = t.parentNode,
- n = t.nextSibling
- this.trigger('beforemodalfill'), (this.hasBeenFilled_ = !0), i.removeChild(t), this.empty(), ve(t, e), this.trigger('modalfill'), n ? i.insertBefore(t, n) : i.appendChild(t)
- t = this.getChild('closeButton')
- t && i.appendChild(t.el_)
- }),
- (t.empty = function () {
- this.trigger('beforemodalempty'), me(this.contentEl()), this.trigger('modalempty')
- }),
- (t.content = function (e) {
- return 'undefined' != typeof e && (this.content_ = e), this.content_
- }),
- (t.conditionalFocus_ = function () {
- var e = document.activeElement,
- t = this.player_.el_
- ;(this.previouslyActiveEl_ = null), (!t.contains(e) && t !== e) || ((this.previouslyActiveEl_ = e), this.focus())
- }),
- (t.conditionalBlur_ = function () {
- this.previouslyActiveEl_ && (this.previouslyActiveEl_.focus(), (this.previouslyActiveEl_ = null))
- }),
- (t.handleKeyDown = function (e) {
- if ((e.stopPropagation(), ht.isEventKey(e, 'Escape') && this.closeable())) return e.preventDefault(), void this.close()
- if (ht.isEventKey(e, 'Tab')) {
- for (var t, i = this.focusableEls_(), n = this.el_.querySelector(':focus'), r = 0; r < i.length; r++)
- if (n === i[r]) {
- t = r
- break
- }
- document.activeElement === this.el_ && (t = 0),
- e.shiftKey && 0 === t ? (i[i.length - 1].focus(), e.preventDefault()) : e.shiftKey || t !== i.length - 1 || (i[0].focus(), e.preventDefault())
- }
- }),
- (t.focusableEls_ = function () {
- var e = this.el_.querySelectorAll('*')
- return Array.prototype.filter.call(e, function (e) {
- return (
- ((e instanceof window.HTMLAnchorElement || e instanceof window.HTMLAreaElement) && e.hasAttribute('href')) ||
- ((e instanceof window.HTMLInputElement || e instanceof window.HTMLSelectElement || e instanceof window.HTMLTextAreaElement || e instanceof window.HTMLButtonElement) &&
- !e.hasAttribute('disabled')) ||
- e instanceof window.HTMLIFrameElement ||
- e instanceof window.HTMLObjectElement ||
- e instanceof window.HTMLEmbedElement ||
- (e.hasAttribute('tabindex') && -1 !== e.getAttribute('tabindex')) ||
- e.hasAttribute('contenteditable')
- )
- })
- }),
- e
- )
- })(pt)
- ;(At.prototype.options_ = { pauseOnOpen: !0, temporary: !0 }), pt.registerComponent('ModalDialog', At)
- var Pt,
- Lt = (function (n) {
- function e(e) {
- var t
- void 0 === e && (e = []),
- ((t = n.call(this) || this).tracks_ = []),
- Object.defineProperty(ft(t), 'length', {
- get: function () {
- return this.tracks_.length
- },
- })
- for (var i = 0; i < e.length; i++) t.addTrack(e[i])
- return t
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.addTrack = function (e) {
- var t = this,
- i = this.tracks_.length
- '' + i in this ||
- Object.defineProperty(this, i, {
- get: function () {
- return this.tracks_[i]
- },
- }),
- -1 === this.tracks_.indexOf(e) && (this.tracks_.push(e), this.trigger({ track: e, type: 'addtrack', target: this })),
- (e.labelchange_ = function () {
- t.trigger({ track: e, type: 'labelchange', target: t })
- }),
- it(e) && e.addEventListener('labelchange', e.labelchange_)
- }),
- (t.removeTrack = function (e) {
- for (var t, i = 0, n = this.length; i < n; i++)
- if (this[i] === e) {
- ;(t = this[i]).off && t.off(), this.tracks_.splice(i, 1)
- break
- }
- t && this.trigger({ track: t, type: 'removetrack', target: this })
- }),
- (t.getTrackById = function (e) {
- for (var t = null, i = 0, n = this.length; i < n; i++) {
- var r = this[i]
- if (r.id === e) {
- t = r
- break
- }
- }
- return t
- }),
- e
- )
- })(ze)
- for (Pt in ((Lt.prototype.allowedEvents_ = { change: 'change', addtrack: 'addtrack', removetrack: 'removetrack', labelchange: 'labelchange' }), Lt.prototype.allowedEvents_))
- Lt.prototype['on' + Pt] = null
- function Dt(e, t) {
- for (var i = 0; i < e.length; i++) Object.keys(e[i]).length && t.id !== e[i].id && (e[i].enabled = !1)
- }
- function Ot(e, t) {
- for (var i = 0; i < e.length; i++) Object.keys(e[i]).length && t.id !== e[i].id && (e[i].selected = !1)
- }
- function Mt(e) {
- var t = ['protocol', 'hostname', 'port', 'pathname', 'search', 'hash', 'host'],
- i = document.createElement('a')
- i.href = e
- for (var n = {}, r = 0; r < t.length; r++) n[t[r]] = i[t[r]]
- return (
- 'http:' === n.protocol && (n.host = n.host.replace(/:80$/, '')),
- 'https:' === n.protocol && (n.host = n.host.replace(/:443$/, '')),
- n.protocol || (n.protocol = window.location.protocol),
- n.host || (n.host = window.location.host),
- n
- )
- }
- function Rt(e) {
- var t
- return e.match(/^https?:\/\//) || (((t = document.createElement('a')).href = e), (e = t.href)), e
- }
- function Nt(e) {
- if ('string' == typeof e) {
- e = /^(\/?)([\s\S]*?)((?:\.{1,2}|[^\/]+?)(\.([^\.\/\?]+)))(?:[\/]*|[\?].*)$/.exec(e)
- if (e) return e.pop().toLowerCase()
- }
- return ''
- }
- function Ut(e, t) {
- return void 0 === t && (t = window.location), (':' === (e = Mt(e)).protocol ? t : e).protocol + e.host !== t.protocol + t.host
- }
- var Bt = (function (n) {
- function e(e) {
- for (var t, i = (e = void 0 === e ? [] : e).length - 1; 0 <= i; i--)
- if (e[i].enabled) {
- Dt(e, e[i])
- break
- }
- return ((t = n.call(this, e) || this).changing_ = !1), t
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.addTrack = function (e) {
- var t = this
- e.enabled && Dt(this, e),
- n.prototype.addTrack.call(this, e),
- e.addEventListener &&
- ((e.enabledChange_ = function () {
- t.changing_ || ((t.changing_ = !0), Dt(t, e), (t.changing_ = !1), t.trigger('change'))
- }),
- e.addEventListener('enabledchange', e.enabledChange_))
- }),
- (t.removeTrack = function (e) {
- n.prototype.removeTrack.call(this, e), e.removeEventListener && e.enabledChange_ && (e.removeEventListener('enabledchange', e.enabledChange_), (e.enabledChange_ = null))
- }),
- e
- )
- })(Lt),
- Ft = (function (n) {
- function e(e) {
- for (var t, i = (e = void 0 === e ? [] : e).length - 1; 0 <= i; i--)
- if (e[i].selected) {
- Ot(e, e[i])
- break
- }
- return (
- ((t = n.call(this, e) || this).changing_ = !1),
- Object.defineProperty(ft(t), 'selectedIndex', {
- get: function () {
- for (var e = 0; e < this.length; e++) if (this[e].selected) return e
- return -1
- },
- set: function () {},
- }),
- t
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.addTrack = function (e) {
- var t = this
- e.selected && Ot(this, e),
- n.prototype.addTrack.call(this, e),
- e.addEventListener &&
- ((e.selectedChange_ = function () {
- t.changing_ || ((t.changing_ = !0), Ot(t, e), (t.changing_ = !1), t.trigger('change'))
- }),
- e.addEventListener('selectedchange', e.selectedChange_))
- }),
- (t.removeTrack = function (e) {
- n.prototype.removeTrack.call(this, e), e.removeEventListener && e.selectedChange_ && (e.removeEventListener('selectedchange', e.selectedChange_), (e.selectedChange_ = null))
- }),
- e
- )
- })(Lt),
- k = (function (i) {
- function e() {
- return i.apply(this, arguments) || this
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.addTrack = function (e) {
- var t = this
- i.prototype.addTrack.call(this, e),
- this.queueChange_ ||
- (this.queueChange_ = function () {
- return t.queueTrigger('change')
- }),
- this.triggerSelectedlanguagechange ||
- (this.triggerSelectedlanguagechange_ = function () {
- return t.trigger('selectedlanguagechange')
- }),
- e.addEventListener('modechange', this.queueChange_)
- ;-1 === ['metadata', 'chapters'].indexOf(e.kind) && e.addEventListener('modechange', this.triggerSelectedlanguagechange_)
- }),
- (t.removeTrack = function (e) {
- i.prototype.removeTrack.call(this, e),
- e.removeEventListener &&
- (this.queueChange_ && e.removeEventListener('modechange', this.queueChange_),
- this.selectedlanguagechange_ && e.removeEventListener('modechange', this.triggerSelectedlanguagechange_))
- }),
- e
- )
- })(Lt),
- jt = (function () {
- function e(e) {
- void 0 === e && (e = []),
- (this.trackElements_ = []),
- Object.defineProperty(this, 'length', {
- get: function () {
- return this.trackElements_.length
- },
- })
- for (var t = 0, i = e.length; t < i; t++) this.addTrackElement_(e[t])
- }
- var t = e.prototype
- return (
- (t.addTrackElement_ = function (e) {
- var t = this.trackElements_.length
- '' + t in this ||
- Object.defineProperty(this, t, {
- get: function () {
- return this.trackElements_[t]
- },
- }),
- -1 === this.trackElements_.indexOf(e) && this.trackElements_.push(e)
- }),
- (t.getTrackElementByTrack_ = function (e) {
- for (var t, i = 0, n = this.trackElements_.length; i < n; i++)
- if (e === this.trackElements_[i].track) {
- t = this.trackElements_[i]
- break
- }
- return t
- }),
- (t.removeTrackElement_ = function (e) {
- for (var t = 0, i = this.trackElements_.length; t < i; t++)
- if (e === this.trackElements_[t]) {
- this.trackElements_[t].track && 'function' == typeof this.trackElements_[t].track.off && this.trackElements_[t].track.off(),
- 'function' == typeof this.trackElements_[t].off && this.trackElements_[t].off(),
- this.trackElements_.splice(t, 1)
- break
- }
- }),
- e
- )
- })(),
- Ht = (function () {
- function t(e) {
- t.prototype.setCues_.call(this, e),
- Object.defineProperty(this, 'length', {
- get: function () {
- return this.length_
- },
- })
- }
- var e = t.prototype
- return (
- (e.setCues_ = function (e) {
- var t = this.length || 0,
- i = 0,
- n = e.length
- ;(this.cues_ = e), (this.length_ = e.length)
- function r(e) {
- '' + e in this ||
- Object.defineProperty(this, '' + e, {
- get: function () {
- return this.cues_[e]
- },
- })
- }
- if (t < n) for (i = t; i < n; i++) r.call(this, i)
- }),
- (e.getCueById = function (e) {
- for (var t = null, i = 0, n = this.length; i < n; i++) {
- var r = this[i]
- if (r.id === e) {
- t = r
- break
- }
- }
- return t
- }),
- t
- )
- })(),
- qt = { alternative: 'alternative', captions: 'captions', main: 'main', sign: 'sign', subtitles: 'subtitles', commentary: 'commentary' },
- Vt = { alternative: 'alternative', descriptions: 'descriptions', main: 'main', 'main-desc': 'main-desc', translation: 'translation', commentary: 'commentary' },
- Wt = { subtitles: 'subtitles', captions: 'captions', descriptions: 'descriptions', chapters: 'chapters', metadata: 'metadata' },
- Gt = { disabled: 'disabled', hidden: 'hidden', showing: 'showing' },
- C = (function (a) {
- function e(e) {
- void 0 === e && (e = {})
- var t,
- i = a.call(this) || this,
- n = { id: e.id || 'vjs_track_' + Pe++, kind: e.kind || '', language: e.language || '' },
- r = e.label || ''
- for (t in n)
- !(function (e) {
- Object.defineProperty(ft(i), e, {
- get: function () {
- return n[e]
- },
- set: function () {},
- })
- })(t)
- return (
- Object.defineProperty(ft(i), 'label', {
- get: function () {
- return r
- },
- set: function (e) {
- e !== r && ((r = e), this.trigger('labelchange'))
- },
- }),
- i
- )
- }
- return mt(e, a), e
- })(ze),
- zt = Object.freeze({ __proto__: null, parseUrl: Mt, getAbsoluteURL: Rt, getFileExtension: Nt, isCrossOrigin: Ut }),
- Xt = 'undefined' != typeof window ? window : 'undefined' != typeof f ? f : 'undefined' != typeof self ? self : {},
- Kt = Xt,
- Yt = function (e) {
- if (!e) return !1
- var t = Qt.call(e)
- return (
- '[object Function]' === t ||
- ('function' == typeof e && '[object RegExp]' !== t) ||
- ('undefined' != typeof window && (e === window.setTimeout || e === window.alert || e === window.confirm || e === window.prompt))
- )
- },
- Qt = Object.prototype.toString
- ei.httpHandler = function (n, r) {
- return (
- void 0 === r && (r = !1),
- function (e, t, i) {
- if (e) n(e)
- else if (400 <= t.statusCode && t.statusCode <= 599) {
- e = i
- if (r)
- if (Kt.TextDecoder) {
- t = (function (e) {
- void 0 === e && (e = '')
- return e
- .toLowerCase()
- .split(';')
- .reduce(function (e, t) {
- var i = t.split('='),
- t = i[0],
- i = i[1]
- return 'charset' === t.trim() ? i.trim() : e
- }, 'utf-8')
- })(t.headers && t.headers['content-type'])
- try {
- e = new TextDecoder(t).decode(i)
- } catch (e) {}
- } else e = String.fromCharCode.apply(null, new Uint8Array(i))
- n({ cause: e })
- } else n(null, i)
- }
- )
- }
- /**
- * @license
- * slighly modified parse-headers 2.0.2 <https://github.com/kesla/parse-headers/>
- * Copyright (c) 2014 David Björklund
- * Available under the MIT license
- * <https://github.com/kesla/parse-headers/blob/master/LICENCE>
- */
- var $t = function (e) {
- var n = {}
- return (
- e &&
- e
- .trim()
- .split('\n')
- .forEach(function (e) {
- var t = e.indexOf(':'),
- i = e.slice(0, t).trim().toLowerCase(),
- t = e.slice(t + 1).trim()
- 'undefined' == typeof n[i] ? (n[i] = t) : Array.isArray(n[i]) ? n[i].push(t) : (n[i] = [n[i], t])
- }),
- n
- )
- },
- Jt = ei,
- I = ei
- function Zt(e, t, i) {
- var n = e
- return Yt(t) ? ((i = t), 'string' == typeof e && (n = { uri: e })) : (n = g({}, t, { uri: e })), (n.callback = i), n
- }
- function ei(e, t, i) {
- return ti((t = Zt(e, t, i)))
- }
- function ti(n) {
- if ('undefined' == typeof n.callback) throw new Error('callback argument missing')
- var r = !1,
- a = function (e, t, i) {
- r || ((r = !0), n.callback(e, t, i))
- }
- function s() {
- var e = void 0,
- e =
- l.response ||
- l.responseText ||
- (function (e) {
- try {
- if ('document' === e.responseType) return e.responseXML
- var t = e.responseXML && 'parsererror' === e.responseXML.documentElement.nodeName
- if ('' === e.responseType && !t) return e.responseXML
- } catch (e) {}
- return null
- })(l)
- if (m)
- try {
- e = JSON.parse(e)
- } catch (e) {}
- return e
- }
- function t(e) {
- return clearTimeout(u), ((e = !(e instanceof Error) ? new Error('' + (e || 'Unknown XMLHttpRequest Error')) : e).statusCode = 0), a(e, g)
- }
- function e() {
- if (!o) {
- clearTimeout(u)
- var e = n.useXDR && void 0 === l.status ? 200 : 1223 === l.status ? 204 : l.status,
- t = g,
- i = null
- return (
- 0 !== e
- ? ((t = { body: s(), statusCode: e, method: d, headers: {}, url: c, rawRequest: l }), l.getAllResponseHeaders && (t.headers = $t(l.getAllResponseHeaders())))
- : (i = new Error('Internal XMLHttpRequest Error')),
- a(i, t, t.body)
- )
- }
- }
- var i,
- o,
- u,
- l = n.xhr || null,
- c = ((l = l || new (n.cors || n.useXDR ? ei.XDomainRequest : ei.XMLHttpRequest)()).url = n.uri || n.url),
- d = (l.method = n.method || 'GET'),
- h = n.body || n.data,
- p = (l.headers = n.headers || {}),
- f = !!n.sync,
- m = !1,
- g = { body: void 0, headers: {}, statusCode: 0, method: d, url: c, rawRequest: l }
- if (
- ('json' in n &&
- !1 !== n.json &&
- ((m = !0),
- p.accept || p.Accept || (p.Accept = 'application/json'),
- 'GET' !== d && 'HEAD' !== d && (p['content-type'] || p['Content-Type'] || (p['Content-Type'] = 'application/json'), (h = JSON.stringify(!0 === n.json ? h : n.json)))),
- (l.onreadystatechange = function () {
- 4 === l.readyState && setTimeout(e, 0)
- }),
- (l.onload = e),
- (l.onerror = t),
- (l.onprogress = function () {}),
- (l.onabort = function () {
- o = !0
- }),
- (l.ontimeout = t),
- l.open(d, c, !f, n.username, n.password),
- f || (l.withCredentials = !!n.withCredentials),
- !f &&
- 0 < n.timeout &&
- (u = setTimeout(function () {
- var e
- o || ((o = !0), l.abort('timeout'), ((e = new Error('XMLHttpRequest timeout')).code = 'ETIMEDOUT'), t(e))
- }, n.timeout)),
- l.setRequestHeader)
- )
- for (i in p) p.hasOwnProperty(i) && l.setRequestHeader(i, p[i])
- else if (
- n.headers &&
- !(function (e) {
- for (var t in e) if (e.hasOwnProperty(t)) return
- return 1
- })(n.headers)
- )
- throw new Error('Headers cannot be set on an XDomainRequest object')
- return 'responseType' in n && (l.responseType = n.responseType), 'beforeSend' in n && 'function' == typeof n.beforeSend && n.beforeSend(l), l.send(h || null), l
- }
- ;(ei.XMLHttpRequest = Kt.XMLHttpRequest || function () {}),
- (ei.XDomainRequest = 'withCredentials' in new ei.XMLHttpRequest() ? ei.XMLHttpRequest : Kt.XDomainRequest),
- (function (e, t) {
- for (var i = 0; i < e.length; i++) t(e[i])
- })(['get', 'put', 'post', 'patch', 'head', 'delete'], function (n) {
- ei['delete' === n ? 'del' : n] = function (e, t, i) {
- return ((t = Zt(e, t, i)).method = n.toUpperCase()), ti(t)
- }
- }),
- (Jt.default = I)
- function ii(e, t) {
- var i = new window.WebVTT.Parser(window, window.vttjs, window.WebVTT.StringDecoder()),
- n = []
- ;(i.oncue = function (e) {
- t.addCue(e)
- }),
- (i.onparsingerror = function (e) {
- n.push(e)
- }),
- (i.onflush = function () {
- t.trigger({ type: 'loadeddata', target: t })
- }),
- i.parse(e),
- 0 < n.length &&
- (window.console && window.console.groupCollapsed && window.console.groupCollapsed('Text Track parsing errors for ' + t.src),
- n.forEach(function (e) {
- return h.error(e)
- }),
- window.console && window.console.groupEnd && window.console.groupEnd()),
- i.flush()
- }
- function ni(e, n) {
- var t = { uri: e }
- ;(e = Ut(e)) && (t.cors = e),
- (e = 'use-credentials' === n.tech_.crossOrigin()) && (t.withCredentials = e),
- Jt(
- t,
- Ve(this, function (e, t, i) {
- return e
- ? h.error(e, t)
- : ((n.loaded_ = !0),
- void ('function' != typeof window.WebVTT
- ? n.tech_ &&
- n.tech_.any(['vttjsloaded', 'vttjserror'], function (e) {
- return 'vttjserror' !== e.type ? ii(i, n) : void h.error('vttjs failed to load, stopping trying to process ' + n.src)
- })
- : ii(i, n)))
- })
- )
- }
- var ri = (function (a) {
- function e(e) {
- var t
- if (!(e = void 0 === e ? {} : e).tech) throw new Error('A tech was not provided.')
- var e = lt(e, { kind: Wt[e.kind] || 'subtitles', language: e.language || e.srclang || '' }),
- i = Gt[e.mode] || 'disabled',
- n = e.default
- ;('metadata' !== e.kind && 'chapters' !== e.kind) || (i = 'hidden'),
- ((t = a.call(this, e) || this).tech_ = e.tech),
- (t.cues_ = []),
- (t.activeCues_ = []),
- (t.preload_ = !1 !== t.tech_.preloadTextTracks)
- var r = new Ht(t.cues_),
- s = new Ht(t.activeCues_),
- o = !1
- t.timeupdateHandler = Ve(ft(t), function () {
- this.tech_.isDisposed() ||
- (this.tech_.isReady_ && ((this.activeCues = this.activeCues), o && (this.trigger('cuechange'), (o = !1))),
- (this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler)))
- })
- return (
- t.tech_.one('dispose', function () {
- t.stopTracking()
- }),
- 'disabled' !== i && t.startTracking(),
- Object.defineProperties(ft(t), {
- default: {
- get: function () {
- return n
- },
- set: function () {},
- },
- mode: {
- get: function () {
- return i
- },
- set: function (e) {
- Gt[e] &&
- i !== e &&
- ((i = e),
- this.preload_ || 'disabled' === i || 0 !== this.cues.length || ni(this.src, this),
- this.stopTracking(),
- 'disabled' !== i && this.startTracking(),
- this.trigger('modechange'))
- },
- },
- cues: {
- get: function () {
- return this.loaded_ ? r : null
- },
- set: function () {},
- },
- activeCues: {
- get: function () {
- if (!this.loaded_) return null
- if (0 === this.cues.length) return s
- for (var e = this.tech_.currentTime(), t = [], i = 0, n = this.cues.length; i < n; i++) {
- var r = this.cues[i]
- ;((r.startTime <= e && r.endTime >= e) || (r.startTime === r.endTime && r.startTime <= e && r.startTime + 0.5 >= e)) && t.push(r)
- }
- if (((o = !1), t.length !== this.activeCues_.length)) o = !0
- else for (var a = 0; a < t.length; a++) -1 === this.activeCues_.indexOf(t[a]) && (o = !0)
- return (this.activeCues_ = t), s.setCues_(this.activeCues_), s
- },
- set: function () {},
- },
- }),
- e.src ? ((t.src = e.src), t.preload_ || (t.loaded_ = !0), (t.preload_ || ('subtitles' !== e.kind && 'captions' !== e.kind)) && ni(t.src, ft(t))) : (t.loaded_ = !0),
- t
- )
- }
- mt(e, a)
- var t = e.prototype
- return (
- (t.startTracking = function () {
- this.rvf_ = this.tech_.requestVideoFrameCallback(this.timeupdateHandler)
- }),
- (t.stopTracking = function () {
- this.rvf_ && (this.tech_.cancelVideoFrameCallback(this.rvf_), (this.rvf_ = void 0))
- }),
- (t.addCue = function (e) {
- var t = e
- if (window.vttjs && !(e instanceof window.vttjs.VTTCue)) {
- for (var i in ((t = new window.vttjs.VTTCue(e.startTime, e.endTime, e.text)), e)) i in t || (t[i] = e[i])
- ;(t.id = e.id), (t.originalCue_ = e)
- }
- for (var n = this.tech_.textTracks(), r = 0; r < n.length; r++) n[r] !== this && n[r].removeCue(t)
- this.cues_.push(t), this.cues.setCues_(this.cues_)
- }),
- (t.removeCue = function (e) {
- for (var t = this.cues_.length; t--; ) {
- var i = this.cues_[t]
- if (i === e || (i.originalCue_ && i.originalCue_ === e)) {
- this.cues_.splice(t, 1), this.cues.setCues_(this.cues_)
- break
- }
- }
- }),
- e
- )
- })(C)
- ri.prototype.allowedEvents_ = { cuechange: 'cuechange' }
- ;(x = (function (n) {
- function e(e) {
- var t = lt((e = void 0 === e ? {} : e), { kind: Vt[e.kind] || '' }),
- e = n.call(this, t) || this,
- i = !1
- return (
- Object.defineProperty(ft(e), 'enabled', {
- get: function () {
- return i
- },
- set: function (e) {
- 'boolean' == typeof e && e !== i && ((i = e), this.trigger('enabledchange'))
- },
- }),
- t.enabled && (e.enabled = t.enabled),
- (e.loaded_ = !0),
- e
- )
- }
- return mt(e, n), e
- })(C)),
- (U = (function (n) {
- function e(e) {
- var t = lt((e = void 0 === e ? {} : e), { kind: qt[e.kind] || '' }),
- e = n.call(this, t) || this,
- i = !1
- return (
- Object.defineProperty(ft(e), 'selected', {
- get: function () {
- return i
- },
- set: function (e) {
- 'boolean' == typeof e && e !== i && ((i = e), this.trigger('selectedchange'))
- },
- }),
- t.selected && (e.selected = t.selected),
- e
- )
- }
- return mt(e, n), e
- })(C)),
- (j = (function (r) {
- function e(e) {
- var t
- void 0 === e && (e = {})
- var i = r.call(this) || this,
- n = new ri(e)
- return (
- (i.kind = n.kind),
- (i.src = n.src),
- (i.srclang = n.language),
- (i.label = n.label),
- (i.default = n.default),
- Object.defineProperties(ft(i), {
- readyState: {
- get: function () {
- return t
- },
- },
- track: {
- get: function () {
- return n
- },
- },
- }),
- (t = 0),
- n.addEventListener('loadeddata', function () {
- ;(t = 2), i.trigger({ type: 'load', target: ft(i) })
- }),
- i
- )
- }
- return mt(e, r), e
- })(ze))
- ;(j.prototype.allowedEvents_ = { load: 'load' }), (j.NONE = 0), (j.LOADING = 1), (j.LOADED = 2), (j.ERROR = 3)
- var ai = {
- audio: { ListClass: Bt, TrackClass: x, capitalName: 'Audio' },
- video: { ListClass: Ft, TrackClass: U, capitalName: 'Video' },
- text: { ListClass: k, TrackClass: ri, capitalName: 'Text' },
- }
- Object.keys(ai).forEach(function (e) {
- ;(ai[e].getterName = e + 'Tracks'), (ai[e].privateName = e + 'Tracks_')
- })
- var si = {
- remoteText: { ListClass: k, TrackClass: ri, capitalName: 'RemoteText', getterName: 'remoteTextTracks', privateName: 'remoteTextTracks_' },
- remoteTextEl: { ListClass: jt, TrackClass: j, capitalName: 'RemoteTextTrackEls', getterName: 'remoteTextTrackEls', privateName: 'remoteTextTrackEls_' },
- },
- oi = g({}, ai, si)
- ;(si.names = Object.keys(si)), (ai.names = Object.keys(ai)), (oi.names = [].concat(si.names).concat(ai.names))
- var ui = 'undefined' != typeof f ? f : 'undefined' != typeof window ? window : {},
- li = 'undefined' != typeof document ? document : (li = ui['__GLOBAL_DOCUMENT_CACHE@4']) || (ui['__GLOBAL_DOCUMENT_CACHE@4'] = {}),
- Xt = li,
- ci =
- Object.create ||
- function (e) {
- if (1 !== arguments.length) throw new Error('Object.create shim only accepts one parameter.')
- return (di.prototype = e), new di()
- }
- function di() {}
- function hi(e, t) {
- ;(this.name = 'ParsingError'), (this.code = e.code), (this.message = t || e.message)
- }
- function pi(e) {
- function t(e, t, i, n) {
- return 3600 * (0 | e) + 60 * (0 | t) + (0 | i) + (0 | n) / 1e3
- }
- e = e.match(/^(\d+):(\d{1,2})(:\d{1,2})?\.(\d{3})/)
- return e ? (e[3] ? t(e[1], e[2], e[3].replace(':', ''), e[4]) : 59 < e[1] ? t(e[1], e[2], 0, e[4]) : t(0, e[1], e[2], e[4])) : null
- }
- function fi() {
- this.values = ci(null)
- }
- function mi(e, t, i, n) {
- var r,
- a,
- s = n ? e.split(n) : [e]
- for (r in s) 'string' == typeof s[r] && 2 === (a = s[r].split(i)).length && t(a[0], a[1])
- }
- function gi(t, e, s) {
- var i = t
- function n() {
- var e = pi(t)
- if (null === e) throw new hi(hi.Errors.BadTimeStamp, 'Malformed timestamp: ' + i)
- return (t = t.replace(/^[^\sa-zA-Z-]+/, '')), e
- }
- function r() {
- t = t.replace(/^\s+/, '')
- }
- if ((r(), (e.startTime = n()), r(), '--\x3e' !== t.substr(0, 3))) throw new hi(hi.Errors.BadTimeStamp, "Malformed time stamp (time stamps must be separated by '--\x3e'): " + i)
- ;(t = t.substr(3)),
- r(),
- (e.endTime = n()),
- r(),
- (function (e, t) {
- var a = new fi()
- mi(
- e,
- function (e, t) {
- switch (e) {
- case 'region':
- for (var i = s.length - 1; 0 <= i; i--)
- if (s[i].id === t) {
- a.set(e, s[i].region)
- break
- }
- break
- case 'vertical':
- a.alt(e, t, ['rl', 'lr'])
- break
- case 'line':
- var n = t.split(','),
- r = n[0]
- a.integer(e, r), a.percent(e, r) && a.set('snapToLines', !1), a.alt(e, r, ['auto']), 2 === n.length && a.alt('lineAlign', n[1], ['start', 'center', 'end'])
- break
- case 'position':
- ;(n = t.split(',')), a.percent(e, n[0]), 2 === n.length && a.alt('positionAlign', n[1], ['start', 'center', 'end'])
- break
- case 'size':
- a.percent(e, t)
- break
- case 'align':
- a.alt(e, t, ['start', 'center', 'end', 'left', 'right'])
- }
- },
- /:/,
- /\s/
- ),
- (t.region = a.get('region', null)),
- (t.vertical = a.get('vertical', ''))
- try {
- t.line = a.get('line', 'auto')
- } catch (e) {}
- ;(t.lineAlign = a.get('lineAlign', 'start')), (t.snapToLines = a.get('snapToLines', !0)), (t.size = a.get('size', 100))
- try {
- t.align = a.get('align', 'center')
- } catch (e) {
- t.align = a.get('align', 'middle')
- }
- try {
- t.position = a.get('position', 'auto')
- } catch (e) {
- t.position = a.get('position', { start: 0, left: 0, center: 50, middle: 50, end: 100, right: 100 }, t.align)
- }
- t.positionAlign = a.get('positionAlign', { start: 'start', left: 'start', center: 'center', middle: 'center', end: 'end', right: 'end' }, t.align)
- })(t, e)
- }
- ;(((hi.prototype = ci(Error.prototype)).constructor = hi).Errors = {
- BadSignature: { code: 0, message: 'Malformed WebVTT signature.' },
- BadTimeStamp: { code: 1, message: 'Malformed time stamp.' },
- }),
- (fi.prototype = {
- set: function (e, t) {
- this.get(e) || '' === t || (this.values[e] = t)
- },
- get: function (e, t, i) {
- return i ? (this.has(e) ? this.values[e] : t[i]) : this.has(e) ? this.values[e] : t
- },
- has: function (e) {
- return e in this.values
- },
- alt: function (e, t, i) {
- for (var n = 0; n < i.length; ++n)
- if (t === i[n]) {
- this.set(e, t)
- break
- }
- },
- integer: function (e, t) {
- ;/^-?\d+$/.test(t) && this.set(e, parseInt(t, 10))
- },
- percent: function (e, t) {
- return !!(t.match(/^([\d]{1,3})(\.[\d]*)?%$/) && 0 <= (t = parseFloat(t)) && t <= 100) && (this.set(e, t), !0)
- },
- })
- var yi = Xt.createElement && Xt.createElement('textarea'),
- vi = { c: 'span', i: 'i', b: 'b', u: 'u', ruby: 'ruby', rt: 'rt', v: 'span', lang: 'span' },
- _i = {
- white: 'rgba(255,255,255,1)',
- lime: 'rgba(0,255,0,1)',
- cyan: 'rgba(0,255,255,1)',
- red: 'rgba(255,0,0,1)',
- yellow: 'rgba(255,255,0,1)',
- magenta: 'rgba(255,0,255,1)',
- blue: 'rgba(0,0,255,1)',
- black: 'rgba(0,0,0,1)',
- },
- bi = { v: 'title', lang: 'lang' },
- Ti = { rt: 'ruby' }
- function Si(e, t) {
- for (
- var i, n, r, a, s, o, u, l, c, d, h = e.document.createElement('div'), p = h, f = [];
- null !==
- (i = (function () {
- if (!t) return null
- var e = t.match(/^([^<]*)(<[^>]*>?)?/)
- return (e = e[1] || e[2]), (t = t.substr(e.length)), e
- })());
- )
- '<' !== i[0]
- ? p.appendChild(e.document.createTextNode(((s = i), (yi.innerHTML = s), (s = yi.textContent), (yi.textContent = ''), s)))
- : '/' !== i[1]
- ? (a = pi(i.substr(1, i.length - 2)))
- ? ((n = e.document.createProcessingInstruction('timestamp', a)), p.appendChild(n))
- : (r = i.match(/^<([^.\s/0-9>]+)(\.[^\s\\>]+)?([^>\\]+)?(\\?)>?$/)) &&
- ((l = r[1]),
- (c = r[3]),
- (d = void 0),
- (d = vi[l]),
- (n = d ? ((d = e.document.createElement(d)), (l = bi[l]) && c && (d[l] = c.trim()), d) : null) &&
- ((o = p),
- (Ti[(u = n).localName] && Ti[u.localName] !== o.localName) ||
- (r[2] &&
- ((a = r[2].split('.')).forEach(function (e) {
- var t = /^bg_/.test(e),
- e = t ? e.slice(3) : e
- _i.hasOwnProperty(e) && ((e = _i[e]), (n.style[t ? 'background-color' : 'color'] = e))
- }),
- (n.className = a.join(' '))),
- f.push(r[1]),
- p.appendChild(n),
- (p = n))))
- : f.length && f[f.length - 1] === i.substr(2).replace('>', '') && (f.pop(), (p = p.parentNode))
- return h
- }
- var wi = [
- [1470, 1470],
- [1472, 1472],
- [1475, 1475],
- [1478, 1478],
- [1488, 1514],
- [1520, 1524],
- [1544, 1544],
- [1547, 1547],
- [1549, 1549],
- [1563, 1563],
- [1566, 1610],
- [1645, 1647],
- [1649, 1749],
- [1765, 1766],
- [1774, 1775],
- [1786, 1805],
- [1807, 1808],
- [1810, 1839],
- [1869, 1957],
- [1969, 1969],
- [1984, 2026],
- [2036, 2037],
- [2042, 2042],
- [2048, 2069],
- [2074, 2074],
- [2084, 2084],
- [2088, 2088],
- [2096, 2110],
- [2112, 2136],
- [2142, 2142],
- [2208, 2208],
- [2210, 2220],
- [8207, 8207],
- [64285, 64285],
- [64287, 64296],
- [64298, 64310],
- [64312, 64316],
- [64318, 64318],
- [64320, 64321],
- [64323, 64324],
- [64326, 64449],
- [64467, 64829],
- [64848, 64911],
- [64914, 64967],
- [65008, 65020],
- [65136, 65140],
- [65142, 65276],
- [67584, 67589],
- [67592, 67592],
- [67594, 67637],
- [67639, 67640],
- [67644, 67644],
- [67647, 67669],
- [67671, 67679],
- [67840, 67867],
- [67872, 67897],
- [67903, 67903],
- [67968, 68023],
- [68030, 68031],
- [68096, 68096],
- [68112, 68115],
- [68117, 68119],
- [68121, 68147],
- [68160, 68167],
- [68176, 68184],
- [68192, 68223],
- [68352, 68405],
- [68416, 68437],
- [68440, 68466],
- [68472, 68479],
- [68608, 68680],
- [126464, 126467],
- [126469, 126495],
- [126497, 126498],
- [126500, 126500],
- [126503, 126503],
- [126505, 126514],
- [126516, 126519],
- [126521, 126521],
- [126523, 126523],
- [126530, 126530],
- [126535, 126535],
- [126537, 126537],
- [126539, 126539],
- [126541, 126543],
- [126545, 126546],
- [126548, 126548],
- [126551, 126551],
- [126553, 126553],
- [126555, 126555],
- [126557, 126557],
- [126559, 126559],
- [126561, 126562],
- [126564, 126564],
- [126567, 126570],
- [126572, 126578],
- [126580, 126583],
- [126585, 126588],
- [126590, 126590],
- [126592, 126601],
- [126603, 126619],
- [126625, 126627],
- [126629, 126633],
- [126635, 126651],
- [1114109, 1114109],
- ]
- function Ei(e) {
- var t = [],
- i = ''
- if (!e || !e.childNodes) return 'ltr'
- function a(e, t) {
- for (var i = t.childNodes.length - 1; 0 <= i; i--) e.push(t.childNodes[i])
- }
- for (
- a(t, e);
- (i = (function e(t) {
- if (!t || !t.length) return null
- var i = t.pop(),
- n = i.textContent || i.innerText
- if (n) {
- var r = n.match(/^.*(\n|\r)/)
- return r ? r[(t.length = 0)] : n
- }
- return 'ruby' === i.tagName ? e(t) : i.childNodes ? (a(t, i), e(t)) : void 0
- })(t));
- )
- for (var n = 0; n < i.length; n++)
- if (
- (function (e) {
- for (var t = 0; t < wi.length; t++) {
- var i = wi[t]
- if (e >= i[0] && e <= i[1]) return 1
- }
- })(i.charCodeAt(n))
- )
- return 'rtl'
- return 'ltr'
- }
- function ki() {}
- function Ci(e, t, i) {
- ki.call(this), (this.cue = t), (this.cueDiv = Si(e, t.text))
- var n = {
- color: 'rgba(255, 255, 255, 1)',
- backgroundColor: 'rgba(0, 0, 0, 0.8)',
- position: 'relative',
- left: 0,
- right: 0,
- top: 0,
- bottom: 0,
- display: 'inline',
- writingMode: '' === t.vertical ? 'horizontal-tb' : 'lr' === t.vertical ? 'vertical-lr' : 'vertical-rl',
- unicodeBidi: 'plaintext',
- }
- this.applyStyles(n, this.cueDiv),
- (this.div = e.document.createElement('div')),
- (n = {
- direction: Ei(this.cueDiv),
- writingMode: '' === t.vertical ? 'horizontal-tb' : 'lr' === t.vertical ? 'vertical-lr' : 'vertical-rl',
- unicodeBidi: 'plaintext',
- textAlign: 'middle' === t.align ? 'center' : t.align,
- font: i.font,
- whiteSpace: 'pre-line',
- position: 'absolute',
- }),
- this.applyStyles(n),
- this.div.appendChild(this.cueDiv)
- var r = 0
- switch (t.positionAlign) {
- case 'start':
- r = t.position
- break
- case 'center':
- r = t.position - t.size / 2
- break
- case 'end':
- r = t.position - t.size
- }
- '' === t.vertical
- ? this.applyStyles({ left: this.formatStyle(r, '%'), width: this.formatStyle(t.size, '%') })
- : this.applyStyles({ top: this.formatStyle(r, '%'), height: this.formatStyle(t.size, '%') }),
- (this.move = function (e) {
- this.applyStyles({
- top: this.formatStyle(e.top, 'px'),
- bottom: this.formatStyle(e.bottom, 'px'),
- left: this.formatStyle(e.left, 'px'),
- right: this.formatStyle(e.right, 'px'),
- height: this.formatStyle(e.height, 'px'),
- width: this.formatStyle(e.width, 'px'),
- })
- })
- }
- function Ii(e) {
- var t, i, n, r
- e.div &&
- ((t = e.div.offsetHeight),
- (i = e.div.offsetWidth),
- (n = e.div.offsetTop),
- (r = (r = e.div.childNodes) && (r = r[0]) && r.getClientRects && r.getClientRects()),
- (e = e.div.getBoundingClientRect()),
- (r = r ? Math.max((r[0] && r[0].height) || 0, e.height / r.length) : 0)),
- (this.left = e.left),
- (this.right = e.right),
- (this.top = e.top || n),
- (this.height = e.height || t),
- (this.bottom = e.bottom || n + (e.height || t)),
- (this.width = e.width || i),
- (this.lineHeight = void 0 !== r ? r : e.lineHeight)
- }
- function xi(e, t, o, u) {
- var i,
- n = new Ii(t),
- r = t.cue,
- a = (function (e) {
- if ('number' == typeof e.line && (e.snapToLines || (0 <= e.line && e.line <= 100))) return e.line
- if (!e.track || !e.track.textTrackList || !e.track.textTrackList.mediaElement) return -1
- for (var t = e.track, i = t.textTrackList, n = 0, r = 0; r < i.length && i[r] !== t; r++) 'showing' === i[r].mode && n++
- return -1 * ++n
- })(r),
- s = []
- if (r.snapToLines) {
- switch (r.vertical) {
- case '':
- ;(s = ['+y', '-y']), (i = 'height')
- break
- case 'rl':
- ;(s = ['+x', '-x']), (i = 'width')
- break
- case 'lr':
- ;(s = ['-x', '+x']), (i = 'width')
- }
- var l = n.lineHeight,
- c = l * Math.round(a),
- d = o[i] + l,
- h = s[0]
- Math.abs(c) > d && ((c = c < 0 ? -1 : 1), (c *= Math.ceil(d / l) * l)), a < 0 && ((c += '' === r.vertical ? o.height : o.width), (s = s.reverse())), n.move(h, c)
- } else {
- var p = (n.lineHeight / o.height) * 100
- switch (r.lineAlign) {
- case 'center':
- a -= p / 2
- break
- case 'end':
- a -= p
- }
- switch (r.vertical) {
- case '':
- t.applyStyles({ top: t.formatStyle(a, '%') })
- break
- case 'rl':
- t.applyStyles({ left: t.formatStyle(a, '%') })
- break
- case 'lr':
- t.applyStyles({ right: t.formatStyle(a, '%') })
- }
- ;(s = ['+y', '-x', '+x', '-y']), (n = new Ii(t))
- }
- n = (function (e, t) {
- for (var i, n = new Ii(e), r = 1, a = 0; a < t.length; a++) {
- for (; e.overlapsOppositeAxis(o, t[a]) || (e.within(o) && e.overlapsAny(u)); ) e.move(t[a])
- if (e.within(o)) return e
- var s = e.intersectPercentage(o)
- s < r && ((i = new Ii(e)), (r = s)), (e = new Ii(n))
- }
- return i || n
- })(n, s)
- t.move(n.toCSSCompatValues(o))
- }
- function Ai() {}
- ;(ki.prototype.applyStyles = function (e, t) {
- for (var i in ((t = t || this.div), e)) e.hasOwnProperty(i) && (t.style[i] = e[i])
- }),
- (ki.prototype.formatStyle = function (e, t) {
- return 0 === e ? 0 : e + t
- }),
- ((Ci.prototype = ci(ki.prototype)).constructor = Ci),
- (Ii.prototype.move = function (e, t) {
- switch (((t = void 0 !== t ? t : this.lineHeight), e)) {
- case '+x':
- ;(this.left += t), (this.right += t)
- break
- case '-x':
- ;(this.left -= t), (this.right -= t)
- break
- case '+y':
- ;(this.top += t), (this.bottom += t)
- break
- case '-y':
- ;(this.top -= t), (this.bottom -= t)
- }
- }),
- (Ii.prototype.overlaps = function (e) {
- return this.left < e.right && this.right > e.left && this.top < e.bottom && this.bottom > e.top
- }),
- (Ii.prototype.overlapsAny = function (e) {
- for (var t = 0; t < e.length; t++) if (this.overlaps(e[t])) return !0
- return !1
- }),
- (Ii.prototype.within = function (e) {
- return this.top >= e.top && this.bottom <= e.bottom && this.left >= e.left && this.right <= e.right
- }),
- (Ii.prototype.overlapsOppositeAxis = function (e, t) {
- switch (t) {
- case '+x':
- return this.left < e.left
- case '-x':
- return this.right > e.right
- case '+y':
- return this.top < e.top
- case '-y':
- return this.bottom > e.bottom
- }
- }),
- (Ii.prototype.intersectPercentage = function (e) {
- return (Math.max(0, Math.min(this.right, e.right) - Math.max(this.left, e.left)) * Math.max(0, Math.min(this.bottom, e.bottom) - Math.max(this.top, e.top))) / (this.height * this.width)
- }),
- (Ii.prototype.toCSSCompatValues = function (e) {
- return { top: this.top - e.top, bottom: e.bottom - this.bottom, left: this.left - e.left, right: e.right - this.right, height: this.height, width: this.width }
- }),
- (Ii.getSimpleBoxPosition = function (e) {
- var t = e.div ? e.div.offsetHeight : e.tagName ? e.offsetHeight : 0,
- i = e.div ? e.div.offsetWidth : e.tagName ? e.offsetWidth : 0,
- n = e.div ? e.div.offsetTop : e.tagName ? e.offsetTop : 0
- return {
- left: (e = e.div ? e.div.getBoundingClientRect() : e.tagName ? e.getBoundingClientRect() : e).left,
- right: e.right,
- top: e.top || n,
- height: e.height || t,
- bottom: e.bottom || n + (e.height || t),
- width: e.width || i,
- }
- }),
- (Ai.StringDecoder = function () {
- return {
- decode: function (e) {
- if (!e) return ''
- if ('string' != typeof e) throw new Error('Error - expected string data.')
- return decodeURIComponent(encodeURIComponent(e))
- },
- }
- }),
- (Ai.convertCueToDOMTree = function (e, t) {
- return e && t ? Si(e, t) : null
- })
- ;(Ai.processCues = function (n, r, e) {
- if (!n || !r || !e) return null
- for (; e.firstChild; ) e.removeChild(e.firstChild)
- var a = n.document.createElement('div')
- if (
- ((a.style.position = 'absolute'),
- (a.style.left = '0'),
- (a.style.right = '0'),
- (a.style.top = '0'),
- (a.style.bottom = '0'),
- (a.style.margin = '1.5%'),
- e.appendChild(a),
- (function (e) {
- for (var t = 0; t < e.length; t++) if (e[t].hasBeenReset || !e[t].displayState) return 1
- })(r))
- ) {
- var s = [],
- o = Ii.getSimpleBoxPosition(a),
- u = { font: Math.round(0.05 * o.height * 100) / 100 + 'px sans-serif' }
- !(function () {
- for (var e, t, i = 0; i < r.length; i++) (t = r[i]), (e = new Ci(n, t, u)), a.appendChild(e.div), xi(0, e, o, s), (t.displayState = e.div), s.push(Ii.getSimpleBoxPosition(e))
- })()
- } else for (var t = 0; t < r.length; t++) a.appendChild(r[t].displayState)
- }),
- ((Ai.Parser = function (e, t, i) {
- i || ((i = t), (t = {})),
- (t = t || {}),
- (this.window = e),
- (this.vttjs = t),
- (this.state = 'INITIAL'),
- (this.buffer = ''),
- (this.decoder = i || new TextDecoder('utf8')),
- (this.regionList = [])
- }).prototype = {
- reportOrThrowError: function (e) {
- if (!(e instanceof hi)) throw e
- this.onparsingerror && this.onparsingerror(e)
- },
- parse: function (e) {
- var n = this
- function t() {
- for (var e = n.buffer, t = 0; t < e.length && '\r' !== e[t] && '\n' !== e[t]; ) ++t
- var i = e.substr(0, t)
- return '\r' === e[t] && ++t, '\n' === e[t] && ++t, (n.buffer = e.substr(t)), i
- }
- function i(e) {
- e.match(/X-TIMESTAMP-MAP/)
- ? mi(
- e,
- function (e, t) {
- var i
- 'X-TIMESTAMP-MAP' === e &&
- ((t = t),
- (i = new fi()),
- mi(
- t,
- function (e, t) {
- switch (e) {
- case 'MPEGT':
- i.integer(e + 'S', t)
- break
- case 'LOCA':
- i.set(e + 'L', pi(t))
- }
- },
- /[^\d]:/,
- /,/
- ),
- n.ontimestampmap && n.ontimestampmap({ MPEGTS: i.get('MPEGTS'), LOCAL: i.get('LOCAL') }))
- },
- /=/
- )
- : mi(
- e,
- function (e, t) {
- var r
- 'Region' === e &&
- ((t = t),
- (r = new fi()),
- mi(
- t,
- function (e, t) {
- switch (e) {
- case 'id':
- r.set(e, t)
- break
- case 'width':
- r.percent(e, t)
- break
- case 'lines':
- r.integer(e, t)
- break
- case 'regionanchor':
- case 'viewportanchor':
- var i = t.split(',')
- if (2 !== i.length) break
- var n = new fi()
- if ((n.percent('x', i[0]), n.percent('y', i[1]), !n.has('x') || !n.has('y'))) break
- r.set(e + 'X', n.get('x')), r.set(e + 'Y', n.get('y'))
- break
- case 'scroll':
- r.alt(e, t, ['up'])
- }
- },
- /=/,
- /\s/
- ),
- r.has('id') &&
- (((t = new (n.vttjs.VTTRegion || n.window.VTTRegion)()).width = r.get('width', 100)),
- (t.lines = r.get('lines', 3)),
- (t.regionAnchorX = r.get('regionanchorX', 0)),
- (t.regionAnchorY = r.get('regionanchorY', 100)),
- (t.viewportAnchorX = r.get('viewportanchorX', 0)),
- (t.viewportAnchorY = r.get('viewportanchorY', 100)),
- (t.scroll = r.get('scroll', '')),
- n.onregion && n.onregion(t),
- n.regionList.push({ id: r.get('id'), region: t })))
- },
- /:/
- )
- }
- e && (n.buffer += n.decoder.decode(e, { stream: !0 }))
- try {
- if ('INITIAL' === n.state) {
- if (!/\r\n|\n/.test(n.buffer)) return this
- var r,
- a = (r = t()).match(/^WEBVTT([ \t].*)?$/)
- if (!a || !a[0]) throw new hi(hi.Errors.BadSignature)
- n.state = 'HEADER'
- }
- for (var s = !1; n.buffer; ) {
- if (!/\r\n|\n/.test(n.buffer)) return this
- switch ((s ? (s = !1) : (r = t()), n.state)) {
- case 'HEADER':
- ;/:/.test(r) ? i(r) : r || (n.state = 'ID')
- continue
- case 'NOTE':
- r || (n.state = 'ID')
- continue
- case 'ID':
- if (/^NOTE($|[ \t])/.test(r)) {
- n.state = 'NOTE'
- break
- }
- if (!r) continue
- n.cue = new (n.vttjs.VTTCue || n.window.VTTCue)(0, 0, '')
- try {
- n.cue.align = 'center'
- } catch (e) {
- n.cue.align = 'middle'
- }
- if (((n.state = 'CUE'), -1 === r.indexOf('--\x3e'))) {
- n.cue.id = r
- continue
- }
- case 'CUE':
- try {
- gi(r, n.cue, n.regionList)
- } catch (e) {
- n.reportOrThrowError(e), (n.cue = null), (n.state = 'BADCUE')
- continue
- }
- n.state = 'CUETEXT'
- continue
- case 'CUETEXT':
- var o = -1 !== r.indexOf('--\x3e')
- if (!r || (o && (s = !0))) {
- n.oncue && n.oncue(n.cue), (n.cue = null), (n.state = 'ID')
- continue
- }
- n.cue.text && (n.cue.text += '\n'), (n.cue.text += r.replace(/\u2028/g, '\n').replace(/u2029/g, '\n'))
- continue
- case 'BADCUE':
- r || (n.state = 'ID')
- continue
- }
- }
- } catch (e) {
- n.reportOrThrowError(e), 'CUETEXT' === n.state && n.cue && n.oncue && n.oncue(n.cue), (n.cue = null), (n.state = 'INITIAL' === n.state ? 'BADWEBVTT' : 'BADCUE')
- }
- return this
- },
- flush: function () {
- var t = this
- try {
- if (((t.buffer += t.decoder.decode()), (!t.cue && 'HEADER' !== t.state) || ((t.buffer += '\n\n'), t.parse()), 'INITIAL' === t.state)) throw new hi(hi.Errors.BadSignature)
- } catch (e) {
- t.reportOrThrowError(e)
- }
- return t.onflush && t.onflush(), this
- },
- })
- var Pi = Ai,
- Li = { '': 1, lr: 1, rl: 1 },
- Di = { start: 1, center: 1, end: 1, left: 1, right: 1, auto: 1, 'line-left': 1, 'line-right': 1 }
- function Oi(e) {
- return 'string' == typeof e && !!Di[e.toLowerCase()] && e.toLowerCase()
- }
- function Mi(e, t, i) {
- this.hasBeenReset = !1
- var n = '',
- r = !1,
- a = e,
- s = t,
- o = i,
- u = null,
- l = '',
- c = !0,
- d = 'auto',
- h = 'start',
- p = 'auto',
- f = 'auto',
- m = 100,
- g = 'center'
- Object.defineProperties(this, {
- id: {
- enumerable: !0,
- get: function () {
- return n
- },
- set: function (e) {
- n = '' + e
- },
- },
- pauseOnExit: {
- enumerable: !0,
- get: function () {
- return r
- },
- set: function (e) {
- r = !!e
- },
- },
- startTime: {
- enumerable: !0,
- get: function () {
- return a
- },
- set: function (e) {
- if ('number' != typeof e) throw new TypeError('Start time must be set to a number.')
- ;(a = e), (this.hasBeenReset = !0)
- },
- },
- endTime: {
- enumerable: !0,
- get: function () {
- return s
- },
- set: function (e) {
- if ('number' != typeof e) throw new TypeError('End time must be set to a number.')
- ;(s = e), (this.hasBeenReset = !0)
- },
- },
- text: {
- enumerable: !0,
- get: function () {
- return o
- },
- set: function (e) {
- ;(o = '' + e), (this.hasBeenReset = !0)
- },
- },
- region: {
- enumerable: !0,
- get: function () {
- return u
- },
- set: function (e) {
- ;(u = e), (this.hasBeenReset = !0)
- },
- },
- vertical: {
- enumerable: !0,
- get: function () {
- return l
- },
- set: function (e) {
- e = 'string' == typeof (e = e) && !!Li[e.toLowerCase()] && e.toLowerCase()
- if (!1 === e) throw new SyntaxError('Vertical: an invalid or illegal direction string was specified.')
- ;(l = e), (this.hasBeenReset = !0)
- },
- },
- snapToLines: {
- enumerable: !0,
- get: function () {
- return c
- },
- set: function (e) {
- ;(c = !!e), (this.hasBeenReset = !0)
- },
- },
- line: {
- enumerable: !0,
- get: function () {
- return d
- },
- set: function (e) {
- if ('number' != typeof e && 'auto' !== e) throw new SyntaxError('Line: an invalid number or illegal string was specified.')
- ;(d = e), (this.hasBeenReset = !0)
- },
- },
- lineAlign: {
- enumerable: !0,
- get: function () {
- return h
- },
- set: function (e) {
- e = Oi(e)
- e && ((h = e), (this.hasBeenReset = !0))
- },
- },
- position: {
- enumerable: !0,
- get: function () {
- return p
- },
- set: function (e) {
- if (e < 0 || 100 < e) throw new Error('Position must be between 0 and 100.')
- ;(p = e), (this.hasBeenReset = !0)
- },
- },
- positionAlign: {
- enumerable: !0,
- get: function () {
- return f
- },
- set: function (e) {
- e = Oi(e)
- e && ((f = e), (this.hasBeenReset = !0))
- },
- },
- size: {
- enumerable: !0,
- get: function () {
- return m
- },
- set: function (e) {
- if (e < 0 || 100 < e) throw new Error('Size must be between 0 and 100.')
- ;(m = e), (this.hasBeenReset = !0)
- },
- },
- align: {
- enumerable: !0,
- get: function () {
- return g
- },
- set: function (e) {
- e = Oi(e)
- if (!e) throw new SyntaxError('align: an invalid or illegal alignment string was specified.')
- ;(g = e), (this.hasBeenReset = !0)
- },
- },
- }),
- (this.displayState = void 0)
- }
- Mi.prototype.getCueAsHTML = function () {
- return WebVTT.convertCueToDOMTree(window, this.text)
- }
- var Ri = Mi,
- Ni = { '': !0, up: !0 }
- function Ui(e) {
- return 'number' == typeof e && 0 <= e && e <= 100
- }
- function Bi() {
- var t = 100,
- i = 3,
- n = 0,
- r = 100,
- a = 0,
- s = 100,
- o = ''
- Object.defineProperties(this, {
- width: {
- enumerable: !0,
- get: function () {
- return t
- },
- set: function (e) {
- if (!Ui(e)) throw new Error('Width must be between 0 and 100.')
- t = e
- },
- },
- lines: {
- enumerable: !0,
- get: function () {
- return i
- },
- set: function (e) {
- if ('number' != typeof e) throw new TypeError('Lines must be set to a number.')
- i = e
- },
- },
- regionAnchorY: {
- enumerable: !0,
- get: function () {
- return r
- },
- set: function (e) {
- if (!Ui(e)) throw new Error('RegionAnchorX must be between 0 and 100.')
- r = e
- },
- },
- regionAnchorX: {
- enumerable: !0,
- get: function () {
- return n
- },
- set: function (e) {
- if (!Ui(e)) throw new Error('RegionAnchorY must be between 0 and 100.')
- n = e
- },
- },
- viewportAnchorY: {
- enumerable: !0,
- get: function () {
- return s
- },
- set: function (e) {
- if (!Ui(e)) throw new Error('ViewportAnchorY must be between 0 and 100.')
- s = e
- },
- },
- viewportAnchorX: {
- enumerable: !0,
- get: function () {
- return a
- },
- set: function (e) {
- if (!Ui(e)) throw new Error('ViewportAnchorX must be between 0 and 100.')
- a = e
- },
- },
- scroll: {
- enumerable: !0,
- get: function () {
- return o
- },
- set: function (e) {
- e = 'string' == typeof (e = e) && !!Ni[e.toLowerCase()] && e.toLowerCase()
- !1 === e || (o = e)
- },
- },
- })
- }
- var Fi = m(function (e) {
- e = e.exports = { WebVTT: Pi, VTTCue: Ri, VTTRegion: Bi }
- ;(Kt.vttjs = e), (Kt.WebVTT = e.WebVTT)
- var t = e.VTTCue,
- i = e.VTTRegion,
- n = Kt.VTTCue,
- r = Kt.VTTRegion
- ;(e.shim = function () {
- ;(Kt.VTTCue = t), (Kt.VTTRegion = i)
- }),
- (e.restore = function () {
- ;(Kt.VTTCue = n), (Kt.VTTRegion = r)
- }),
- Kt.VTTCue || e.shim()
- })
- Fi.WebVTT, Fi.VTTCue, Fi.VTTRegion
- var ji = (function (n) {
- function i(t, e) {
- var i
- return (
- void 0 === e && (e = function () {}),
- ((t = void 0 === t ? {} : t).reportTouchActivity = !1),
- ((i = n.call(this, null, t, e) || this).onDurationChange_ = function (e) {
- return i.onDurationChange(e)
- }),
- (i.trackProgress_ = function (e) {
- return i.trackProgress(e)
- }),
- (i.trackCurrentTime_ = function (e) {
- return i.trackCurrentTime(e)
- }),
- (i.stopTrackingCurrentTime_ = function (e) {
- return i.stopTrackingCurrentTime(e)
- }),
- (i.disposeSourceHandler_ = function (e) {
- return i.disposeSourceHandler(e)
- }),
- (i.queuedHanders_ = new Set()),
- (i.hasStarted_ = !1),
- i.on('playing', function () {
- this.hasStarted_ = !0
- }),
- i.on('loadstart', function () {
- this.hasStarted_ = !1
- }),
- oi.names.forEach(function (e) {
- e = oi[e]
- t && t[e.getterName] && (i[e.privateName] = t[e.getterName])
- }),
- i.featuresProgressEvents || i.manualProgressOn(),
- i.featuresTimeupdateEvents || i.manualTimeUpdatesOn(),
- ['Text', 'Audio', 'Video'].forEach(function (e) {
- !1 === t['native' + e + 'Tracks'] && (i['featuresNative' + e + 'Tracks'] = !1)
- }),
- !1 === t.nativeCaptions || !1 === t.nativeTextTracks ? (i.featuresNativeTextTracks = !1) : (!0 !== t.nativeCaptions && !0 !== t.nativeTextTracks) || (i.featuresNativeTextTracks = !0),
- i.featuresNativeTextTracks || i.emulateTextTracks(),
- (i.preloadTextTracks = !1 !== t.preloadTextTracks),
- (i.autoRemoteTextTracks_ = new oi.text.ListClass()),
- i.initTrackListeners(),
- t.nativeControlsForTouch || i.emitTapEvents(),
- i.constructor && (i.name_ = i.constructor.name || 'Unknown Tech'),
- i
- )
- }
- mt(i, n)
- var e = i.prototype
- return (
- (e.triggerSourceset = function (e) {
- var t = this
- this.isReady_ ||
- this.one('ready', function () {
- return t.setTimeout(function () {
- return t.triggerSourceset(e)
- }, 1)
- }),
- this.trigger({ src: e, type: 'sourceset' })
- }),
- (e.manualProgressOn = function () {
- this.on('durationchange', this.onDurationChange_), (this.manualProgress = !0), this.one('ready', this.trackProgress_)
- }),
- (e.manualProgressOff = function () {
- ;(this.manualProgress = !1), this.stopTrackingProgress(), this.off('durationchange', this.onDurationChange_)
- }),
- (e.trackProgress = function (e) {
- this.stopTrackingProgress(),
- (this.progressInterval = this.setInterval(
- Ve(this, function () {
- var e = this.bufferedPercent()
- this.bufferedPercent_ !== e && this.trigger('progress'), 1 === (this.bufferedPercent_ = e) && this.stopTrackingProgress()
- }),
- 500
- ))
- }),
- (e.onDurationChange = function (e) {
- this.duration_ = this.duration()
- }),
- (e.buffered = function () {
- return vt(0, 0)
- }),
- (e.bufferedPercent = function () {
- return _t(this.buffered(), this.duration_)
- }),
- (e.stopTrackingProgress = function () {
- this.clearInterval(this.progressInterval)
- }),
- (e.manualTimeUpdatesOn = function () {
- ;(this.manualTimeUpdates = !0), this.on('play', this.trackCurrentTime_), this.on('pause', this.stopTrackingCurrentTime_)
- }),
- (e.manualTimeUpdatesOff = function () {
- ;(this.manualTimeUpdates = !1), this.stopTrackingCurrentTime(), this.off('play', this.trackCurrentTime_), this.off('pause', this.stopTrackingCurrentTime_)
- }),
- (e.trackCurrentTime = function () {
- this.currentTimeInterval && this.stopTrackingCurrentTime(),
- (this.currentTimeInterval = this.setInterval(function () {
- this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 })
- }, 250))
- }),
- (e.stopTrackingCurrentTime = function () {
- this.clearInterval(this.currentTimeInterval), this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 })
- }),
- (e.dispose = function () {
- this.clearTracks(ai.names), this.manualProgress && this.manualProgressOff(), this.manualTimeUpdates && this.manualTimeUpdatesOff(), n.prototype.dispose.call(this)
- }),
- (e.clearTracks = function (e) {
- var r = this
- ;(e = [].concat(e)).forEach(function (e) {
- for (var t = r[e + 'Tracks']() || [], i = t.length; i--; ) {
- var n = t[i]
- 'text' === e && r.removeRemoteTextTrack(n), t.removeTrack(n)
- }
- })
- }),
- (e.cleanupAutoTextTracks = function () {
- for (var e = this.autoRemoteTextTracks_ || [], t = e.length; t--; ) {
- var i = e[t]
- this.removeRemoteTextTrack(i)
- }
- }),
- (e.reset = function () {}),
- (e.crossOrigin = function () {}),
- (e.setCrossOrigin = function () {}),
- (e.error = function (e) {
- return void 0 !== e && ((this.error_ = new bt(e)), this.trigger('error')), this.error_
- }),
- (e.played = function () {
- return this.hasStarted_ ? vt(0, 0) : vt()
- }),
- (e.play = function () {}),
- (e.setScrubbing = function () {}),
- (e.scrubbing = function () {}),
- (e.setCurrentTime = function () {
- this.manualTimeUpdates && this.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 })
- }),
- (e.initTrackListeners = function () {
- var r = this
- ai.names.forEach(function (e) {
- function t() {
- r.trigger(e + 'trackchange')
- }
- var i = ai[e],
- n = r[i.getterName]()
- n.addEventListener('removetrack', t),
- n.addEventListener('addtrack', t),
- r.on('dispose', function () {
- n.removeEventListener('removetrack', t), n.removeEventListener('addtrack', t)
- })
- })
- }),
- (e.addWebVttScript_ = function () {
- var e,
- t = this
- window.WebVTT ||
- (document.body.contains(this.el())
- ? !this.options_['vtt.js'] && S(Fi) && 0 < Object.keys(Fi).length
- ? this.trigger('vttjsloaded')
- : (((e = document.createElement('script')).src = this.options_['vtt.js'] || 'https://vjs.zencdn.net/vttjs/0.14.1/vtt.min.js'),
- (e.onload = function () {
- t.trigger('vttjsloaded')
- }),
- (e.onerror = function () {
- t.trigger('vttjserror')
- }),
- this.on('dispose', function () {
- ;(e.onload = null), (e.onerror = null)
- }),
- (window.WebVTT = !0),
- this.el().parentNode.appendChild(e))
- : this.ready(this.addWebVttScript_))
- }),
- (e.emulateTextTracks = function () {
- function t(e) {
- return n.addTrack(e.track)
- }
- function i(e) {
- return n.removeTrack(e.track)
- }
- var e = this,
- n = this.textTracks(),
- r = this.remoteTextTracks()
- r.on('addtrack', t), r.on('removetrack', i), this.addWebVttScript_()
- function a() {
- return e.trigger('texttrackchange')
- }
- function s() {
- a()
- for (var e = 0; e < n.length; e++) {
- var t = n[e]
- t.removeEventListener('cuechange', a), 'showing' === t.mode && t.addEventListener('cuechange', a)
- }
- }
- s(),
- n.addEventListener('change', s),
- n.addEventListener('addtrack', s),
- n.addEventListener('removetrack', s),
- this.on('dispose', function () {
- r.off('addtrack', t), r.off('removetrack', i), n.removeEventListener('change', s), n.removeEventListener('addtrack', s), n.removeEventListener('removetrack', s)
- for (var e = 0; e < n.length; e++) n[e].removeEventListener('cuechange', a)
- })
- }),
- (e.addTextTrack = function (e, t, i) {
- if (!e) throw new Error('TextTrack kind is required but was not provided')
- return (function (e, t, i, n, r) {
- void 0 === r && (r = {})
- var a = e.textTracks()
- return (r.kind = t), i && (r.label = i), n && (r.language = n), (r.tech = e), (r = new oi.text.TrackClass(r)), a.addTrack(r), r
- })(this, e, t, i)
- }),
- (e.createRemoteTextTrack = function (e) {
- e = lt(e, { tech: this })
- return new si.remoteTextEl.TrackClass(e)
- }),
- (e.addRemoteTextTrack = function (e, t) {
- var i = this,
- n = this.createRemoteTextTrack((e = void 0 === e ? {} : e))
- return (
- !0 !== t &&
- !1 !== t &&
- (h.warn('Calling addRemoteTextTrack without explicitly setting the "manualCleanup" parameter to `true` is deprecated and default to `false` in future version of video.js'),
- (t = !0)),
- this.remoteTextTrackEls().addTrackElement_(n),
- this.remoteTextTracks().addTrack(n.track),
- !0 !== t &&
- this.ready(function () {
- return i.autoRemoteTextTracks_.addTrack(n.track)
- }),
- n
- )
- }),
- (e.removeRemoteTextTrack = function (e) {
- var t = this.remoteTextTrackEls().getTrackElementByTrack_(e)
- this.remoteTextTrackEls().removeTrackElement_(t), this.remoteTextTracks().removeTrack(e), this.autoRemoteTextTracks_.removeTrack(e)
- }),
- (e.getVideoPlaybackQuality = function () {
- return {}
- }),
- (e.requestPictureInPicture = function () {
- var e = this.options_.Promise || window.Promise
- if (e) return e.reject()
- }),
- (e.disablePictureInPicture = function () {
- return !0
- }),
- (e.setDisablePictureInPicture = function () {}),
- (e.requestVideoFrameCallback = function (e) {
- var t = this,
- i = Pe++
- return (
- this.paused()
- ? (this.queuedHanders_.add(i),
- this.one('playing', function () {
- t.queuedHanders_.has(i) && (t.queuedHanders_.delete(i), e())
- }))
- : this.requestNamedAnimationFrame(i, e),
- i
- )
- }),
- (e.cancelVideoFrameCallback = function (e) {
- this.queuedHanders_.has(e) ? this.queuedHanders_.delete(e) : this.cancelNamedAnimationFrame(e)
- }),
- (e.setPoster = function () {}),
- (e.playsinline = function () {}),
- (e.setPlaysinline = function () {}),
- (e.overrideNativeAudioTracks = function () {}),
- (e.overrideNativeVideoTracks = function () {}),
- (e.canPlayType = function () {
- return ''
- }),
- (i.canPlayType = function () {
- return ''
- }),
- (i.canPlaySource = function (e, t) {
- return i.canPlayType(e.type)
- }),
- (i.isTech = function (e) {
- return e.prototype instanceof i || e instanceof i || e === i
- }),
- (i.registerTech = function (e, t) {
- if ((i.techs_ || (i.techs_ = {}), !i.isTech(t))) throw new Error('Tech ' + e + ' must be a Tech')
- if (!i.canPlayType) throw new Error('Techs must have a static canPlayType method on them')
- if (!i.canPlaySource) throw new Error('Techs must have a static canPlaySource method on them')
- return (e = ut(e)), (i.techs_[e] = t), (i.techs_[ot(e)] = t), 'Tech' !== e && i.defaultTechOrder_.push(e), t
- }),
- (i.getTech = function (e) {
- if (e)
- return i.techs_ && i.techs_[e]
- ? i.techs_[e]
- : ((e = ut(e)),
- window && window.videojs && window.videojs[e]
- ? (h.warn('The ' + e + ' tech was added to the videojs object when it should be registered using videojs.registerTech(name, tech)'), window.videojs[e])
- : void 0)
- }),
- i
- )
- })(pt)
- oi.names.forEach(function (e) {
- var t = oi[e]
- ji.prototype[t.getterName] = function () {
- return (this[t.privateName] = this[t.privateName] || new t.ListClass()), this[t.privateName]
- }
- }),
- (ji.prototype.featuresVolumeControl = !0),
- (ji.prototype.featuresMuteControl = !0),
- (ji.prototype.featuresFullscreenResize = !1),
- (ji.prototype.featuresPlaybackRate = !1),
- (ji.prototype.featuresProgressEvents = !1),
- (ji.prototype.featuresSourceset = !1),
- (ji.prototype.featuresTimeupdateEvents = !1),
- (ji.prototype.featuresNativeTextTracks = !1),
- (ji.prototype.featuresVideoFrameCallback = !1),
- (ji.withSourceHandlers = function (r) {
- ;(r.registerSourceHandler = function (e, t) {
- var i = (i = r.sourceHandlers) || (r.sourceHandlers = [])
- void 0 === t && (t = i.length), i.splice(t, 0, e)
- }),
- (r.canPlayType = function (e) {
- for (var t, i = r.sourceHandlers || [], n = 0; n < i.length; n++) if ((t = i[n].canPlayType(e))) return t
- return ''
- }),
- (r.selectSourceHandler = function (e, t) {
- for (var i = r.sourceHandlers || [], n = 0; n < i.length; n++) if (i[n].canHandleSource(e, t)) return i[n]
- return null
- }),
- (r.canPlaySource = function (e, t) {
- var i = r.selectSourceHandler(e, t)
- return i ? i.canHandleSource(e, t) : ''
- })
- ;['seekable', 'seeking', 'duration'].forEach(function (e) {
- var t = this[e]
- 'function' == typeof t &&
- (this[e] = function () {
- return this.sourceHandler_ && this.sourceHandler_[e] ? this.sourceHandler_[e].apply(this.sourceHandler_, arguments) : t.apply(this, arguments)
- })
- }, r.prototype),
- (r.prototype.setSource = function (e) {
- var t = r.selectSourceHandler(e, this.options_)
- t || (r.nativeSourceHandler ? (t = r.nativeSourceHandler) : h.error('No source handler found for the current source.')),
- this.disposeSourceHandler(),
- this.off('dispose', this.disposeSourceHandler_),
- t !== r.nativeSourceHandler && (this.currentSource_ = e),
- (this.sourceHandler_ = t.handleSource(e, this, this.options_)),
- this.one('dispose', this.disposeSourceHandler_)
- }),
- (r.prototype.disposeSourceHandler = function () {
- this.currentSource_ && (this.clearTracks(['audio', 'video']), (this.currentSource_ = null)),
- this.cleanupAutoTextTracks(),
- this.sourceHandler_ && (this.sourceHandler_.dispose && this.sourceHandler_.dispose(), (this.sourceHandler_ = null))
- })
- }),
- pt.registerComponent('Tech', ji),
- ji.registerTech('Tech', ji),
- (ji.defaultTechOrder_ = [])
- var Hi = {},
- qi = {},
- Vi = {}
- function Wi(e, t, i) {
- e.setTimeout(function () {
- return (function i(n, e, r, a, s, o) {
- void 0 === n && (n = {})
- void 0 === e && (e = [])
- void 0 === s && (s = [])
- void 0 === o && (o = !1)
- var t = e,
- e = t[0],
- u = t.slice(1)
- if ('string' == typeof e) i(n, Hi[e], r, a, s, o)
- else if (e) {
- var l = Qi(a, e)
- if (!l.setSource) return s.push(l), i(n, u, r, a, s, o)
- l.setSource(b({}, n), function (e, t) {
- return e ? i(n, u, r, a, s, o) : (s.push(l), void i(t, n.type === t.type ? u : Hi[t.type], r, a, s, o))
- })
- } else u.length ? i(n, u, r, a, s, o) : o ? r(n, s) : i(n, Hi['*'], r, a, s, !0)
- })(t, Hi[t.type], i, e)
- }, 1)
- }
- function Gi(e, t, i, n) {
- void 0 === n && (n = null)
- var r = 'call' + ut(i),
- r = e.reduce(Yi(r), n),
- n = r === Vi,
- r = n ? null : t[i](r)
- return (
- (function (e, t, i, n) {
- for (var r = e.length - 1; 0 <= r; r--) {
- var a = e[r]
- a[t] && a[t](n, i)
- }
- })(e, i, r, n),
- r
- )
- }
- var zi = { buffered: 1, currentTime: 1, duration: 1, muted: 1, played: 1, paused: 1, seekable: 1, volume: 1, ended: 1 },
- Xi = { setCurrentTime: 1, setMuted: 1, setVolume: 1 },
- Ki = { play: 1, pause: 1 }
- function Yi(i) {
- return function (e, t) {
- return e === Vi ? Vi : t[i] ? t[i](e) : e
- }
- }
- function Qi(e, t) {
- var i = qi[e.id()],
- n = null
- if (null == i) return (n = t(e)), (qi[e.id()] = [[t, n]]), n
- for (var r = 0; r < i.length; r++) {
- var a = i[r],
- s = a[0],
- a = a[1]
- s === t && (n = a)
- }
- return null === n && ((n = t(e)), i.push([t, n])), n
- }
- function $i(e) {
- return (e = Nt((e = void 0 === e ? '' : e))), Zi[e.toLowerCase()] || ''
- }
- function Ji(e) {
- var t
- return (e = Array.isArray(e)
- ? ((t = []),
- e.forEach(function (e) {
- ;(e = Ji(e)), Array.isArray(e) ? (t = t.concat(e)) : T(e) && t.push(e)
- }),
- t)
- : 'string' == typeof e && e.trim()
- ? [en({ src: e })]
- : T(e) && 'string' == typeof e.src && e.src && e.src.trim()
- ? [en(e)]
- : [])
- }
- var Zi = {
- opus: 'video/ogg',
- ogv: 'video/ogg',
- mp4: 'video/mp4',
- mov: 'video/mp4',
- m4v: 'video/mp4',
- mkv: 'video/x-matroska',
- m4a: 'audio/mp4',
- mp3: 'audio/mpeg',
- aac: 'audio/aac',
- caf: 'audio/x-caf',
- flac: 'audio/flac',
- oga: 'audio/ogg',
- wav: 'audio/wav',
- m3u8: 'application/x-mpegURL',
- mpd: 'application/dash+xml',
- jpg: 'image/jpeg',
- jpeg: 'image/jpeg',
- gif: 'image/gif',
- png: 'image/png',
- svg: 'image/svg+xml',
- webp: 'image/webp',
- }
- function en(e) {
- var t
- return e.type || ((t = $i(e.src)) && (e.type = t)), e
- }
- I = (function (u) {
- function e(e, t, i) {
- var n = lt({ createEl: !1 }, t),
- i = u.call(this, e, n, i) || this
- if (t.playerOptions.sources && 0 !== t.playerOptions.sources.length) e.src(t.playerOptions.sources)
- else
- for (var r = 0, a = t.playerOptions.techOrder; r < a.length; r++) {
- var s = ut(a[r]),
- o = ji.getTech(s)
- if ((o = !s ? pt.getComponent(s) : o) && o.isSupported()) {
- e.loadTech_(s)
- break
- }
- }
- return i
- }
- return mt(e, u), e
- })(pt)
- pt.registerComponent('MediaLoader', I)
- C = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.options_.controlText && i.controlText(i.options_.controlText),
- (i.handleMouseOver_ = function (e) {
- return i.handleMouseOver(e)
- }),
- (i.handleMouseOut_ = function (e) {
- return i.handleMouseOut(e)
- }),
- (i.handleClick_ = function (e) {
- return i.handleClick(e)
- }),
- (i.handleKeyDown_ = function (e) {
- return i.handleKeyDown(e)
- }),
- i.emitTapEvents(),
- i.enable(),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.createEl = function (e, t, i) {
- void 0 === e && (e = 'div'),
- void 0 === t && (t = {}),
- void 0 === i && (i = {}),
- (t = b({ className: this.buildCSSClass(), tabIndex: 0 }, t)),
- 'button' === e && h.error('Creating a ClickableComponent with an HTML element of ' + e + ' is not supported; use a Button instead.'),
- (i = b({ role: 'button' }, i)),
- (this.tabIndex_ = t.tabIndex)
- i = $(e, t, i)
- return i.appendChild($('span', { className: 'vjs-icon-placeholder' }, { 'aria-hidden': !0 })), this.createControlTextEl(i), i
- }),
- (t.dispose = function () {
- ;(this.controlTextEl_ = null), n.prototype.dispose.call(this)
- }),
- (t.createControlTextEl = function (e) {
- return (
- (this.controlTextEl_ = $('span', { className: 'vjs-control-text' }, { 'aria-live': 'polite' })),
- e && e.appendChild(this.controlTextEl_),
- this.controlText(this.controlText_, e),
- this.controlTextEl_
- )
- }),
- (t.controlText = function (e, t) {
- if ((void 0 === t && (t = this.el()), void 0 === e)) return this.controlText_ || 'Need Text'
- var i = this.localize(e)
- ;(this.controlText_ = e), J(this.controlTextEl_, i), this.nonIconControl || this.player_.options_.noUITitleAttributes || t.setAttribute('title', i)
- }),
- (t.buildCSSClass = function () {
- return 'vjs-control vjs-button ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.enable = function () {
- this.enabled_ ||
- ((this.enabled_ = !0),
- this.removeClass('vjs-disabled'),
- this.el_.setAttribute('aria-disabled', 'false'),
- 'undefined' != typeof this.tabIndex_ && this.el_.setAttribute('tabIndex', this.tabIndex_),
- this.on(['tap', 'click'], this.handleClick_),
- this.on('keydown', this.handleKeyDown_))
- }),
- (t.disable = function () {
- ;(this.enabled_ = !1),
- this.addClass('vjs-disabled'),
- this.el_.setAttribute('aria-disabled', 'true'),
- 'undefined' != typeof this.tabIndex_ && this.el_.removeAttribute('tabIndex'),
- this.off('mouseover', this.handleMouseOver_),
- this.off('mouseout', this.handleMouseOut_),
- this.off(['tap', 'click'], this.handleClick_),
- this.off('keydown', this.handleKeyDown_)
- }),
- (t.handleLanguagechange = function () {
- this.controlText(this.controlText_)
- }),
- (t.handleClick = function (e) {
- this.options_.clickHandler && this.options_.clickHandler.call(this, arguments)
- }),
- (t.handleKeyDown = function (e) {
- ht.isEventKey(e, 'Space') || ht.isEventKey(e, 'Enter') ? (e.preventDefault(), e.stopPropagation(), this.trigger('click')) : n.prototype.handleKeyDown.call(this, e)
- }),
- e
- )
- })(pt)
- pt.registerComponent('ClickableComponent', C),
- pt.registerComponent(
- 'PosterImage',
- (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.update(),
- (i.update_ = function (e) {
- return i.update(e)
- }),
- e.on('posterchange', i.update_),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.dispose = function () {
- this.player().off('posterchange', this.update_), n.prototype.dispose.call(this)
- }),
- (t.createEl = function () {
- return $('div', { className: 'vjs-poster', tabIndex: -1 })
- }),
- (t.update = function (e) {
- var t = this.player().poster()
- this.setSrc(t), t ? this.show() : this.hide()
- }),
- (t.setSrc = function (e) {
- this.el_.style.backgroundImage = e ? 'url("' + e + '")' : ''
- }),
- (t.handleClick = function (e) {
- var t
- this.player_.controls() &&
- ((t = this.player_.usingPlugin('eme') && this.player_.eme.sessions && 0 < this.player_.eme.sessions.length),
- !this.player_.tech(!0) || ((N || O) && t) || this.player_.tech(!0).focus(),
- this.player_.paused() ? Et(this.player_.play()) : this.player_.pause())
- }),
- e
- )
- })(C)
- )
- var tn = '#222',
- nn = {
- monospace: 'monospace',
- sansSerif: 'sans-serif',
- serif: 'serif',
- monospaceSansSerif: '"Andale Mono", "Lucida Console", monospace',
- monospaceSerif: '"Courier New", monospace',
- proportionalSansSerif: 'sans-serif',
- proportionalSerif: 'serif',
- casual: '"Comic Sans MS", Impact, fantasy',
- script: '"Monotype Corsiva", cursive',
- smallcaps: '"Andale Mono", "Lucida Console", monospace, sans-serif',
- }
- function rn(e, t) {
- var i
- if (4 === e.length) i = e[1] + e[1] + e[2] + e[2] + e[3] + e[3]
- else {
- if (7 !== e.length) throw new Error('Invalid color code provided, ' + e + '; must be formatted as e.g. #f0e or #f604e2.')
- i = e.slice(1)
- }
- return 'rgba(' + parseInt(i.slice(0, 2), 16) + ',' + parseInt(i.slice(2, 4), 16) + ',' + parseInt(i.slice(4, 6), 16) + ',' + t + ')'
- }
- function an(e, t, i) {
- try {
- e.style[t] = i
- } catch (e) {
- return
- }
- }
- pt.registerComponent(
- 'TextTrackDisplay',
- (function (a) {
- function e(i, e, t) {
- function n(e) {
- return r.updateDisplay(e)
- }
- var r = a.call(this, i, e, t) || this
- return (
- i.on('loadstart', function (e) {
- return r.toggleDisplay(e)
- }),
- i.on('texttrackchange', n),
- i.on('loadedmetadata', function (e) {
- return r.preselectTrack(e)
- }),
- i.ready(
- Ve(ft(r), function () {
- if (i.tech_ && i.tech_.featuresNativeTextTracks) this.hide()
- else {
- i.on('fullscreenchange', n),
- i.on('playerresize', n),
- window.addEventListener('orientationchange', n),
- i.on('dispose', function () {
- return window.removeEventListener('orientationchange', n)
- })
- for (var e = this.options_.playerOptions.tracks || [], t = 0; t < e.length; t++) this.player_.addRemoteTextTrack(e[t], !0)
- this.preselectTrack()
- }
- })
- ),
- r
- )
- }
- mt(e, a)
- var t = e.prototype
- return (
- (t.preselectTrack = function () {
- for (var e, t, i, n = { captions: 1, subtitles: 1 }, r = this.player_.textTracks(), a = this.player_.cache_.selectedLanguage, s = 0; s < r.length; s++) {
- var o = r[s]
- a && a.enabled && a.language && a.language === o.language && o.kind in n
- ? (i = (o.kind !== a.kind && i) || o)
- : a && !a.enabled
- ? (t = e = i = null)
- : o.default && ('descriptions' !== o.kind || e ? o.kind in n && !t && (t = o) : (e = o))
- }
- i ? (i.mode = 'showing') : t ? (t.mode = 'showing') : e && (e.mode = 'showing')
- }),
- (t.toggleDisplay = function () {
- this.player_.tech_ && this.player_.tech_.featuresNativeTextTracks ? this.hide() : this.show()
- }),
- (t.createEl = function () {
- return a.prototype.createEl.call(this, 'div', { className: 'vjs-text-track-display' }, { translate: 'yes', 'aria-live': 'off', 'aria-atomic': 'true' })
- }),
- (t.clearDisplay = function () {
- 'function' == typeof window.WebVTT && window.WebVTT.processCues(window, [], this.el_)
- }),
- (t.updateDisplay = function () {
- var e = this.player_.textTracks(),
- t = this.options_.allowMultipleShowingTracks
- if ((this.clearDisplay(), t)) {
- for (var i = [], n = 0; n < e.length; ++n) {
- var r = e[n]
- 'showing' === r.mode && i.push(r)
- }
- this.updateForTrack(i)
- } else {
- for (var a = null, s = null, o = e.length; o--; ) {
- var u = e[o]
- 'showing' === u.mode && ('descriptions' === u.kind ? (a = u) : (s = u))
- }
- s
- ? ('off' !== this.getAttribute('aria-live') && this.setAttribute('aria-live', 'off'), this.updateForTrack(s))
- : a && ('assertive' !== this.getAttribute('aria-live') && this.setAttribute('aria-live', 'assertive'), this.updateForTrack(a))
- }
- }),
- (t.updateDisplayState = function (e) {
- for (var t = this.player_.textTrackSettings.getValues(), i = e.activeCues, n = i.length; n--; ) {
- var r,
- a = i[n]
- a &&
- ((r = a.displayState),
- t.color && (r.firstChild.style.color = t.color),
- t.textOpacity && an(r.firstChild, 'color', rn(t.color || '#fff', t.textOpacity)),
- t.backgroundColor && (r.firstChild.style.backgroundColor = t.backgroundColor),
- t.backgroundOpacity && an(r.firstChild, 'backgroundColor', rn(t.backgroundColor || '#000', t.backgroundOpacity)),
- t.windowColor && (t.windowOpacity ? an(r, 'backgroundColor', rn(t.windowColor, t.windowOpacity)) : (r.style.backgroundColor = t.windowColor)),
- t.edgeStyle &&
- ('dropshadow' === t.edgeStyle
- ? (r.firstChild.style.textShadow = '2px 2px 3px #222, 2px 2px 4px #222, 2px 2px 5px ' + tn)
- : 'raised' === t.edgeStyle
- ? (r.firstChild.style.textShadow = '1px 1px #222, 2px 2px #222, 3px 3px ' + tn)
- : 'depressed' === t.edgeStyle
- ? (r.firstChild.style.textShadow = '1px 1px #ccc, 0 1px #ccc, -1px -1px #222, 0 -1px ' + tn)
- : 'uniform' === t.edgeStyle && (r.firstChild.style.textShadow = '0 0 4px #222, 0 0 4px #222, 0 0 4px #222, 0 0 4px ' + tn)),
- t.fontPercent &&
- 1 !== t.fontPercent &&
- ((a = window.parseFloat(r.style.fontSize)), (r.style.fontSize = a * t.fontPercent + 'px'), (r.style.height = 'auto'), (r.style.top = 'auto')),
- t.fontFamily &&
- 'default' !== t.fontFamily &&
- ('small-caps' === t.fontFamily ? (r.firstChild.style.fontVariant = 'small-caps') : (r.firstChild.style.fontFamily = nn[t.fontFamily])))
- }
- }),
- (t.updateForTrack = function (e) {
- if (
- (Array.isArray(e) || (e = [e]),
- 'function' == typeof window.WebVTT &&
- !e.every(function (e) {
- return !e.activeCues
- }))
- ) {
- for (var t = [], i = 0; i < e.length; ++i) for (var n = e[i], r = 0; r < n.activeCues.length; ++r) t.push(n.activeCues[r])
- window.WebVTT.processCues(window, t, this.el_)
- for (var a = 0; a < e.length; ++a) {
- for (var s = e[a], o = 0; o < s.activeCues.length; ++o) {
- var u = s.activeCues[o].displayState
- te(u, 'vjs-text-track-cue'), te(u, 'vjs-text-track-cue-' + (s.language || a)), s.language && oe(u, 'lang', s.language)
- }
- this.player_.textTrackSettings && this.updateDisplayState(s)
- }
- }
- }),
- e
- )
- })(pt)
- ),
- pt.registerComponent(
- 'LoadingSpinner',
- (function (i) {
- function e() {
- return i.apply(this, arguments) || this
- }
- return (
- mt(e, i),
- (e.prototype.createEl = function () {
- var e = this.player_.isAudio(),
- t = this.localize(e ? 'Audio Player' : 'Video Player'),
- e = $('span', { className: 'vjs-control-text', textContent: this.localize('{1} is loading.', [t]) }),
- t = i.prototype.createEl.call(this, 'div', { className: 'vjs-loading-spinner', dir: 'ltr' })
- return t.appendChild(e), t
- }),
- e
- )
- })(pt)
- )
- var sn = (function (t) {
- function e() {
- return t.apply(this, arguments) || this
- }
- mt(e, t)
- var i = e.prototype
- return (
- (i.createEl = function (e, t, i) {
- void 0 === t && (t = {}), void 0 === i && (i = {})
- i = $('button', (t = b({ className: this.buildCSSClass() }, t)), (i = b({ type: 'button' }, i)))
- return i.appendChild($('span', { className: 'vjs-icon-placeholder' }, { 'aria-hidden': !0 })), this.createControlTextEl(i), i
- }),
- (i.addChild = function (e, t) {
- void 0 === t && (t = {})
- var i = this.constructor.name
- return h.warn('Adding an actionable (user controllable) child to a Button (' + i + ') is not supported; use a ClickableComponent instead.'), pt.prototype.addChild.call(this, e, t)
- }),
- (i.enable = function () {
- t.prototype.enable.call(this), this.el_.removeAttribute('disabled')
- }),
- (i.disable = function () {
- t.prototype.disable.call(this), this.el_.setAttribute('disabled', 'disabled')
- }),
- (i.handleKeyDown = function (e) {
- ht.isEventKey(e, 'Space') || ht.isEventKey(e, 'Enter') ? e.stopPropagation() : t.prototype.handleKeyDown.call(this, e)
- }),
- e
- )
- })(C)
- pt.registerComponent('Button', sn)
- Bt = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- (i.mouseused_ = !1),
- i.on('mousedown', function (e) {
- return i.handleMouseDown(e)
- }),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-big-play-button'
- }),
- (t.handleClick = function (e) {
- var t = this.player_.play()
- if (this.mouseused_ && e.clientX && e.clientY) {
- var i = this.player_.usingPlugin('eme') && this.player_.eme.sessions && 0 < this.player_.eme.sessions.length
- return Et(t), void (!this.player_.tech(!0) || ((N || O) && i) || this.player_.tech(!0).focus())
- }
- var i = this.player_.getChild('controlBar'),
- n = i && i.getChild('playToggle')
- n
- ? ((i = function () {
- return n.focus()
- }),
- wt(t) ? t.then(i, function () {}) : this.setTimeout(i, 1))
- : this.player_.tech(!0).focus()
- }),
- (t.handleKeyDown = function (e) {
- ;(this.mouseused_ = !1), n.prototype.handleKeyDown.call(this, e)
- }),
- (t.handleMouseDown = function (e) {
- this.mouseused_ = !0
- }),
- e
- )
- })(sn)
- ;(Bt.prototype.controlText_ = 'Play Video'),
- pt.registerComponent('BigPlayButton', Bt),
- pt.registerComponent(
- 'CloseButton',
- (function (i) {
- function e(e, t) {
- e = i.call(this, e, t) || this
- return e.controlText((t && t.controlText) || e.localize('Close')), e
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-close-button ' + i.prototype.buildCSSClass.call(this)
- }),
- (t.handleClick = function (e) {
- this.trigger({ type: 'close', bubbles: !1 })
- }),
- (t.handleKeyDown = function (e) {
- ht.isEventKey(e, 'Esc') ? (e.preventDefault(), e.stopPropagation(), this.trigger('click')) : i.prototype.handleKeyDown.call(this, e)
- }),
- e
- )
- })(sn)
- )
- Ft = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, (t = void 0 === t ? {} : t)) || this
- return (
- (t.replay = void 0 === t.replay || t.replay),
- i.on(e, 'play', function (e) {
- return i.handlePlay(e)
- }),
- i.on(e, 'pause', function (e) {
- return i.handlePause(e)
- }),
- t.replay &&
- i.on(e, 'ended', function (e) {
- return i.handleEnded(e)
- }),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-play-control ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.handleClick = function (e) {
- this.player_.paused() ? Et(this.player_.play()) : this.player_.pause()
- }),
- (t.handleSeeked = function (e) {
- this.removeClass('vjs-ended'), this.player_.paused() ? this.handlePause(e) : this.handlePlay(e)
- }),
- (t.handlePlay = function (e) {
- this.removeClass('vjs-ended'), this.removeClass('vjs-paused'), this.addClass('vjs-playing'), this.controlText('Pause')
- }),
- (t.handlePause = function (e) {
- this.removeClass('vjs-playing'), this.addClass('vjs-paused'), this.controlText('Play')
- }),
- (t.handleEnded = function (e) {
- var t = this
- this.removeClass('vjs-playing'),
- this.addClass('vjs-ended'),
- this.controlText('Replay'),
- this.one(this.player_, 'seeked', function (e) {
- return t.handleSeeked(e)
- })
- }),
- e
- )
- })(sn)
- ;(Ft.prototype.controlText_ = 'Play'), pt.registerComponent('PlayToggle', Ft)
- function on(e, t) {
- e = e < 0 ? 0 : e
- var i = Math.floor(e % 60),
- n = Math.floor((e / 60) % 60),
- r = Math.floor(e / 3600),
- a = Math.floor((t / 60) % 60),
- t = Math.floor(t / 3600)
- return (r = 0 < (r = isNaN(e) || e === 1 / 0 ? (n = i = '-') : r) || 0 < t ? r + ':' : '') + (n = ((r || 10 <= a) && n < 10 ? '0' + n : n) + ':') + (i = i < 10 ? '0' + i : i)
- }
- var un = on
- function ln(e, t) {
- return un(e, (t = void 0 === t ? e : t))
- }
- k = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.on(e, ['timeupdate', 'ended'], function (e) {
- return i.updateContent(e)
- }),
- i.updateTextNode_(),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.createEl = function () {
- var e = this.buildCSSClass(),
- t = n.prototype.createEl.call(this, 'div', { className: e + ' vjs-time-control vjs-control' }),
- i = $('span', { className: 'vjs-control-text', textContent: this.localize(this.labelText_) + ' ' }, { role: 'presentation' })
- return t.appendChild(i), (this.contentEl_ = $('span', { className: e + '-display' }, { 'aria-live': 'off', role: 'presentation' })), t.appendChild(this.contentEl_), t
- }),
- (t.dispose = function () {
- ;(this.contentEl_ = null), (this.textNode_ = null), n.prototype.dispose.call(this)
- }),
- (t.updateTextNode_ = function (e) {
- var t = this
- ;(e = ln((e = void 0 === e ? 0 : e))),
- this.formattedTime_ !== e &&
- ((this.formattedTime_ = e),
- this.requestNamedAnimationFrame('TimeDisplay#updateTextNode_', function () {
- var e
- t.contentEl_ &&
- ((e = t.textNode_) &&
- t.contentEl_.firstChild !== e &&
- ((e = null),
- h.warn('TimeDisplay#updateTextnode_: Prevented replacement of text node element since it was no longer a child of this node. Appending a new node instead.')),
- (t.textNode_ = document.createTextNode(t.formattedTime_)),
- t.textNode_ && (e ? t.contentEl_.replaceChild(t.textNode_, e) : t.contentEl_.appendChild(t.textNode_)))
- }))
- }),
- (t.updateContent = function (e) {}),
- e
- )
- })(pt)
- ;(k.prototype.labelText_ = 'Time'), (k.prototype.controlText_ = 'Time'), pt.registerComponent('TimeDisplay', k)
- jt = (function (e) {
- function t() {
- return e.apply(this, arguments) || this
- }
- mt(t, e)
- var i = t.prototype
- return (
- (i.buildCSSClass = function () {
- return 'vjs-current-time'
- }),
- (i.updateContent = function (e) {
- var t = this.player_.ended() ? this.player_.duration() : this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime()
- this.updateTextNode_(t)
- }),
- t
- )
- })(k)
- ;(jt.prototype.labelText_ = 'Current Time'), (jt.prototype.controlText_ = 'Current Time'), pt.registerComponent('CurrentTimeDisplay', jt)
- j = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this,
- t = function (e) {
- return i.updateContent(e)
- }
- return i.on(e, 'durationchange', t), i.on(e, 'loadstart', t), i.on(e, 'loadedmetadata', t), i
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-duration'
- }),
- (t.updateContent = function (e) {
- var t = this.player_.duration()
- this.updateTextNode_(t)
- }),
- e
- )
- })(k)
- ;(j.prototype.labelText_ = 'Duration'),
- (j.prototype.controlText_ = 'Duration'),
- pt.registerComponent('DurationDisplay', j),
- pt.registerComponent(
- 'TimeDivider',
- (function (n) {
- function e() {
- return n.apply(this, arguments) || this
- }
- return (
- mt(e, n),
- (e.prototype.createEl = function () {
- var e = n.prototype.createEl.call(this, 'div', { className: 'vjs-time-control vjs-time-divider' }, { 'aria-hidden': !0 }),
- t = n.prototype.createEl.call(this, 'div'),
- i = n.prototype.createEl.call(this, 'span', { textContent: '/' })
- return t.appendChild(i), e.appendChild(t), e
- }),
- e
- )
- })(pt)
- )
- f = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.on(e, 'durationchange', function (e) {
- return i.updateContent(e)
- }),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-remaining-time'
- }),
- (t.createEl = function () {
- var e = n.prototype.createEl.call(this)
- return !1 !== this.options_.displayNegative && e.insertBefore($('span', {}, { 'aria-hidden': !0 }, '-'), this.contentEl_), e
- }),
- (t.updateContent = function (e) {
- var t
- 'number' == typeof this.player_.duration() &&
- ((t = this.player_.ended() ? 0 : this.player_.remainingTimeDisplay ? this.player_.remainingTimeDisplay() : this.player_.remainingTime()), this.updateTextNode_(t))
- }),
- e
- )
- })(k)
- ;(f.prototype.labelText_ = 'Remaining Time'),
- (f.prototype.controlText_ = 'Remaining Time'),
- pt.registerComponent('RemainingTimeDisplay', f),
- pt.registerComponent(
- 'LiveDisplay',
- (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.updateShowing(),
- i.on(i.player(), 'durationchange', function (e) {
- return i.updateShowing(e)
- }),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.createEl = function () {
- var e = n.prototype.createEl.call(this, 'div', { className: 'vjs-live-control vjs-control' })
- return (
- (this.contentEl_ = $('div', { className: 'vjs-live-display' }, { 'aria-live': 'off' })),
- this.contentEl_.appendChild($('span', { className: 'vjs-control-text', textContent: this.localize('Stream Type') + ' ' })),
- this.contentEl_.appendChild(document.createTextNode(this.localize('LIVE'))),
- e.appendChild(this.contentEl_),
- e
- )
- }),
- (t.dispose = function () {
- ;(this.contentEl_ = null), n.prototype.dispose.call(this)
- }),
- (t.updateShowing = function (e) {
- this.player().duration() === 1 / 0 ? this.show() : this.hide()
- }),
- e
- )
- })(pt)
- )
- ui = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.updateLiveEdgeStatus(),
- i.player_.liveTracker &&
- ((i.updateLiveEdgeStatusHandler_ = function (e) {
- return i.updateLiveEdgeStatus(e)
- }),
- i.on(i.player_.liveTracker, 'liveedgechange', i.updateLiveEdgeStatusHandler_)),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.createEl = function () {
- var e = n.prototype.createEl.call(this, 'button', { className: 'vjs-seek-to-live-control vjs-control' })
- return (this.textEl_ = $('span', { className: 'vjs-seek-to-live-text', textContent: this.localize('LIVE') }, { 'aria-hidden': 'true' })), e.appendChild(this.textEl_), e
- }),
- (t.updateLiveEdgeStatus = function () {
- !this.player_.liveTracker || this.player_.liveTracker.atLiveEdge()
- ? (this.setAttribute('aria-disabled', !0), this.addClass('vjs-at-live-edge'), this.controlText('Seek to live, currently playing live'))
- : (this.setAttribute('aria-disabled', !1), this.removeClass('vjs-at-live-edge'), this.controlText('Seek to live, currently behind live'))
- }),
- (t.handleClick = function () {
- this.player_.liveTracker.seekToLiveEdge()
- }),
- (t.dispose = function () {
- this.player_.liveTracker && this.off(this.player_.liveTracker, 'liveedgechange', this.updateLiveEdgeStatusHandler_), (this.textEl_ = null), n.prototype.dispose.call(this)
- }),
- e
- )
- })(sn)
- ;(ui.prototype.controlText_ = 'Seek to live, currently playing live'), pt.registerComponent('SeekToLive', ui)
- function cn(e, t, i) {
- return (e = Number(e)), Math.min(i, Math.max(t, isNaN(e) ? t : e))
- }
- li = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- (i.handleMouseDown_ = function (e) {
- return i.handleMouseDown(e)
- }),
- (i.handleMouseUp_ = function (e) {
- return i.handleMouseUp(e)
- }),
- (i.handleKeyDown_ = function (e) {
- return i.handleKeyDown(e)
- }),
- (i.handleClick_ = function (e) {
- return i.handleClick(e)
- }),
- (i.handleMouseMove_ = function (e) {
- return i.handleMouseMove(e)
- }),
- (i.update_ = function (e) {
- return i.update(e)
- }),
- (i.bar = i.getChild(i.options_.barName)),
- i.vertical(!!i.options_.vertical),
- i.enable(),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.enabled = function () {
- return this.enabled_
- }),
- (t.enable = function () {
- this.enabled() ||
- (this.on('mousedown', this.handleMouseDown_),
- this.on('touchstart', this.handleMouseDown_),
- this.on('keydown', this.handleKeyDown_),
- this.on('click', this.handleClick_),
- this.on(this.player_, 'controlsvisible', this.update),
- this.playerEvent && this.on(this.player_, this.playerEvent, this.update),
- this.removeClass('disabled'),
- this.setAttribute('tabindex', 0),
- (this.enabled_ = !0))
- }),
- (t.disable = function () {
- var e
- this.enabled() &&
- ((e = this.bar.el_.ownerDocument),
- this.off('mousedown', this.handleMouseDown_),
- this.off('touchstart', this.handleMouseDown_),
- this.off('keydown', this.handleKeyDown_),
- this.off('click', this.handleClick_),
- this.off(this.player_, 'controlsvisible', this.update_),
- this.off(e, 'mousemove', this.handleMouseMove_),
- this.off(e, 'mouseup', this.handleMouseUp_),
- this.off(e, 'touchmove', this.handleMouseMove_),
- this.off(e, 'touchend', this.handleMouseUp_),
- this.removeAttribute('tabindex'),
- this.addClass('disabled'),
- this.playerEvent && this.off(this.player_, this.playerEvent, this.update),
- (this.enabled_ = !1))
- }),
- (t.createEl = function (e, t, i) {
- return (
- void 0 === i && (i = {}),
- ((t = void 0 === t ? {} : t).className = t.className + ' vjs-slider'),
- (t = b({ tabIndex: 0 }, t)),
- (i = b({ role: 'slider', 'aria-valuenow': 0, 'aria-valuemin': 0, 'aria-valuemax': 100, tabIndex: 0 }, i)),
- n.prototype.createEl.call(this, e, t, i)
- )
- }),
- (t.handleMouseDown = function (e) {
- var t = this.bar.el_.ownerDocument
- 'mousedown' === e.type && e.preventDefault(),
- 'touchstart' !== e.type || M || e.preventDefault(),
- le(),
- this.addClass('vjs-sliding'),
- this.trigger('slideractive'),
- this.on(t, 'mousemove', this.handleMouseMove_),
- this.on(t, 'mouseup', this.handleMouseUp_),
- this.on(t, 'touchmove', this.handleMouseMove_),
- this.on(t, 'touchend', this.handleMouseUp_),
- this.handleMouseMove(e, !0)
- }),
- (t.handleMouseMove = function (e) {}),
- (t.handleMouseUp = function () {
- var e = this.bar.el_.ownerDocument
- ce(),
- this.removeClass('vjs-sliding'),
- this.trigger('sliderinactive'),
- this.off(e, 'mousemove', this.handleMouseMove_),
- this.off(e, 'mouseup', this.handleMouseUp_),
- this.off(e, 'touchmove', this.handleMouseMove_),
- this.off(e, 'touchend', this.handleMouseUp_),
- this.update()
- }),
- (t.update = function () {
- var t = this
- if (this.el_ && this.bar) {
- var i = this.getProgress()
- return i === this.progress_
- ? i
- : ((this.progress_ = i),
- this.requestNamedAnimationFrame('Slider#update', function () {
- var e = t.vertical() ? 'height' : 'width'
- t.bar.el().style[e] = (100 * i).toFixed(2) + '%'
- }),
- i)
- }
- }),
- (t.getProgress = function () {
- return Number(cn(this.getPercent(), 0, 1).toFixed(4))
- }),
- (t.calculateDistance = function (e) {
- e = pe(this.el_, e)
- return this.vertical() ? e.y : e.x
- }),
- (t.handleKeyDown = function (e) {
- ht.isEventKey(e, 'Left') || ht.isEventKey(e, 'Down')
- ? (e.preventDefault(), e.stopPropagation(), this.stepBack())
- : ht.isEventKey(e, 'Right') || ht.isEventKey(e, 'Up')
- ? (e.preventDefault(), e.stopPropagation(), this.stepForward())
- : n.prototype.handleKeyDown.call(this, e)
- }),
- (t.handleClick = function (e) {
- e.stopPropagation(), e.preventDefault()
- }),
- (t.vertical = function (e) {
- if (void 0 === e) return this.vertical_ || !1
- ;(this.vertical_ = !!e), this.vertical_ ? this.addClass('vjs-slider-vertical') : this.addClass('vjs-slider-horizontal')
- }),
- e
- )
- })(pt)
- pt.registerComponent('Slider', li)
- function dn(e, t) {
- return cn((e / t) * 100, 0, 100).toFixed(2) + '%'
- }
- pt.registerComponent(
- 'LoadProgressBar',
- (function (r) {
- function e(e, t) {
- var i = r.call(this, e, t) || this
- return (
- (i.partEls_ = []),
- i.on(e, 'progress', function (e) {
- return i.update(e)
- }),
- i
- )
- }
- mt(e, r)
- var t = e.prototype
- return (
- (t.createEl = function () {
- var e = r.prototype.createEl.call(this, 'div', { className: 'vjs-load-progress' }),
- t = $('span', { className: 'vjs-control-text' }),
- i = $('span', { textContent: this.localize('Loaded') }),
- n = document.createTextNode(': ')
- return (
- (this.percentageEl_ = $('span', { className: 'vjs-control-text-loaded-percentage', textContent: '0%' })),
- e.appendChild(t),
- t.appendChild(i),
- t.appendChild(n),
- t.appendChild(this.percentageEl_),
- e
- )
- }),
- (t.dispose = function () {
- ;(this.partEls_ = null), (this.percentageEl_ = null), r.prototype.dispose.call(this)
- }),
- (t.update = function (e) {
- var l = this
- this.requestNamedAnimationFrame('LoadProgressBar#update', function () {
- var e = l.player_.liveTracker,
- t = l.player_.buffered(),
- e = e && e.isLive() ? e.seekableEnd() : l.player_.duration(),
- i = l.player_.bufferedEnd(),
- n = l.partEls_,
- e = dn(i, e)
- l.percent_ !== e && ((l.el_.style.width = e), J(l.percentageEl_, e), (l.percent_ = e))
- for (var r = 0; r < t.length; r++) {
- var a = t.start(r),
- s = t.end(r),
- o = n[r]
- o || ((o = l.el_.appendChild($())), (n[r] = o)),
- (o.dataset.start === a && o.dataset.end === s) || ((o.dataset.start = a), (o.dataset.end = s), (o.style.left = dn(a, i)), (o.style.width = dn(s - a, i)))
- }
- for (var u = n.length; u > t.length; u--) l.el_.removeChild(n[u - 1])
- n.length = t.length
- })
- }),
- e
- )
- })(pt)
- ),
- pt.registerComponent(
- 'TimeTooltip',
- (function (i) {
- function e(e, t) {
- t = i.call(this, e, t) || this
- return (t.update = We(Ve(ft(t), t.update), 30)), t
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.createEl = function () {
- return i.prototype.createEl.call(this, 'div', { className: 'vjs-time-tooltip' }, { 'aria-hidden': 'true' })
- }),
- (t.update = function (e, t, i) {
- var n = he(this.el_),
- r = de(this.player_.el()),
- a = e.width * t
- r &&
- n &&
- ((t = e.left - r.left + a),
- (r = e.width - a + (r.right - e.right)),
- t < (e = n.width / 2) ? (e += e - t) : r < e && (e = r),
- e < 0 ? (e = 0) : e > n.width && (e = n.width),
- (e = Math.round(e)),
- (this.el_.style.right = '-' + e + 'px'),
- this.write(i))
- }),
- (t.write = function (e) {
- J(this.el_, e)
- }),
- (t.updateTime = function (n, r, a, s) {
- var o = this
- this.requestNamedAnimationFrame('TimeTooltip#updateTime', function () {
- var e,
- t,
- i = o.player_.duration()
- ;(i = o.player_.liveTracker && o.player_.liveTracker.isLive() ? ((t = (e = o.player_.liveTracker.liveWindow()) - r * e) < 1 ? '' : '-') + ln(t, e) : ln(a, i)),
- o.update(n, r, i),
- s && s()
- })
- }),
- e
- )
- })(pt)
- )
- Xt = (function (i) {
- function e(e, t) {
- t = i.call(this, e, t) || this
- return (t.update = We(Ve(ft(t), t.update), 30)), t
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.createEl = function () {
- return i.prototype.createEl.call(this, 'div', { className: 'vjs-play-progress vjs-slider-bar' }, { 'aria-hidden': 'true' })
- }),
- (t.update = function (e, t) {
- var i,
- n = this.getChild('timeTooltip')
- n && ((i = this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime()), n.updateTime(e, t, i))
- }),
- e
- )
- })(pt)
- ;(Xt.prototype.options_ = { children: [] }), q || A || Xt.prototype.options_.children.push('timeTooltip'), pt.registerComponent('PlayProgressBar', Xt)
- I = (function (i) {
- function e(e, t) {
- t = i.call(this, e, t) || this
- return (t.update = We(Ve(ft(t), t.update), 30)), t
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.createEl = function () {
- return i.prototype.createEl.call(this, 'div', { className: 'vjs-mouse-display' })
- }),
- (t.update = function (e, t) {
- var i = this,
- n = t * this.player_.duration()
- this.getChild('timeTooltip').updateTime(e, t, n, function () {
- i.el_.style.left = e.width * t + 'px'
- })
- }),
- e
- )
- })(pt)
- ;(I.prototype.options_ = { children: ['timeTooltip'] }), pt.registerComponent('MouseTimeDisplay', I)
- Bt = (function (a) {
- function e(e, t) {
- t = a.call(this, e, t) || this
- return t.setEventHandlers_(), t
- }
- mt(e, a)
- var t = e.prototype
- return (
- (t.setEventHandlers_ = function () {
- var t = this
- ;(this.update_ = Ve(this, this.update)),
- (this.update = We(this.update_, 30)),
- this.on(this.player_, ['ended', 'durationchange', 'timeupdate'], this.update),
- this.player_.liveTracker && this.on(this.player_.liveTracker, 'liveedgechange', this.update),
- (this.updateInterval = null),
- (this.enableIntervalHandler_ = function (e) {
- return t.enableInterval_(e)
- }),
- (this.disableIntervalHandler_ = function (e) {
- return t.disableInterval_(e)
- }),
- this.on(this.player_, ['playing'], this.enableIntervalHandler_),
- this.on(this.player_, ['ended', 'pause', 'waiting'], this.disableIntervalHandler_),
- 'hidden' in document && 'visibilityState' in document && this.on(document, 'visibilitychange', this.toggleVisibility_)
- }),
- (t.toggleVisibility_ = function (e) {
- 'hidden' === document.visibilityState
- ? (this.cancelNamedAnimationFrame('SeekBar#update'), this.cancelNamedAnimationFrame('Slider#update'), this.disableInterval_(e))
- : (this.player_.ended() || this.player_.paused() || this.enableInterval_(), this.update())
- }),
- (t.enableInterval_ = function () {
- this.updateInterval || (this.updateInterval = this.setInterval(this.update, 30))
- }),
- (t.disableInterval_ = function (e) {
- ;(this.player_.liveTracker && this.player_.liveTracker.isLive() && e && 'ended' !== e.type) ||
- (this.updateInterval && (this.clearInterval(this.updateInterval), (this.updateInterval = null)))
- }),
- (t.createEl = function () {
- return a.prototype.createEl.call(this, 'div', { className: 'vjs-progress-holder' }, { 'aria-label': this.localize('Progress Bar') })
- }),
- (t.update = function (e) {
- var n = this
- if ('hidden' !== document.visibilityState) {
- var r = a.prototype.update.call(this)
- return (
- this.requestNamedAnimationFrame('SeekBar#update', function () {
- var e = n.player_.ended() ? n.player_.duration() : n.getCurrentTime_(),
- t = n.player_.liveTracker,
- i = n.player_.duration()
- t && t.isLive() && (i = n.player_.liveTracker.liveCurrentTime()),
- n.percent_ !== r && (n.el_.setAttribute('aria-valuenow', (100 * r).toFixed(2)), (n.percent_ = r)),
- (n.currentTime_ === e && n.duration_ === i) ||
- (n.el_.setAttribute('aria-valuetext', n.localize('progress bar timing: currentTime={1} duration={2}', [ln(e, i), ln(i, i)], '{1} of {2}')),
- (n.currentTime_ = e),
- (n.duration_ = i)),
- n.bar && n.bar.update(de(n.el()), n.getProgress())
- }),
- r
- )
- }
- }),
- (t.userSeek_ = function (e) {
- this.player_.liveTracker && this.player_.liveTracker.isLive() && this.player_.liveTracker.nextSeekedFromUser(), this.player_.currentTime(e)
- }),
- (t.getCurrentTime_ = function () {
- return this.player_.scrubbing() ? this.player_.getCache().currentTime : this.player_.currentTime()
- }),
- (t.getPercent = function () {
- var e,
- t = this.getCurrentTime_(),
- i = this.player_.liveTracker
- return i && i.isLive() ? ((e = (t - i.seekableStart()) / i.liveWindow()), i.atLiveEdge() && (e = 1)) : (e = t / this.player_.duration()), e
- }),
- (t.handleMouseDown = function (e) {
- _e(e) && (e.stopPropagation(), (this.videoWasPlaying = !this.player_.paused()), this.player_.pause(), a.prototype.handleMouseDown.call(this, e))
- }),
- (t.handleMouseMove = function (e, t) {
- if ((void 0 === t && (t = !1), _e(e))) {
- t || this.player_.scrubbing() || this.player_.scrubbing(!0)
- var i = this.calculateDistance(e),
- n = this.player_.liveTracker
- if (n && n.isLive()) {
- if (0.99 <= i) return void n.seekToLiveEdge()
- var r,
- t = n.seekableStart(),
- e = n.liveCurrentTime()
- if ((r = (r = e <= (r = t + i * n.liveWindow()) ? e : r) <= t ? t + 0.1 : r) === 1 / 0) return
- } else (r = i * this.player_.duration()) === this.player_.duration() && (r -= 0.1)
- this.userSeek_(r)
- }
- }),
- (t.enable = function () {
- a.prototype.enable.call(this)
- var e = this.getChild('mouseTimeDisplay')
- e && e.show()
- }),
- (t.disable = function () {
- a.prototype.disable.call(this)
- var e = this.getChild('mouseTimeDisplay')
- e && e.hide()
- }),
- (t.handleMouseUp = function (e) {
- a.prototype.handleMouseUp.call(this, e),
- e && e.stopPropagation(),
- this.player_.scrubbing(!1),
- this.player_.trigger({ type: 'timeupdate', target: this, manuallyTriggered: !0 }),
- this.videoWasPlaying ? Et(this.player_.play()) : this.update_()
- }),
- (t.stepForward = function () {
- this.userSeek_(this.player_.currentTime() + 5)
- }),
- (t.stepBack = function () {
- this.userSeek_(this.player_.currentTime() - 5)
- }),
- (t.handleAction = function (e) {
- this.player_.paused() ? this.player_.play() : this.player_.pause()
- }),
- (t.handleKeyDown = function (e) {
- var t,
- i = this.player_.liveTracker
- ht.isEventKey(e, 'Space') || ht.isEventKey(e, 'Enter')
- ? (e.preventDefault(), e.stopPropagation(), this.handleAction(e))
- : ht.isEventKey(e, 'Home')
- ? (e.preventDefault(), e.stopPropagation(), this.userSeek_(0))
- : ht.isEventKey(e, 'End')
- ? (e.preventDefault(), e.stopPropagation(), i && i.isLive() ? this.userSeek_(i.liveCurrentTime()) : this.userSeek_(this.player_.duration()))
- : /^[0-9]$/.test(ht(e))
- ? (e.preventDefault(),
- e.stopPropagation(),
- (t = (10 * (ht.codes[ht(e)] - ht.codes[0])) / 100),
- i && i.isLive() ? this.userSeek_(i.seekableStart() + i.liveWindow() * t) : this.userSeek_(this.player_.duration() * t))
- : ht.isEventKey(e, 'PgDn')
- ? (e.preventDefault(), e.stopPropagation(), this.userSeek_(this.player_.currentTime() - 60))
- : ht.isEventKey(e, 'PgUp')
- ? (e.preventDefault(), e.stopPropagation(), this.userSeek_(this.player_.currentTime() + 60))
- : a.prototype.handleKeyDown.call(this, e)
- }),
- (t.dispose = function () {
- this.disableInterval_(),
- this.off(this.player_, ['ended', 'durationchange', 'timeupdate'], this.update),
- this.player_.liveTracker && this.off(this.player_.liveTracker, 'liveedgechange', this.update),
- this.off(this.player_, ['playing'], this.enableIntervalHandler_),
- this.off(this.player_, ['ended', 'pause', 'waiting'], this.disableIntervalHandler_),
- 'hidden' in document && 'visibilityState' in document && this.off(document, 'visibilitychange', this.toggleVisibility_),
- a.prototype.dispose.call(this)
- }),
- e
- )
- })(li)
- ;(Bt.prototype.options_ = { children: ['loadProgressBar', 'playProgressBar'], barName: 'playProgressBar' }),
- q || A || Bt.prototype.options_.children.splice(1, 0, 'mouseTimeDisplay'),
- pt.registerComponent('SeekBar', Bt)
- Ft = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- (i.handleMouseMove = We(Ve(ft(i), i.handleMouseMove), 30)),
- (i.throttledHandleMouseSeek = We(Ve(ft(i), i.handleMouseSeek), 30)),
- (i.handleMouseUpHandler_ = function (e) {
- return i.handleMouseUp(e)
- }),
- (i.handleMouseDownHandler_ = function (e) {
- return i.handleMouseDown(e)
- }),
- i.enable(),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.createEl = function () {
- return n.prototype.createEl.call(this, 'div', { className: 'vjs-progress-control vjs-control' })
- }),
- (t.handleMouseMove = function (e) {
- var t,
- i,
- n,
- r,
- a = this.getChild('seekBar')
- a &&
- ((t = a.getChild('playProgressBar')),
- (i = a.getChild('mouseTimeDisplay')),
- (t || i) && ((r = he((n = a.el()))), (e = pe(n, e).x), (e = cn(e, 0, 1)), i && i.update(r, e), t && t.update(r, a.getProgress())))
- }),
- (t.handleMouseSeek = function (e) {
- var t = this.getChild('seekBar')
- t && t.handleMouseMove(e)
- }),
- (t.enabled = function () {
- return this.enabled_
- }),
- (t.disable = function () {
- var e
- this.children().forEach(function (e) {
- return e.disable && e.disable()
- }),
- this.enabled() &&
- (this.off(['mousedown', 'touchstart'], this.handleMouseDownHandler_),
- this.off(this.el_, 'mousemove', this.handleMouseMove),
- this.removeListenersAddedOnMousedownAndTouchstart(),
- this.addClass('disabled'),
- (this.enabled_ = !1),
- this.player_.scrubbing() && ((e = this.getChild('seekBar')), this.player_.scrubbing(!1), e.videoWasPlaying && Et(this.player_.play())))
- }),
- (t.enable = function () {
- this.children().forEach(function (e) {
- return e.enable && e.enable()
- }),
- this.enabled() ||
- (this.on(['mousedown', 'touchstart'], this.handleMouseDownHandler_), this.on(this.el_, 'mousemove', this.handleMouseMove), this.removeClass('disabled'), (this.enabled_ = !0))
- }),
- (t.removeListenersAddedOnMousedownAndTouchstart = function () {
- var e = this.el_.ownerDocument
- this.off(e, 'mousemove', this.throttledHandleMouseSeek),
- this.off(e, 'touchmove', this.throttledHandleMouseSeek),
- this.off(e, 'mouseup', this.handleMouseUpHandler_),
- this.off(e, 'touchend', this.handleMouseUpHandler_)
- }),
- (t.handleMouseDown = function (e) {
- var t = this.el_.ownerDocument,
- i = this.getChild('seekBar')
- i && i.handleMouseDown(e),
- this.on(t, 'mousemove', this.throttledHandleMouseSeek),
- this.on(t, 'touchmove', this.throttledHandleMouseSeek),
- this.on(t, 'mouseup', this.handleMouseUpHandler_),
- this.on(t, 'touchend', this.handleMouseUpHandler_)
- }),
- (t.handleMouseUp = function (e) {
- var t = this.getChild('seekBar')
- t && t.handleMouseUp(e), this.removeListenersAddedOnMousedownAndTouchstart()
- }),
- e
- )
- })(pt)
- ;(Ft.prototype.options_ = { children: ['seekBar'] }), pt.registerComponent('ProgressControl', Ft)
- jt = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.on(e, ['enterpictureinpicture', 'leavepictureinpicture'], function (e) {
- return i.handlePictureInPictureChange(e)
- }),
- i.on(e, ['disablepictureinpicturechanged', 'loadedmetadata'], function (e) {
- return i.handlePictureInPictureEnabledChange(e)
- }),
- i.on(e, ['loadedmetadata', 'audioonlymodechange', 'audiopostermodechange'], function () {
- 'audio' === e.currentType().substring(0, 5) || e.audioPosterMode() || e.audioOnlyMode() ? (e.isInPictureInPicture() && e.exitPictureInPicture(), i.hide()) : i.show()
- }),
- i.disable(),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-picture-in-picture-control ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.handlePictureInPictureEnabledChange = function () {
- document.pictureInPictureEnabled && !1 === this.player_.disablePictureInPicture() ? this.enable() : this.disable()
- }),
- (t.handlePictureInPictureChange = function (e) {
- this.player_.isInPictureInPicture() ? this.controlText('Exit Picture-in-Picture') : this.controlText('Picture-in-Picture'), this.handlePictureInPictureEnabledChange()
- }),
- (t.handleClick = function (e) {
- this.player_.isInPictureInPicture() ? this.player_.exitPictureInPicture() : this.player_.requestPictureInPicture()
- }),
- e
- )
- })(sn)
- ;(jt.prototype.controlText_ = 'Picture-in-Picture'), pt.registerComponent('PictureInPictureToggle', jt)
- j = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.on(e, 'fullscreenchange', function (e) {
- return i.handleFullscreenChange(e)
- }),
- !1 === document[e.fsApi_.fullscreenEnabled] && i.disable(),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-fullscreen-control ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.handleFullscreenChange = function (e) {
- this.player_.isFullscreen() ? this.controlText('Non-Fullscreen') : this.controlText('Fullscreen')
- }),
- (t.handleClick = function (e) {
- this.player_.isFullscreen() ? this.player_.exitFullscreen() : this.player_.requestFullscreen()
- }),
- e
- )
- })(sn)
- ;(j.prototype.controlText_ = 'Fullscreen'), pt.registerComponent('FullscreenToggle', j)
- pt.registerComponent(
- 'VolumeLevel',
- (function (t) {
- function e() {
- return t.apply(this, arguments) || this
- }
- return (
- mt(e, t),
- (e.prototype.createEl = function () {
- var e = t.prototype.createEl.call(this, 'div', { className: 'vjs-volume-level' })
- return e.appendChild(t.prototype.createEl.call(this, 'span', { className: 'vjs-control-text' })), e
- }),
- e
- )
- })(pt)
- ),
- pt.registerComponent(
- 'VolumeLevelTooltip',
- (function (i) {
- function e(e, t) {
- t = i.call(this, e, t) || this
- return (t.update = We(Ve(ft(t), t.update), 30)), t
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.createEl = function () {
- return i.prototype.createEl.call(this, 'div', { className: 'vjs-volume-tooltip' }, { 'aria-hidden': 'true' })
- }),
- (t.update = function (e, t, i, n) {
- if (!i) {
- var r = de(this.el_),
- a = de(this.player_.el()),
- i = e.width * t
- if (!a || !r) return
- ;(t = e.left - a.left + i), (a = e.width - i + (a.right - e.right)), (e = r.width / 2)
- t < e ? (e += e - t) : a < e && (e = a), e < 0 ? (e = 0) : e > r.width && (e = r.width), (this.el_.style.right = '-' + e + 'px')
- }
- this.write(n + '%')
- }),
- (t.write = function (e) {
- J(this.el_, e)
- }),
- (t.updateVolume = function (e, t, i, n, r) {
- var a = this
- this.requestNamedAnimationFrame('VolumeLevelTooltip#updateVolume', function () {
- a.update(e, t, i, n.toFixed(0)), r && r()
- })
- }),
- e
- )
- })(pt)
- )
- k = (function (i) {
- function e(e, t) {
- t = i.call(this, e, t) || this
- return (t.update = We(Ve(ft(t), t.update), 30)), t
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.createEl = function () {
- return i.prototype.createEl.call(this, 'div', { className: 'vjs-mouse-display' })
- }),
- (t.update = function (e, t, i) {
- var n = this,
- r = 100 * t
- this.getChild('volumeLevelTooltip').updateVolume(e, t, i, r, function () {
- i ? (n.el_.style.bottom = e.height * t + 'px') : (n.el_.style.left = e.width * t + 'px')
- })
- }),
- e
- )
- })(pt)
- ;(k.prototype.options_ = { children: ['volumeLevelTooltip'] }), pt.registerComponent('MouseVolumeLevelDisplay', k)
- f = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.on('slideractive', function (e) {
- return i.updateLastVolume_(e)
- }),
- i.on(e, 'volumechange', function (e) {
- return i.updateARIAAttributes(e)
- }),
- e.ready(function () {
- return i.updateARIAAttributes()
- }),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.createEl = function () {
- return n.prototype.createEl.call(this, 'div', { className: 'vjs-volume-bar vjs-slider-bar' }, { 'aria-label': this.localize('Volume Level'), 'aria-live': 'polite' })
- }),
- (t.handleMouseDown = function (e) {
- _e(e) && n.prototype.handleMouseDown.call(this, e)
- }),
- (t.handleMouseMove = function (e) {
- var t,
- i,
- n,
- r = this.getChild('mouseVolumeLevelDisplay')
- r && ((t = de((n = this.el()))), (i = this.vertical()), (n = pe(n, e)), (n = i ? n.y : n.x), (n = cn(n, 0, 1)), r.update(t, n, i)),
- _e(e) && (this.checkMuted(), this.player_.volume(this.calculateDistance(e)))
- }),
- (t.checkMuted = function () {
- this.player_.muted() && this.player_.muted(!1)
- }),
- (t.getPercent = function () {
- return this.player_.muted() ? 0 : this.player_.volume()
- }),
- (t.stepForward = function () {
- this.checkMuted(), this.player_.volume(this.player_.volume() + 0.1)
- }),
- (t.stepBack = function () {
- this.checkMuted(), this.player_.volume(this.player_.volume() - 0.1)
- }),
- (t.updateARIAAttributes = function (e) {
- var t = this.player_.muted() ? 0 : this.volumeAsPercentage_()
- this.el_.setAttribute('aria-valuenow', t), this.el_.setAttribute('aria-valuetext', t + '%')
- }),
- (t.volumeAsPercentage_ = function () {
- return Math.round(100 * this.player_.volume())
- }),
- (t.updateLastVolume_ = function () {
- var e = this,
- t = this.player_.volume()
- this.one('sliderinactive', function () {
- 0 === e.player_.volume() && e.player_.lastVolume_(t)
- })
- }),
- e
- )
- })(li)
- ;(f.prototype.options_ = { children: ['volumeLevel'], barName: 'volumeLevel' }),
- q || A || f.prototype.options_.children.splice(0, 0, 'mouseVolumeLevelDisplay'),
- (f.prototype.playerEvent = 'volumechange'),
- pt.registerComponent('VolumeBar', f)
- ui = (function (a) {
- function e(e, t) {
- var i, n, r
- return (
- ((t = void 0 === t ? {} : t).vertical = t.vertical || !1),
- ('undefined' != typeof t.volumeBar && !S(t.volumeBar)) || ((t.volumeBar = t.volumeBar || {}), (t.volumeBar.vertical = t.vertical)),
- (i = a.call(this, e, t) || this),
- (n = ft(i)),
- (r = e).tech_ && !r.tech_.featuresVolumeControl && n.addClass('vjs-hidden'),
- n.on(r, 'loadstart', function () {
- r.tech_.featuresVolumeControl ? n.removeClass('vjs-hidden') : n.addClass('vjs-hidden')
- }),
- (i.throttledHandleMouseMove = We(Ve(ft(i), i.handleMouseMove), 30)),
- (i.handleMouseUpHandler_ = function (e) {
- return i.handleMouseUp(e)
- }),
- i.on('mousedown', function (e) {
- return i.handleMouseDown(e)
- }),
- i.on('touchstart', function (e) {
- return i.handleMouseDown(e)
- }),
- i.on('mousemove', function (e) {
- return i.handleMouseMove(e)
- }),
- i.on(i.volumeBar, ['focus', 'slideractive'], function () {
- i.volumeBar.addClass('vjs-slider-active'), i.addClass('vjs-slider-active'), i.trigger('slideractive')
- }),
- i.on(i.volumeBar, ['blur', 'sliderinactive'], function () {
- i.volumeBar.removeClass('vjs-slider-active'), i.removeClass('vjs-slider-active'), i.trigger('sliderinactive')
- }),
- i
- )
- }
- mt(e, a)
- var t = e.prototype
- return (
- (t.createEl = function () {
- var e = 'vjs-volume-horizontal'
- return this.options_.vertical && (e = 'vjs-volume-vertical'), a.prototype.createEl.call(this, 'div', { className: 'vjs-volume-control vjs-control ' + e })
- }),
- (t.handleMouseDown = function (e) {
- var t = this.el_.ownerDocument
- this.on(t, 'mousemove', this.throttledHandleMouseMove),
- this.on(t, 'touchmove', this.throttledHandleMouseMove),
- this.on(t, 'mouseup', this.handleMouseUpHandler_),
- this.on(t, 'touchend', this.handleMouseUpHandler_)
- }),
- (t.handleMouseUp = function (e) {
- var t = this.el_.ownerDocument
- this.off(t, 'mousemove', this.throttledHandleMouseMove),
- this.off(t, 'touchmove', this.throttledHandleMouseMove),
- this.off(t, 'mouseup', this.handleMouseUpHandler_),
- this.off(t, 'touchend', this.handleMouseUpHandler_)
- }),
- (t.handleMouseMove = function (e) {
- this.volumeBar.handleMouseMove(e)
- }),
- e
- )
- })(pt)
- ;(ui.prototype.options_ = { children: ['volumeBar'] }), pt.registerComponent('VolumeControl', ui)
- Xt = (function (a) {
- function e(e, t) {
- var i,
- n,
- r = a.call(this, e, t) || this
- return (
- (i = ft(r)),
- (n = e).tech_ && !n.tech_.featuresMuteControl && i.addClass('vjs-hidden'),
- i.on(n, 'loadstart', function () {
- n.tech_.featuresMuteControl ? i.removeClass('vjs-hidden') : i.addClass('vjs-hidden')
- }),
- r.on(e, ['loadstart', 'volumechange'], function (e) {
- return r.update(e)
- }),
- r
- )
- }
- mt(e, a)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-mute-control ' + a.prototype.buildCSSClass.call(this)
- }),
- (t.handleClick = function (e) {
- var t = this.player_.volume(),
- i = this.player_.lastVolume_()
- 0 === t ? (this.player_.volume(i < 0.1 ? 0.1 : i), this.player_.muted(!1)) : this.player_.muted(!this.player_.muted())
- }),
- (t.update = function (e) {
- this.updateIcon_(), this.updateControlText_()
- }),
- (t.updateIcon_ = function () {
- var e = this.player_.volume(),
- t = 3
- q && this.player_.tech_ && this.player_.tech_.el_ && this.player_.muted(this.player_.tech_.el_.muted),
- 0 === e || this.player_.muted() ? (t = 0) : e < 0.33 ? (t = 1) : e < 0.67 && (t = 2)
- for (var i = 0; i < 4; i++) ie(this.el_, 'vjs-vol-' + i)
- te(this.el_, 'vjs-vol-' + t)
- }),
- (t.updateControlText_ = function () {
- var e = this.player_.muted() || 0 === this.player_.volume() ? 'Unmute' : 'Mute'
- this.controlText() !== e && this.controlText(e)
- }),
- e
- )
- })(sn)
- ;(Xt.prototype.controlText_ = 'Mute'), pt.registerComponent('MuteToggle', Xt)
- I = (function (n) {
- function e(e, t) {
- var i
- return (
- 'undefined' != typeof (t = void 0 === t ? {} : t).inline ? (t.inline = t.inline) : (t.inline = !0),
- ('undefined' != typeof t.volumeControl && !S(t.volumeControl)) || ((t.volumeControl = t.volumeControl || {}), (t.volumeControl.vertical = !t.inline)),
- ((i = n.call(this, e, t) || this).handleKeyPressHandler_ = function (e) {
- return i.handleKeyPress(e)
- }),
- i.on(e, ['loadstart'], function (e) {
- return i.volumePanelState_(e)
- }),
- i.on(i.muteToggle, 'keyup', function (e) {
- return i.handleKeyPress(e)
- }),
- i.on(i.volumeControl, 'keyup', function (e) {
- return i.handleVolumeControlKeyUp(e)
- }),
- i.on('keydown', function (e) {
- return i.handleKeyPress(e)
- }),
- i.on('mouseover', function (e) {
- return i.handleMouseOver(e)
- }),
- i.on('mouseout', function (e) {
- return i.handleMouseOut(e)
- }),
- i.on(i.volumeControl, ['slideractive'], i.sliderActive_),
- i.on(i.volumeControl, ['sliderinactive'], i.sliderInactive_),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.sliderActive_ = function () {
- this.addClass('vjs-slider-active')
- }),
- (t.sliderInactive_ = function () {
- this.removeClass('vjs-slider-active')
- }),
- (t.volumePanelState_ = function () {
- this.volumeControl.hasClass('vjs-hidden') && this.muteToggle.hasClass('vjs-hidden') && this.addClass('vjs-hidden'),
- this.volumeControl.hasClass('vjs-hidden') && !this.muteToggle.hasClass('vjs-hidden') && this.addClass('vjs-mute-toggle-only')
- }),
- (t.createEl = function () {
- var e = 'vjs-volume-panel-horizontal'
- return this.options_.inline || (e = 'vjs-volume-panel-vertical'), n.prototype.createEl.call(this, 'div', { className: 'vjs-volume-panel vjs-control ' + e })
- }),
- (t.dispose = function () {
- this.handleMouseOut(), n.prototype.dispose.call(this)
- }),
- (t.handleVolumeControlKeyUp = function (e) {
- ht.isEventKey(e, 'Esc') && this.muteToggle.focus()
- }),
- (t.handleMouseOver = function (e) {
- this.addClass('vjs-hover'), Be(document, 'keyup', this.handleKeyPressHandler_)
- }),
- (t.handleMouseOut = function (e) {
- this.removeClass('vjs-hover'), Fe(document, 'keyup', this.handleKeyPressHandler_)
- }),
- (t.handleKeyPress = function (e) {
- ht.isEventKey(e, 'Esc') && this.handleMouseOut()
- }),
- e
- )
- })(pt)
- ;(I.prototype.options_ = { children: ['muteToggle', 'volumeControl'] }), pt.registerComponent('VolumePanel', I)
- var hn = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- t && (i.menuButton_ = t.menuButton),
- (i.focusedChild_ = -1),
- i.on('keydown', function (e) {
- return i.handleKeyDown(e)
- }),
- (i.boundHandleBlur_ = function (e) {
- return i.handleBlur(e)
- }),
- (i.boundHandleTapClick_ = function (e) {
- return i.handleTapClick(e)
- }),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.addEventListenerForItem = function (e) {
- e instanceof pt && (this.on(e, 'blur', this.boundHandleBlur_), this.on(e, ['tap', 'click'], this.boundHandleTapClick_))
- }),
- (t.removeEventListenerForItem = function (e) {
- e instanceof pt && (this.off(e, 'blur', this.boundHandleBlur_), this.off(e, ['tap', 'click'], this.boundHandleTapClick_))
- }),
- (t.removeChild = function (e) {
- 'string' == typeof e && (e = this.getChild(e)), this.removeEventListenerForItem(e), n.prototype.removeChild.call(this, e)
- }),
- (t.addItem = function (e) {
- e = this.addChild(e)
- e && this.addEventListenerForItem(e)
- }),
- (t.createEl = function () {
- var e = this.options_.contentElType || 'ul'
- ;(this.contentEl_ = $(e, { className: 'vjs-menu-content' })), this.contentEl_.setAttribute('role', 'menu')
- e = n.prototype.createEl.call(this, 'div', { append: this.contentEl_, className: 'vjs-menu' })
- return (
- e.appendChild(this.contentEl_),
- Be(e, 'click', function (e) {
- e.preventDefault(), e.stopImmediatePropagation()
- }),
- e
- )
- }),
- (t.dispose = function () {
- ;(this.contentEl_ = null), (this.boundHandleBlur_ = null), (this.boundHandleTapClick_ = null), n.prototype.dispose.call(this)
- }),
- (t.handleBlur = function (e) {
- var t = e.relatedTarget || document.activeElement
- this.children().some(function (e) {
- return e.el() === t
- }) ||
- ((e = this.menuButton_) && e.buttonPressed_ && t !== e.el().firstChild && e.unpressButton())
- }),
- (t.handleTapClick = function (t) {
- var e
- this.menuButton_ &&
- (this.menuButton_.unpressButton(),
- (e = this.children()),
- !Array.isArray(e) ||
- ((e = e.filter(function (e) {
- return e.el() === t.target
- })[0]) &&
- 'CaptionSettingsMenuItem' !== e.name() &&
- this.menuButton_.focus()))
- }),
- (t.handleKeyDown = function (e) {
- ht.isEventKey(e, 'Left') || ht.isEventKey(e, 'Down')
- ? (e.preventDefault(), e.stopPropagation(), this.stepForward())
- : (ht.isEventKey(e, 'Right') || ht.isEventKey(e, 'Up')) && (e.preventDefault(), e.stopPropagation(), this.stepBack())
- }),
- (t.stepForward = function () {
- var e = 0
- void 0 !== this.focusedChild_ && (e = this.focusedChild_ + 1), this.focus(e)
- }),
- (t.stepBack = function () {
- var e = 0
- void 0 !== this.focusedChild_ && (e = this.focusedChild_ - 1), this.focus(e)
- }),
- (t.focus = function (e) {
- void 0 === e && (e = 0)
- var t = this.children().slice()
- t.length && t[0].hasClass('vjs-menu-title') && t.shift(), 0 < t.length && (e < 0 ? (e = 0) : e >= t.length && (e = t.length - 1), t[(this.focusedChild_ = e)].el_.focus())
- }),
- e
- )
- })(pt)
- pt.registerComponent('Menu', hn)
- Bt = (function (n) {
- function e(e, t) {
- var i
- ;((i = n.call(this, e, (t = void 0 === t ? {} : t)) || this).menuButton_ = new sn(e, t)), i.menuButton_.controlText(i.controlText_), i.menuButton_.el_.setAttribute('aria-haspopup', 'true')
- t = sn.prototype.buildCSSClass()
- ;(i.menuButton_.el_.className = i.buildCSSClass() + ' ' + t), i.menuButton_.removeClass('vjs-control'), i.addChild(i.menuButton_), i.update(), (i.enabled_ = !0)
- t = function (e) {
- return i.handleClick(e)
- }
- return (
- (i.handleMenuKeyUp_ = function (e) {
- return i.handleMenuKeyUp(e)
- }),
- i.on(i.menuButton_, 'tap', t),
- i.on(i.menuButton_, 'click', t),
- i.on(i.menuButton_, 'keydown', function (e) {
- return i.handleKeyDown(e)
- }),
- i.on(i.menuButton_, 'mouseenter', function () {
- i.addClass('vjs-hover'), i.menu.show(), Be(document, 'keyup', i.handleMenuKeyUp_)
- }),
- i.on('mouseleave', function (e) {
- return i.handleMouseLeave(e)
- }),
- i.on('keydown', function (e) {
- return i.handleSubmenuKeyDown(e)
- }),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.update = function () {
- var e = this.createMenu()
- this.menu && (this.menu.dispose(), this.removeChild(this.menu)),
- (this.menu = e),
- this.addChild(e),
- (this.buttonPressed_ = !1),
- this.menuButton_.el_.setAttribute('aria-expanded', 'false'),
- this.items && this.items.length <= this.hideThreshold_
- ? (this.hide(), this.menu.contentEl_.removeAttribute('role'))
- : (this.show(), this.menu.contentEl_.setAttribute('role', 'menu'))
- }),
- (t.createMenu = function () {
- var e,
- t = new hn(this.player_, { menuButton: this })
- if (
- ((this.hideThreshold_ = 0),
- this.options_.title && ((e = $('li', { className: 'vjs-menu-title', textContent: ut(this.options_.title), tabIndex: -1 })), (e = new pt(this.player_, { el: e })), t.addItem(e)),
- (this.items = this.createItems()),
- this.items)
- )
- for (var i = 0; i < this.items.length; i++) t.addItem(this.items[i])
- return t
- }),
- (t.createItems = function () {}),
- (t.createEl = function () {
- return n.prototype.createEl.call(this, 'div', { className: this.buildWrapperCSSClass() }, {})
- }),
- (t.buildWrapperCSSClass = function () {
- var e = 'vjs-menu-button'
- return !0 === this.options_.inline ? (e += '-inline') : (e += '-popup'), 'vjs-menu-button ' + e + ' ' + sn.prototype.buildCSSClass() + ' ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.buildCSSClass = function () {
- var e = 'vjs-menu-button'
- return !0 === this.options_.inline ? (e += '-inline') : (e += '-popup'), 'vjs-menu-button ' + e + ' ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.controlText = function (e, t) {
- return void 0 === t && (t = this.menuButton_.el()), this.menuButton_.controlText(e, t)
- }),
- (t.dispose = function () {
- this.handleMouseLeave(), n.prototype.dispose.call(this)
- }),
- (t.handleClick = function (e) {
- this.buttonPressed_ ? this.unpressButton() : this.pressButton()
- }),
- (t.handleMouseLeave = function (e) {
- this.removeClass('vjs-hover'), Fe(document, 'keyup', this.handleMenuKeyUp_)
- }),
- (t.focus = function () {
- this.menuButton_.focus()
- }),
- (t.blur = function () {
- this.menuButton_.blur()
- }),
- (t.handleKeyDown = function (e) {
- ht.isEventKey(e, 'Esc') || ht.isEventKey(e, 'Tab')
- ? (this.buttonPressed_ && this.unpressButton(), ht.isEventKey(e, 'Tab') || (e.preventDefault(), this.menuButton_.focus()))
- : (ht.isEventKey(e, 'Up') || ht.isEventKey(e, 'Down')) && (this.buttonPressed_ || (e.preventDefault(), this.pressButton()))
- }),
- (t.handleMenuKeyUp = function (e) {
- ;(ht.isEventKey(e, 'Esc') || ht.isEventKey(e, 'Tab')) && this.removeClass('vjs-hover')
- }),
- (t.handleSubmenuKeyPress = function (e) {
- this.handleSubmenuKeyDown(e)
- }),
- (t.handleSubmenuKeyDown = function (e) {
- ;(ht.isEventKey(e, 'Esc') || ht.isEventKey(e, 'Tab')) && (this.buttonPressed_ && this.unpressButton(), ht.isEventKey(e, 'Tab') || (e.preventDefault(), this.menuButton_.focus()))
- }),
- (t.pressButton = function () {
- this.enabled_ && ((this.buttonPressed_ = !0), this.menu.show(), this.menu.lockShowing(), this.menuButton_.el_.setAttribute('aria-expanded', 'true'), (q && Y()) || this.menu.focus())
- }),
- (t.unpressButton = function () {
- this.enabled_ && ((this.buttonPressed_ = !1), this.menu.unlockShowing(), this.menu.hide(), this.menuButton_.el_.setAttribute('aria-expanded', 'false'))
- }),
- (t.disable = function () {
- this.unpressButton(), (this.enabled_ = !1), this.addClass('vjs-disabled'), this.menuButton_.disable()
- }),
- (t.enable = function () {
- ;(this.enabled_ = !0), this.removeClass('vjs-disabled'), this.menuButton_.enable()
- }),
- e
- )
- })(pt)
- pt.registerComponent('MenuButton', Bt)
- Ft = (function (r) {
- function e(e, t) {
- var i = t.tracks,
- t = r.call(this, e, t) || this
- if ((t.items.length <= 1 && t.hide(), !i)) return ft(t)
- var n = Ve(ft(t), t.update)
- return (
- i.addEventListener('removetrack', n),
- i.addEventListener('addtrack', n),
- i.addEventListener('labelchange', n),
- t.player_.on('ready', n),
- t.player_.on('dispose', function () {
- i.removeEventListener('removetrack', n), i.removeEventListener('addtrack', n), i.removeEventListener('labelchange', n)
- }),
- t
- )
- }
- return mt(e, r), e
- })(Bt)
- pt.registerComponent('TrackButton', Ft)
- var pn = ['Tab', 'Esc', 'Up', 'Down', 'Right', 'Left'],
- jt = (function (n) {
- function e(e, t) {
- e = n.call(this, e, t) || this
- return (
- (e.selectable = t.selectable),
- (e.isSelected_ = t.selected || !1),
- (e.multiSelectable = t.multiSelectable),
- e.selected(e.isSelected_),
- e.selectable ? (e.multiSelectable ? e.el_.setAttribute('role', 'menuitemcheckbox') : e.el_.setAttribute('role', 'menuitemradio')) : e.el_.setAttribute('role', 'menuitem'),
- e
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.createEl = function (e, t, i) {
- this.nonIconControl = !0
- i = n.prototype.createEl.call(this, 'li', b({ className: 'vjs-menu-item', tabIndex: -1 }, t), i)
- return i.replaceChild($('span', { className: 'vjs-menu-item-text', textContent: this.localize(this.options_.label) }), i.querySelector('.vjs-icon-placeholder')), i
- }),
- (t.handleKeyDown = function (t) {
- pn.some(function (e) {
- return ht.isEventKey(t, e)
- }) || n.prototype.handleKeyDown.call(this, t)
- }),
- (t.handleClick = function (e) {
- this.selected(!0)
- }),
- (t.selected = function (e) {
- this.selectable &&
- (e
- ? (this.addClass('vjs-selected'), this.el_.setAttribute('aria-checked', 'true'), this.controlText(', selected'), (this.isSelected_ = !0))
- : (this.removeClass('vjs-selected'), this.el_.setAttribute('aria-checked', 'false'), this.controlText(''), (this.isSelected_ = !1)))
- }),
- e
- )
- })(C)
- pt.registerComponent('MenuItem', jt)
- var fn = (function (u) {
- function e(e, t) {
- var n,
- i = t.track,
- r = e.textTracks()
- ;(t.label = i.label || i.language || 'Unknown'),
- (t.selected = 'showing' === i.mode),
- ((n = u.call(this, e, t) || this).track = i),
- (n.kinds = (t.kinds || [t.kind || n.track.kind]).filter(Boolean))
- function a() {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- n.handleTracksChange.apply(ft(n), t)
- }
- function s() {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- n.handleSelectedLanguageChange.apply(ft(n), t)
- }
- var o
- return (
- e.on(['loadstart', 'texttrackchange'], a),
- r.addEventListener('change', a),
- r.addEventListener('selectedlanguagechange', s),
- n.on('dispose', function () {
- e.off(['loadstart', 'texttrackchange'], a), r.removeEventListener('change', a), r.removeEventListener('selectedlanguagechange', s)
- }),
- void 0 === r.onchange &&
- n.on(['tap', 'click'], function () {
- if ('object' != typeof window.Event)
- try {
- o = new window.Event('change')
- } catch (e) {}
- o || (o = document.createEvent('Event')).initEvent('change', !0, !0), r.dispatchEvent(o)
- }),
- n.handleTracksChange(),
- n
- )
- }
- mt(e, u)
- var t = e.prototype
- return (
- (t.handleClick = function (e) {
- var t = this.track,
- i = this.player_.textTracks()
- if ((u.prototype.handleClick.call(this, e), i))
- for (var n = 0; n < i.length; n++) {
- var r = i[n]
- ;-1 !== this.kinds.indexOf(r.kind) && (r === t ? 'showing' !== r.mode && (r.mode = 'showing') : 'disabled' !== r.mode && (r.mode = 'disabled'))
- }
- }),
- (t.handleTracksChange = function (e) {
- var t = 'showing' === this.track.mode
- t !== this.isSelected_ && this.selected(t)
- }),
- (t.handleSelectedLanguageChange = function (e) {
- var t
- 'showing' === this.track.mode &&
- (((t = this.player_.cache_.selectedLanguage) && t.enabled && t.language === this.track.language && t.kind !== this.track.kind) ||
- (this.player_.cache_.selectedLanguage = { enabled: !0, language: this.track.language, kind: this.track.kind }))
- }),
- (t.dispose = function () {
- ;(this.track = null), u.prototype.dispose.call(this)
- }),
- e
- )
- })(jt)
- pt.registerComponent('TextTrackMenuItem', fn)
- var mn = (function (i) {
- function e(e, t) {
- return (
- (t.track = { player: e, kind: t.kind, kinds: t.kinds, default: !1, mode: 'disabled' }),
- t.kinds || (t.kinds = [t.kind]),
- t.label ? (t.track.label = t.label) : (t.track.label = t.kinds.join(' and ') + ' off'),
- (t.selectable = !0),
- (t.multiSelectable = !1),
- i.call(this, e, t) || this
- )
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.handleTracksChange = function (e) {
- for (var t = this.player().textTracks(), i = !0, n = 0, r = t.length; n < r; n++) {
- var a = t[n]
- if (-1 < this.options_.kinds.indexOf(a.kind) && 'showing' === a.mode) {
- i = !1
- break
- }
- }
- i !== this.isSelected_ && this.selected(i)
- }),
- (t.handleSelectedLanguageChange = function (e) {
- for (var t = this.player().textTracks(), i = !0, n = 0, r = t.length; n < r; n++) {
- var a = t[n]
- if (-1 < ['captions', 'descriptions', 'subtitles'].indexOf(a.kind) && 'showing' === a.mode) {
- i = !1
- break
- }
- }
- i && (this.player_.cache_.selectedLanguage = { enabled: !1 })
- }),
- e
- )
- })(fn)
- pt.registerComponent('OffTextTrackMenuItem', mn)
- j = (function (i) {
- function e(e, t) {
- return ((t = void 0 === t ? {} : t).tracks = e.textTracks()), i.call(this, e, t) || this
- }
- return (
- mt(e, i),
- (e.prototype.createItems = function (e, t) {
- var i
- void 0 === t && (t = fn),
- this.label_ && (i = this.label_ + ' off'),
- (e = void 0 === e ? [] : e).push(new mn(this.player_, { kinds: this.kinds_, kind: this.kind_, label: i })),
- (this.hideThreshold_ += 1)
- var n = this.player_.textTracks()
- Array.isArray(this.kinds_) || (this.kinds_ = [this.kind_])
- for (var r = 0; r < n.length; r++) {
- var a,
- s = n[r]
- ;-1 < this.kinds_.indexOf(s.kind) &&
- ((a = new t(this.player_, { track: s, kinds: this.kinds_, kind: this.kind_, selectable: !0, multiSelectable: !1 })).addClass('vjs-' + s.kind + '-menu-item'), e.push(a))
- }
- return e
- }),
- e
- )
- })(Ft)
- pt.registerComponent('TextTrackButton', j)
- var gn = (function (a) {
- function e(e, t) {
- var i = t.track,
- n = t.cue,
- r = e.currentTime()
- return (t.selectable = !0), (t.multiSelectable = !1), (t.label = n.text), (t.selected = n.startTime <= r && r < n.endTime), ((t = a.call(this, e, t) || this).track = i), (t.cue = n), t
- }
- return (
- mt(e, a),
- (e.prototype.handleClick = function (e) {
- a.prototype.handleClick.call(this), this.player_.currentTime(this.cue.startTime)
- }),
- e
- )
- })(jt)
- pt.registerComponent('ChaptersTrackMenuItem', gn)
- k = (function (r) {
- function e(e, t, i) {
- var n = r.call(this, e, t, i) || this
- return (
- (n.selectCurrentItem_ = function () {
- n.items.forEach(function (e) {
- e.selected(n.track_.activeCues[0] === e.cue)
- })
- }),
- n
- )
- }
- mt(e, r)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-chapters-button ' + r.prototype.buildCSSClass.call(this)
- }),
- (t.buildWrapperCSSClass = function () {
- return 'vjs-chapters-button ' + r.prototype.buildWrapperCSSClass.call(this)
- }),
- (t.update = function (e) {
- ;(e && e.track && 'chapters' !== e.track.kind) ||
- ((e = this.findChaptersTrack()) !== this.track_
- ? (this.setTrack(e), r.prototype.update.call(this))
- : (!this.items || (e && e.cues && e.cues.length !== this.items.length)) && r.prototype.update.call(this))
- }),
- (t.setTrack = function (e) {
- var t
- this.track_ !== e &&
- (this.updateHandler_ || (this.updateHandler_ = this.update.bind(this)),
- this.track_ &&
- ((t = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_)) && t.removeEventListener('load', this.updateHandler_),
- this.track_.removeEventListener('cuechange', this.selectCurrentItem_),
- (this.track_ = null)),
- (this.track_ = e),
- this.track_ &&
- ((this.track_.mode = 'hidden'),
- (e = this.player_.remoteTextTrackEls().getTrackElementByTrack_(this.track_)) && e.addEventListener('load', this.updateHandler_),
- this.track_.addEventListener('cuechange', this.selectCurrentItem_)))
- }),
- (t.findChaptersTrack = function () {
- for (var e = this.player_.textTracks() || [], t = e.length - 1; 0 <= t; t--) {
- var i = e[t]
- if (i.kind === this.kind_) return i
- }
- }),
- (t.getMenuCaption = function () {
- return this.track_ && this.track_.label ? this.track_.label : this.localize(ut(this.kind_))
- }),
- (t.createMenu = function () {
- return (this.options_.title = this.getMenuCaption()), r.prototype.createMenu.call(this)
- }),
- (t.createItems = function () {
- var e = []
- if (!this.track_) return e
- var t = this.track_.cues
- if (!t) return e
- for (var i = 0, n = t.length; i < n; i++) {
- var r = t[i],
- r = new gn(this.player_, { track: this.track_, cue: r })
- e.push(r)
- }
- return e
- }),
- e
- )
- })(j)
- ;(k.prototype.kind_ = 'chapters'), (k.prototype.controlText_ = 'Chapters'), pt.registerComponent('ChaptersButton', k)
- li = (function (a) {
- function e(e, t, i) {
- var i = a.call(this, e, t, i) || this,
- n = e.textTracks(),
- r = Ve(ft(i), i.handleTracksChange)
- return (
- n.addEventListener('change', r),
- i.on('dispose', function () {
- n.removeEventListener('change', r)
- }),
- i
- )
- }
- mt(e, a)
- var t = e.prototype
- return (
- (t.handleTracksChange = function (e) {
- for (var t = this.player().textTracks(), i = !1, n = 0, r = t.length; n < r; n++) {
- var a = t[n]
- if (a.kind !== this.kind_ && 'showing' === a.mode) {
- i = !0
- break
- }
- }
- i ? this.disable() : this.enable()
- }),
- (t.buildCSSClass = function () {
- return 'vjs-descriptions-button ' + a.prototype.buildCSSClass.call(this)
- }),
- (t.buildWrapperCSSClass = function () {
- return 'vjs-descriptions-button ' + a.prototype.buildWrapperCSSClass.call(this)
- }),
- e
- )
- })(j)
- ;(li.prototype.kind_ = 'descriptions'), (li.prototype.controlText_ = 'Descriptions'), pt.registerComponent('DescriptionsButton', li)
- f = (function (n) {
- function e(e, t, i) {
- return n.call(this, e, t, i) || this
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-subtitles-button ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.buildWrapperCSSClass = function () {
- return 'vjs-subtitles-button ' + n.prototype.buildWrapperCSSClass.call(this)
- }),
- e
- )
- })(j)
- ;(f.prototype.kind_ = 'subtitles'), (f.prototype.controlText_ = 'Subtitles'), pt.registerComponent('SubtitlesButton', f)
- var yn = (function (i) {
- function e(e, t) {
- return (
- (t.track = { player: e, kind: t.kind, label: t.kind + ' settings', selectable: !1, default: !1, mode: 'disabled' }),
- (t.selectable = !1),
- (t.name = 'CaptionSettingsMenuItem'),
- (e = i.call(this, e, t) || this).addClass('vjs-texttrack-settings'),
- e.controlText(', opens ' + t.kind + ' settings dialog'),
- e
- )
- }
- return (
- mt(e, i),
- (e.prototype.handleClick = function (e) {
- this.player().getChild('textTrackSettings').open()
- }),
- e
- )
- })(fn)
- pt.registerComponent('CaptionSettingsMenuItem', yn)
- ui = (function (n) {
- function e(e, t, i) {
- return n.call(this, e, t, i) || this
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-captions-button ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.buildWrapperCSSClass = function () {
- return 'vjs-captions-button ' + n.prototype.buildWrapperCSSClass.call(this)
- }),
- (t.createItems = function () {
- var e = []
- return (
- (this.player().tech_ && this.player().tech_.featuresNativeTextTracks) ||
- !this.player().getChild('textTrackSettings') ||
- (e.push(new yn(this.player_, { kind: this.kind_ })), (this.hideThreshold_ += 1)),
- n.prototype.createItems.call(this, e)
- )
- }),
- e
- )
- })(j)
- ;(ui.prototype.kind_ = 'captions'), (ui.prototype.controlText_ = 'Captions'), pt.registerComponent('CaptionsButton', ui)
- var vn = (function (n) {
- function e() {
- return n.apply(this, arguments) || this
- }
- return (
- mt(e, n),
- (e.prototype.createEl = function (e, t, i) {
- ;(t = n.prototype.createEl.call(this, e, t, i)), (i = t.querySelector('.vjs-menu-item-text'))
- return (
- 'captions' === this.options_.track.kind &&
- (i.appendChild($('span', { className: 'vjs-icon-placeholder' }, { 'aria-hidden': !0 })),
- i.appendChild($('span', { className: 'vjs-control-text', textContent: ' ' + this.localize('Captions') }))),
- t
- )
- }),
- e
- )
- })(fn)
- pt.registerComponent('SubsCapsMenuItem', vn)
- Xt = (function (i) {
- function e(e, t) {
- return (
- ((t = i.call(this, e, (t = void 0 === t ? {} : t)) || this).label_ = 'subtitles'),
- -1 < ['en', 'en-us', 'en-ca', 'fr-ca'].indexOf(t.player_.language_) && (t.label_ = 'captions'),
- t.menuButton_.controlText(ut(t.label_)),
- t
- )
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-subs-caps-button ' + i.prototype.buildCSSClass.call(this)
- }),
- (t.buildWrapperCSSClass = function () {
- return 'vjs-subs-caps-button ' + i.prototype.buildWrapperCSSClass.call(this)
- }),
- (t.createItems = function () {
- var e = []
- return (
- (this.player().tech_ && this.player().tech_.featuresNativeTextTracks) ||
- !this.player().getChild('textTrackSettings') ||
- (e.push(new yn(this.player_, { kind: this.label_ })), (this.hideThreshold_ += 1)),
- (e = i.prototype.createItems.call(this, e, vn))
- )
- }),
- e
- )
- })(j)
- ;(Xt.prototype.kinds_ = ['captions', 'subtitles']), (Xt.prototype.controlText_ = 'Subtitles'), pt.registerComponent('SubsCapsButton', Xt)
- var _n = (function (s) {
- function e(e, t) {
- var n,
- i = t.track,
- r = e.audioTracks()
- ;(t.label = i.label || i.language || 'Unknown'), (t.selected = i.enabled), ((n = s.call(this, e, t) || this).track = i), n.addClass('vjs-' + i.kind + '-menu-item')
- function a() {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- n.handleTracksChange.apply(ft(n), t)
- }
- return (
- r.addEventListener('change', a),
- n.on('dispose', function () {
- r.removeEventListener('change', a)
- }),
- n
- )
- }
- mt(e, s)
- var t = e.prototype
- return (
- (t.createEl = function (e, t, i) {
- ;(t = s.prototype.createEl.call(this, e, t, i)), (i = t.querySelector('.vjs-menu-item-text'))
- return (
- 'main-desc' === this.options_.track.kind &&
- (i.appendChild($('span', { className: 'vjs-icon-placeholder' }, { 'aria-hidden': !0 })),
- i.appendChild($('span', { className: 'vjs-control-text', textContent: ' ' + this.localize('Descriptions') }))),
- t
- )
- }),
- (t.handleClick = function (e) {
- if ((s.prototype.handleClick.call(this, e), (this.track.enabled = !0), this.player_.tech_.featuresNativeAudioTracks))
- for (var t = this.player_.audioTracks(), i = 0; i < t.length; i++) {
- var n = t[i]
- n !== this.track && (n.enabled = n === this.track)
- }
- }),
- (t.handleTracksChange = function (e) {
- this.selected(this.track.enabled)
- }),
- e
- )
- })(jt)
- pt.registerComponent('AudioTrackMenuItem', _n)
- I = (function (i) {
- function e(e, t) {
- return ((t = void 0 === t ? {} : t).tracks = e.audioTracks()), i.call(this, e, t) || this
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-audio-button ' + i.prototype.buildCSSClass.call(this)
- }),
- (t.buildWrapperCSSClass = function () {
- return 'vjs-audio-button ' + i.prototype.buildWrapperCSSClass.call(this)
- }),
- (t.createItems = function (e) {
- void 0 === e && (e = []), (this.hideThreshold_ = 1)
- for (var t = this.player_.audioTracks(), i = 0; i < t.length; i++) {
- var n = t[i]
- e.push(new _n(this.player_, { track: n, selectable: !0, multiSelectable: !1 }))
- }
- return e
- }),
- e
- )
- })(Ft)
- ;(I.prototype.controlText_ = 'Audio Track'), pt.registerComponent('AudioTrackButton', I)
- var bn = (function (a) {
- function e(e, t) {
- var i,
- n = t.rate,
- r = parseFloat(n, 10)
- return (
- (t.label = n),
- (t.selected = r === e.playbackRate()),
- (t.selectable = !0),
- (t.multiSelectable = !1),
- ((i = a.call(this, e, t) || this).label = n),
- (i.rate = r),
- i.on(e, 'ratechange', function (e) {
- return i.update(e)
- }),
- i
- )
- }
- mt(e, a)
- var t = e.prototype
- return (
- (t.handleClick = function (e) {
- a.prototype.handleClick.call(this), this.player().playbackRate(this.rate)
- }),
- (t.update = function (e) {
- this.selected(this.player().playbackRate() === this.rate)
- }),
- e
- )
- })(jt)
- ;(bn.prototype.contentElType = 'button'), pt.registerComponent('PlaybackRateMenuItem', bn)
- C = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.menuButton_.el_.setAttribute('aria-describedby', i.labelElId_),
- i.updateVisibility(),
- i.updateLabel(),
- i.on(e, 'loadstart', function (e) {
- return i.updateVisibility(e)
- }),
- i.on(e, 'ratechange', function (e) {
- return i.updateLabel(e)
- }),
- i.on(e, 'playbackrateschange', function (e) {
- return i.handlePlaybackRateschange(e)
- }),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.createEl = function () {
- var e = n.prototype.createEl.call(this)
- return (
- (this.labelElId_ = 'vjs-playback-rate-value-label-' + this.id_),
- (this.labelEl_ = $('div', { className: 'vjs-playback-rate-value', id: this.labelElId_, textContent: '1x' })),
- e.appendChild(this.labelEl_),
- e
- )
- }),
- (t.dispose = function () {
- ;(this.labelEl_ = null), n.prototype.dispose.call(this)
- }),
- (t.buildCSSClass = function () {
- return 'vjs-playback-rate ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.buildWrapperCSSClass = function () {
- return 'vjs-playback-rate ' + n.prototype.buildWrapperCSSClass.call(this)
- }),
- (t.createItems = function () {
- for (var e = this.playbackRates(), t = [], i = e.length - 1; 0 <= i; i--) t.push(new bn(this.player(), { rate: e[i] + 'x' }))
- return t
- }),
- (t.updateARIAAttributes = function () {
- this.el().setAttribute('aria-valuenow', this.player().playbackRate())
- }),
- (t.handleClick = function (e) {
- var t = this.player().playbackRate(),
- i = this.playbackRates(),
- t = (i.indexOf(t) + 1) % i.length
- this.player().playbackRate(i[t])
- }),
- (t.handlePlaybackRateschange = function (e) {
- this.update()
- }),
- (t.playbackRates = function () {
- var e = this.player()
- return (e.playbackRates && e.playbackRates()) || []
- }),
- (t.playbackRateSupported = function () {
- return this.player().tech_ && this.player().tech_.featuresPlaybackRate && this.playbackRates() && 0 < this.playbackRates().length
- }),
- (t.updateVisibility = function (e) {
- this.playbackRateSupported() ? this.removeClass('vjs-hidden') : this.addClass('vjs-hidden')
- }),
- (t.updateLabel = function (e) {
- this.playbackRateSupported() && (this.labelEl_.textContent = this.player().playbackRate() + 'x')
- }),
- e
- )
- })(Bt)
- ;(C.prototype.controlText_ = 'Playback Rate'), pt.registerComponent('PlaybackRateMenuButton', C)
- k = (function (n) {
- function e() {
- return n.apply(this, arguments) || this
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-spacer ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.createEl = function (e, t, i) {
- return void 0 === e && (e = 'div'), void 0 === i && (i = {}), (t = void 0 === t ? {} : t).className || (t.className = this.buildCSSClass()), n.prototype.createEl.call(this, e, t, i)
- }),
- e
- )
- })(pt)
- pt.registerComponent('Spacer', k),
- pt.registerComponent(
- 'CustomControlSpacer',
- (function (e) {
- function t() {
- return e.apply(this, arguments) || this
- }
- mt(t, e)
- var i = t.prototype
- return (
- (i.buildCSSClass = function () {
- return 'vjs-custom-control-spacer ' + e.prototype.buildCSSClass.call(this)
- }),
- (i.createEl = function () {
- return e.prototype.createEl.call(this, 'div', { className: this.buildCSSClass(), textContent: ' ' })
- }),
- t
- )
- })(k)
- )
- li = (function (e) {
- function t() {
- return e.apply(this, arguments) || this
- }
- return (
- mt(t, e),
- (t.prototype.createEl = function () {
- return e.prototype.createEl.call(this, 'div', { className: 'vjs-control-bar', dir: 'ltr' })
- }),
- t
- )
- })(pt)
- ;(li.prototype.options_ = {
- children: [
- 'playToggle',
- 'volumePanel',
- 'currentTimeDisplay',
- 'timeDivider',
- 'durationDisplay',
- 'progressControl',
- 'liveDisplay',
- 'seekToLive',
- 'remainingTimeDisplay',
- 'customControlSpacer',
- 'playbackRateMenuButton',
- 'chaptersButton',
- 'descriptionsButton',
- 'subsCapsButton',
- 'audioTrackButton',
- 'fullscreenToggle',
- ],
- }),
- 'exitPictureInPicture' in document && li.prototype.options_.children.splice(li.prototype.options_.children.length - 1, 0, 'pictureInPictureToggle'),
- pt.registerComponent('ControlBar', li)
- f = (function (n) {
- function e(e, t) {
- var i = n.call(this, e, t) || this
- return (
- i.on(e, 'error', function (e) {
- return i.open(e)
- }),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.buildCSSClass = function () {
- return 'vjs-error-display ' + n.prototype.buildCSSClass.call(this)
- }),
- (t.content = function () {
- var e = this.player().error()
- return e ? this.localize(e.message) : ''
- }),
- e
- )
- })(At)
- ;(f.prototype.options_ = g({}, At.prototype.options_, { pauseOnOpen: !1, fillAlways: !0, temporary: !1, uncloseable: !0 })), pt.registerComponent('ErrorDisplay', f)
- var Tn = 'vjs-text-track-settings',
- ui = ['#000', 'Black'],
- j = ['#00F', 'Blue'],
- Xt = ['#0FF', 'Cyan'],
- Ft = ['#0F0', 'Green'],
- I = ['#F0F', 'Magenta'],
- jt = ['#F00', 'Red'],
- Bt = ['#FFF', 'White'],
- C = ['#FF0', 'Yellow'],
- k = ['1', 'Opaque'],
- li = ['0.5', 'Semi-Transparent'],
- f = ['0', 'Transparent'],
- Sn = {
- backgroundColor: { selector: '.vjs-bg-color > select', id: 'captions-background-color-%s', label: 'Color', options: [ui, Bt, jt, Ft, j, C, I, Xt] },
- backgroundOpacity: { selector: '.vjs-bg-opacity > select', id: 'captions-background-opacity-%s', label: 'Transparency', options: [k, li, f] },
- color: { selector: '.vjs-fg-color > select', id: 'captions-foreground-color-%s', label: 'Color', options: [Bt, ui, jt, Ft, j, C, I, Xt] },
- edgeStyle: {
- selector: '.vjs-edge-style > select',
- id: '%s',
- label: 'Text Edge Style',
- options: [
- ['none', 'None'],
- ['raised', 'Raised'],
- ['depressed', 'Depressed'],
- ['uniform', 'Uniform'],
- ['dropshadow', 'Dropshadow'],
- ],
- },
- fontFamily: {
- selector: '.vjs-font-family > select',
- id: 'captions-font-family-%s',
- label: 'Font Family',
- options: [
- ['proportionalSansSerif', 'Proportional Sans-Serif'],
- ['monospaceSansSerif', 'Monospace Sans-Serif'],
- ['proportionalSerif', 'Proportional Serif'],
- ['monospaceSerif', 'Monospace Serif'],
- ['casual', 'Casual'],
- ['script', 'Script'],
- ['small-caps', 'Small Caps'],
- ],
- },
- fontPercent: {
- selector: '.vjs-font-percent > select',
- id: 'captions-font-size-%s',
- label: 'Font Size',
- options: [
- ['0.50', '50%'],
- ['0.75', '75%'],
- ['1.00', '100%'],
- ['1.25', '125%'],
- ['1.50', '150%'],
- ['1.75', '175%'],
- ['2.00', '200%'],
- ['3.00', '300%'],
- ['4.00', '400%'],
- ],
- default: 2,
- parser: function (e) {
- return '1.00' === e ? null : Number(e)
- },
- },
- textOpacity: { selector: '.vjs-text-opacity > select', id: 'captions-foreground-opacity-%s', label: 'Transparency', options: [k, li] },
- windowColor: { selector: '.vjs-window-color > select', id: 'captions-window-color-%s', label: 'Color' },
- windowOpacity: { selector: '.vjs-window-opacity > select', id: 'captions-window-opacity-%s', label: 'Transparency', options: [f, li, k] },
- }
- function wn(e, t) {
- if ((e = t ? t(e) : e) && 'none' !== e) return e
- }
- ;(Sn.windowColor.options = Sn.backgroundColor.options),
- pt.registerComponent(
- 'TextTrackSettings',
- (function (n) {
- function e(e, t) {
- var i
- return (
- (t.temporary = !1),
- ((i = n.call(this, e, t) || this).updateDisplay = i.updateDisplay.bind(ft(i))),
- i.fill(),
- (i.hasBeenOpened_ = i.hasBeenFilled_ = !0),
- (i.endDialog = $('p', { className: 'vjs-control-text', textContent: i.localize('End of dialog window.') })),
- i.el().appendChild(i.endDialog),
- i.setDefaults(),
- void 0 === t.persistTextTrackSettings && (i.options_.persistTextTrackSettings = i.options_.playerOptions.persistTextTrackSettings),
- i.on(i.$('.vjs-done-button'), 'click', function () {
- i.saveSettings(), i.close()
- }),
- i.on(i.$('.vjs-default-button'), 'click', function () {
- i.setDefaults(), i.updateDisplay()
- }),
- _(Sn, function (e) {
- i.on(i.$(e.selector), 'change', i.updateDisplay)
- }),
- i.options_.persistTextTrackSettings && i.restoreSettings(),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.dispose = function () {
- ;(this.endDialog = null), n.prototype.dispose.call(this)
- }),
- (t.createElSelect_ = function (e, t, i) {
- var n = this
- void 0 === t && (t = ''), void 0 === i && (i = 'label')
- var e = Sn[e],
- r = e.id.replace('%s', this.id_),
- a = [t, r].join(' ').trim()
- return ['<' + i + ' id="' + r + '" class="' + ('label' === i ? 'vjs-label' : '') + '">', this.localize(e.label), '</' + i + '>', '<select aria-labelledby="' + a + '">']
- .concat(
- e.options.map(function (e) {
- var t = r + '-' + e[1].replace(/\W+/g, '')
- return ['<option id="' + t + '" value="' + e[0] + '" ', 'aria-labelledby="' + a + ' ' + t + '">', n.localize(e[1]), '</option>'].join('')
- })
- )
- .concat('</select>')
- .join('')
- }),
- (t.createElFgColor_ = function () {
- var e = 'captions-text-legend-' + this.id_
- return [
- '<fieldset class="vjs-fg-color vjs-track-setting">',
- '<legend id="' + e + '">',
- this.localize('Text'),
- '</legend>',
- this.createElSelect_('color', e),
- '<span class="vjs-text-opacity vjs-opacity">',
- this.createElSelect_('textOpacity', e),
- '</span>',
- '</fieldset>',
- ].join('')
- }),
- (t.createElBgColor_ = function () {
- var e = 'captions-background-' + this.id_
- return [
- '<fieldset class="vjs-bg-color vjs-track-setting">',
- '<legend id="' + e + '">',
- this.localize('Background'),
- '</legend>',
- this.createElSelect_('backgroundColor', e),
- '<span class="vjs-bg-opacity vjs-opacity">',
- this.createElSelect_('backgroundOpacity', e),
- '</span>',
- '</fieldset>',
- ].join('')
- }),
- (t.createElWinColor_ = function () {
- var e = 'captions-window-' + this.id_
- return [
- '<fieldset class="vjs-window-color vjs-track-setting">',
- '<legend id="' + e + '">',
- this.localize('Window'),
- '</legend>',
- this.createElSelect_('windowColor', e),
- '<span class="vjs-window-opacity vjs-opacity">',
- this.createElSelect_('windowOpacity', e),
- '</span>',
- '</fieldset>',
- ].join('')
- }),
- (t.createElColors_ = function () {
- return $('div', { className: 'vjs-track-settings-colors', innerHTML: [this.createElFgColor_(), this.createElBgColor_(), this.createElWinColor_()].join('') })
- }),
- (t.createElFont_ = function () {
- return $('div', {
- className: 'vjs-track-settings-font',
- innerHTML: [
- '<fieldset class="vjs-font-percent vjs-track-setting">',
- this.createElSelect_('fontPercent', '', 'legend'),
- '</fieldset>',
- '<fieldset class="vjs-edge-style vjs-track-setting">',
- this.createElSelect_('edgeStyle', '', 'legend'),
- '</fieldset>',
- '<fieldset class="vjs-font-family vjs-track-setting">',
- this.createElSelect_('fontFamily', '', 'legend'),
- '</fieldset>',
- ].join(''),
- })
- }),
- (t.createElControls_ = function () {
- var e = this.localize('restore all settings to the default values')
- return $('div', {
- className: 'vjs-track-settings-controls',
- innerHTML: [
- '<button type="button" class="vjs-default-button" title="' + e + '">',
- this.localize('Reset'),
- '<span class="vjs-control-text"> ' + e + '</span>',
- '</button>',
- '<button type="button" class="vjs-done-button">' + this.localize('Done') + '</button>',
- ].join(''),
- })
- }),
- (t.content = function () {
- return [this.createElColors_(), this.createElFont_(), this.createElControls_()]
- }),
- (t.label = function () {
- return this.localize('Caption Settings Dialog')
- }),
- (t.description = function () {
- return this.localize('Beginning of dialog window. Escape will cancel and close the window.')
- }),
- (t.buildCSSClass = function () {
- return n.prototype.buildCSSClass.call(this) + ' vjs-text-track-settings'
- }),
- (t.getValues = function () {
- var i,
- n,
- e,
- r = this
- return (
- (n = function (e, t, i) {
- var n,
- t = ((n = r.$(t.selector)), (t = t.parser), wn(n.options[n.options.selectedIndex].value, t))
- return void 0 !== t && (e[i] = t), e
- }),
- void 0 === (e = {}) && (e = 0),
- v((i = Sn)).reduce(function (e, t) {
- return n(e, i[t], t)
- }, e)
- )
- }),
- (t.setValues = function (i) {
- var n = this
- _(Sn, function (e, t) {
- !(function (e, t, i) {
- if (t)
- for (var n = 0; n < e.options.length; n++)
- if (wn(e.options[n].value, i) === t) {
- e.selectedIndex = n
- break
- }
- })(n.$(e.selector), i[t], e.parser)
- })
- }),
- (t.setDefaults = function () {
- var i = this
- _(Sn, function (e) {
- var t = e.hasOwnProperty('default') ? e.default : 0
- i.$(e.selector).selectedIndex = t
- })
- }),
- (t.restoreSettings = function () {
- var e
- try {
- e = JSON.parse(window.localStorage.getItem(Tn))
- } catch (e) {
- h.warn(e)
- }
- e && this.setValues(e)
- }),
- (t.saveSettings = function () {
- if (this.options_.persistTextTrackSettings) {
- var e = this.getValues()
- try {
- Object.keys(e).length ? window.localStorage.setItem(Tn, JSON.stringify(e)) : window.localStorage.removeItem(Tn)
- } catch (e) {
- h.warn(e)
- }
- }
- }),
- (t.updateDisplay = function () {
- var e = this.player_.getChild('textTrackDisplay')
- e && e.updateDisplay()
- }),
- (t.conditionalBlur_ = function () {
- this.previouslyActiveEl_ = null
- var e = this.player_.controlBar,
- t = e && e.subsCapsButton,
- e = e && e.captionsButton
- t ? t.focus() : e && e.focus()
- }),
- e
- )
- })(At)
- ),
- pt.registerComponent(
- 'ResizeManager',
- (function (a) {
- function e(e, t) {
- var i,
- n = t.ResizeObserver || window.ResizeObserver,
- r = lt({ createEl: !(n = null === t.ResizeObserver ? !1 : n), reportTouchActivity: !1 }, t)
- return (
- ((i = a.call(this, e, r) || this).ResizeObserver = t.ResizeObserver || window.ResizeObserver),
- (i.loadListener_ = null),
- (i.resizeObserver_ = null),
- (i.debouncedHandler_ = Ge(
- function () {
- i.resizeHandler()
- },
- 100,
- !1,
- ft(i)
- )),
- n
- ? ((i.resizeObserver_ = new i.ResizeObserver(i.debouncedHandler_)), i.resizeObserver_.observe(e.el()))
- : ((i.loadListener_ = function () {
- var e, t
- i.el_ &&
- i.el_.contentWindow &&
- ((e = i.debouncedHandler_),
- (t = i.unloadListener_ =
- function () {
- Fe(this, 'resize', e), Fe(this, 'unload', t), (t = null)
- }),
- Be(i.el_.contentWindow, 'unload', t),
- Be(i.el_.contentWindow, 'resize', e))
- }),
- i.one('load', i.loadListener_)),
- i
- )
- }
- mt(e, a)
- var t = e.prototype
- return (
- (t.createEl = function () {
- return a.prototype.createEl.call(this, 'iframe', { className: 'vjs-resize-manager', tabIndex: -1, title: this.localize('No content') }, { 'aria-hidden': 'true' })
- }),
- (t.resizeHandler = function () {
- this.player_ && this.player_.trigger && this.player_.trigger('playerresize')
- }),
- (t.dispose = function () {
- this.debouncedHandler_ && this.debouncedHandler_.cancel(),
- this.resizeObserver_ && (this.player_.el() && this.resizeObserver_.unobserve(this.player_.el()), this.resizeObserver_.disconnect()),
- this.loadListener_ && this.off('load', this.loadListener_),
- this.el_ && this.el_.contentWindow && this.unloadListener_ && this.unloadListener_.call(this.el_.contentWindow),
- (this.ResizeObserver = null),
- (this.resizeObserver = null),
- (this.debouncedHandler_ = null),
- (this.loadListener_ = null),
- a.prototype.dispose.call(this)
- }),
- e
- )
- })(pt)
- )
- var En = { trackingThreshold: 20, liveTolerance: 15 }
- pt.registerComponent(
- 'LiveTracker',
- (function (n) {
- function e(e, t) {
- var t = lt(En, t, { createEl: !1 }),
- i = n.call(this, e, t) || this
- return (
- (i.handleVisibilityChange_ = function (e) {
- return i.handleVisibilityChange(e)
- }),
- (i.trackLiveHandler_ = function () {
- return i.trackLive_()
- }),
- (i.handlePlay_ = function (e) {
- return i.handlePlay(e)
- }),
- (i.handleFirstTimeupdate_ = function (e) {
- return i.handleFirstTimeupdate(e)
- }),
- (i.handleSeeked_ = function (e) {
- return i.handleSeeked(e)
- }),
- (i.seekToLiveEdge_ = function (e) {
- return i.seekToLiveEdge(e)
- }),
- i.reset_(),
- i.on(i.player_, 'durationchange', function (e) {
- return i.handleDurationchange(e)
- }),
- i.on(i.player_, 'canplay', function () {
- return i.toggleTracking()
- }),
- N && 'hidden' in document && 'visibilityState' in document && i.on(document, 'visibilitychange', i.handleVisibilityChange_),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.handleVisibilityChange = function () {
- this.player_.duration() === 1 / 0 && (document.hidden ? this.stopTracking() : this.startTracking())
- }),
- (t.trackLive_ = function () {
- var e,
- t = this.player_.seekable()
- t &&
- t.length &&
- ((e = Number(window.performance.now().toFixed(4))),
- (t = -1 === this.lastTime_ ? 0 : (e - this.lastTime_) / 1e3),
- (this.lastTime_ = e),
- (this.pastSeekEnd_ = this.pastSeekEnd() + t),
- (e = this.liveCurrentTime()),
- (t = this.player_.currentTime()),
- (t = this.player_.paused() || this.seekedBehindLive_ || Math.abs(e - t) > this.options_.liveTolerance),
- (t = !this.timeupdateSeen_ || e === 1 / 0 ? !1 : t) !== this.behindLiveEdge_ && ((this.behindLiveEdge_ = t), this.trigger('liveedgechange')))
- }),
- (t.handleDurationchange = function () {
- this.toggleTracking()
- }),
- (t.toggleTracking = function () {
- this.player_.duration() === 1 / 0 && this.liveWindow() >= this.options_.trackingThreshold
- ? (this.player_.options_.liveui && this.player_.addClass('vjs-liveui'), this.startTracking())
- : (this.player_.removeClass('vjs-liveui'), this.stopTracking())
- }),
- (t.startTracking = function () {
- this.isTracking() ||
- (this.timeupdateSeen_ || (this.timeupdateSeen_ = this.player_.hasStarted()),
- (this.trackingInterval_ = this.setInterval(this.trackLiveHandler_, 30)),
- this.trackLive_(),
- this.on(this.player_, ['play', 'pause'], this.trackLiveHandler_),
- this.timeupdateSeen_
- ? this.on(this.player_, 'seeked', this.handleSeeked_)
- : (this.one(this.player_, 'play', this.handlePlay_), this.one(this.player_, 'timeupdate', this.handleFirstTimeupdate_)))
- }),
- (t.handleFirstTimeupdate = function () {
- ;(this.timeupdateSeen_ = !0), this.on(this.player_, 'seeked', this.handleSeeked_)
- }),
- (t.handleSeeked = function () {
- var e = Math.abs(this.liveCurrentTime() - this.player_.currentTime())
- ;(this.seekedBehindLive_ = this.nextSeekedFromUser_ && 2 < e), (this.nextSeekedFromUser_ = !1), this.trackLive_()
- }),
- (t.handlePlay = function () {
- this.one(this.player_, 'timeupdate', this.seekToLiveEdge_)
- }),
- (t.reset_ = function () {
- ;(this.lastTime_ = -1),
- (this.pastSeekEnd_ = 0),
- (this.lastSeekEnd_ = -1),
- (this.behindLiveEdge_ = !0),
- (this.timeupdateSeen_ = !1),
- (this.seekedBehindLive_ = !1),
- (this.nextSeekedFromUser_ = !1),
- this.clearInterval(this.trackingInterval_),
- (this.trackingInterval_ = null),
- this.off(this.player_, ['play', 'pause'], this.trackLiveHandler_),
- this.off(this.player_, 'seeked', this.handleSeeked_),
- this.off(this.player_, 'play', this.handlePlay_),
- this.off(this.player_, 'timeupdate', this.handleFirstTimeupdate_),
- this.off(this.player_, 'timeupdate', this.seekToLiveEdge_)
- }),
- (t.nextSeekedFromUser = function () {
- this.nextSeekedFromUser_ = !0
- }),
- (t.stopTracking = function () {
- this.isTracking() && (this.reset_(), this.trigger('liveedgechange'))
- }),
- (t.seekableEnd = function () {
- for (var e = this.player_.seekable(), t = [], i = e ? e.length : 0; i--; ) t.push(e.end(i))
- return t.length ? t.sort()[t.length - 1] : 1 / 0
- }),
- (t.seekableStart = function () {
- for (var e = this.player_.seekable(), t = [], i = e ? e.length : 0; i--; ) t.push(e.start(i))
- return t.length ? t.sort()[0] : 0
- }),
- (t.liveWindow = function () {
- var e = this.liveCurrentTime()
- return e === 1 / 0 ? 0 : e - this.seekableStart()
- }),
- (t.isLive = function () {
- return this.isTracking()
- }),
- (t.atLiveEdge = function () {
- return !this.behindLiveEdge()
- }),
- (t.liveCurrentTime = function () {
- return this.pastSeekEnd() + this.seekableEnd()
- }),
- (t.pastSeekEnd = function () {
- var e = this.seekableEnd()
- return -1 !== this.lastSeekEnd_ && e !== this.lastSeekEnd_ && (this.pastSeekEnd_ = 0), (this.lastSeekEnd_ = e), this.pastSeekEnd_
- }),
- (t.behindLiveEdge = function () {
- return this.behindLiveEdge_
- }),
- (t.isTracking = function () {
- return 'number' == typeof this.trackingInterval_
- }),
- (t.seekToLiveEdge = function () {
- ;(this.seekedBehindLive_ = !1), this.atLiveEdge() || ((this.nextSeekedFromUser_ = !1), this.player_.currentTime(this.liveCurrentTime()))
- }),
- (t.dispose = function () {
- this.off(document, 'visibilitychange', this.handleVisibilityChange_), this.stopTracking(), n.prototype.dispose.call(this)
- }),
- e
- )
- })(pt)
- )
- function kn(e) {
- if ((n = e.el()).hasAttribute('src')) return e.triggerSourceset(n.src), 1
- var t = e.$$('source'),
- i = [],
- n = ''
- if (t.length) {
- for (var r = 0; r < t.length; r++) {
- var a = t[r].src
- a && -1 === i.indexOf(a) && i.push(a)
- }
- return !!i.length && (1 === i.length && (n = i[0]), e.triggerSourceset(n), !0)
- }
- }
- function Cn(e, t) {
- for (var i = {}, n = 0; n < e.length && !((i = Object.getOwnPropertyDescriptor(e[n], t)) && i.set && i.get); n++);
- return (i.enumerable = !0), (i.configurable = !0), i
- }
- function In(a) {
- var t,
- e,
- i,
- s = a.el()
- s.resetSourceWatch_ ||
- ((t = {}),
- (e = Cn([a.el(), window.HTMLMediaElement.prototype, window.Element.prototype, Ln], 'innerHTML')),
- (i = function (r) {
- return function () {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- var n = r.apply(s, t)
- return kn(a), n
- }
- }),
- ['append', 'appendChild', 'insertAdjacentHTML'].forEach(function (e) {
- s[e] && ((t[e] = s[e]), (s[e] = i(t[e])))
- }),
- Object.defineProperty(s, 'innerHTML', lt(e, { set: i(e.set) })),
- (s.resetSourceWatch_ = function () {
- ;(s.resetSourceWatch_ = null),
- Object.keys(t).forEach(function (e) {
- s[e] = t[e]
- }),
- Object.defineProperty(s, 'innerHTML', e)
- }),
- a.one('sourceset', s.resetSourceWatch_))
- }
- function xn(i) {
- var n, t, r, a
- i.featuresSourceset &&
- ((n = i.el()).resetSourceset_ ||
- ((t = Cn([i.el(), window.HTMLMediaElement.prototype, Dn], 'src')),
- (r = n.setAttribute),
- (a = n.load),
- Object.defineProperty(
- n,
- 'src',
- lt(t, {
- set: function (e) {
- e = t.set.call(n, e)
- return i.triggerSourceset(n.src), e
- },
- })
- ),
- (n.setAttribute = function (e, t) {
- t = r.call(n, e, t)
- return /src/i.test(e) && i.triggerSourceset(n.src), t
- }),
- (n.load = function () {
- var e = a.call(n)
- return kn(i) || (i.triggerSourceset(''), In(i)), e
- }),
- n.currentSrc ? i.triggerSourceset(n.currentSrc) : kn(i) || In(i),
- (n.resetSourceset_ = function () {
- ;(n.resetSourceset_ = null), (n.load = a), (n.setAttribute = r), Object.defineProperty(n, 'src', t), n.resetSourceWatch_ && n.resetSourceWatch_()
- })))
- }
- function An(t, i, n, e) {
- function r(e) {
- return Object.defineProperty(t, i, { value: e, enumerable: !0, writable: !0 })
- }
- var a = {
- configurable: !0,
- enumerable: !0,
- get: function () {
- var e = n()
- return r(e), e
- },
- }
- return (e = void 0 === e ? !0 : e) && (a.set = r), Object.defineProperty(t, i, a)
- }
- var Pn,
- Ln = Object.defineProperty({}, 'innerHTML', {
- get: function () {
- return this.cloneNode(!0).innerHTML
- },
- set: function (e) {
- var t = document.createElement(this.nodeName.toLowerCase())
- t.innerHTML = e
- for (var i = document.createDocumentFragment(); t.childNodes.length; ) i.appendChild(t.childNodes[0])
- return (this.innerText = ''), window.Element.prototype.appendChild.call(this, i), this.innerHTML
- },
- }),
- Dn = Object.defineProperty({}, 'src', {
- get: function () {
- return this.hasAttribute('src') ? Rt(window.Element.prototype.getAttribute.call(this, 'src')) : ''
- },
- set: function (e) {
- return window.Element.prototype.setAttribute.call(this, 'src', e), e
- },
- }),
- On = (function (l) {
- function s(e, t) {
- var i = l.call(this, e, t) || this,
- t = e.source,
- n = !1
- if (
- ((i.featuresVideoFrameCallback = i.featuresVideoFrameCallback && 'VIDEO' === i.el_.tagName),
- t && (i.el_.currentSrc !== t.src || (e.tag && 3 === e.tag.initNetworkState_)) ? i.setSource(t) : i.handleLateInit_(i.el_),
- e.enableSourceset && i.setupSourcesetHandling_(),
- (i.isScrubbing_ = !1),
- i.el_.hasChildNodes())
- ) {
- for (var r = i.el_.childNodes, a = r.length, s = []; a--; ) {
- var o = r[a]
- 'track' === o.nodeName.toLowerCase() &&
- (i.featuresNativeTextTracks
- ? (i.remoteTextTrackEls().addTrackElement_(o),
- i.remoteTextTracks().addTrack(o.track),
- i.textTracks().addTrack(o.track),
- n || i.el_.hasAttribute('crossorigin') || !Ut(o.src) || (n = !0))
- : s.push(o))
- }
- for (var u = 0; u < s.length; u++) i.el_.removeChild(s[u])
- }
- return (
- i.proxyNativeTracks_(),
- i.featuresNativeTextTracks && n && h.warn("Text Tracks are being loaded from another origin but the crossorigin attribute isn't used.\nThis may prevent text tracks from loading."),
- i.restoreMetadataTracksInIOSNativePlayer_(),
- (F || H || L) && !0 === e.nativeControlsForTouch && i.setControls(!0),
- i.proxyWebkitFullscreen_(),
- i.triggerReady(),
- i
- )
- }
- mt(s, l)
- var e = s.prototype
- return (
- (e.dispose = function () {
- this.el_ && this.el_.resetSourceset_ && this.el_.resetSourceset_(), s.disposeMediaElement(this.el_), (this.options_ = null), l.prototype.dispose.call(this)
- }),
- (e.setupSourcesetHandling_ = function () {
- xn(this)
- }),
- (e.restoreMetadataTracksInIOSNativePlayer_ = function () {
- function e() {
- i = []
- for (var e = 0; e < n.length; e++) {
- var t = n[e]
- 'metadata' === t.kind && i.push({ track: t, storedMode: t.mode })
- }
- }
- var i,
- n = this.textTracks()
- e(),
- n.addEventListener('change', e),
- this.on('dispose', function () {
- return n.removeEventListener('change', e)
- })
- function r() {
- for (var e = 0; e < i.length; e++) {
- var t = i[e]
- 'disabled' === t.track.mode && t.track.mode !== t.storedMode && (t.track.mode = t.storedMode)
- }
- n.removeEventListener('change', r)
- }
- this.on('webkitbeginfullscreen', function () {
- n.removeEventListener('change', e), n.removeEventListener('change', r), n.addEventListener('change', r)
- }),
- this.on('webkitendfullscreen', function () {
- n.removeEventListener('change', e), n.addEventListener('change', e), n.removeEventListener('change', r)
- })
- }),
- (e.overrideNative_ = function (e, t) {
- var i,
- n = this
- t === this['featuresNative' + e + 'Tracks'] &&
- (this[(i = e.toLowerCase()) + 'TracksListeners_'] &&
- Object.keys(this[i + 'TracksListeners_']).forEach(function (e) {
- n.el()[i + 'Tracks'].removeEventListener(e, n[i + 'TracksListeners_'][e])
- }),
- (this['featuresNative' + e + 'Tracks'] = !t),
- (this[i + 'TracksListeners_'] = null),
- this.proxyNativeTracksForType_(i))
- }),
- (e.overrideNativeAudioTracks = function (e) {
- this.overrideNative_('Audio', e)
- }),
- (e.overrideNativeVideoTracks = function (e) {
- this.overrideNative_('Video', e)
- }),
- (e.proxyNativeTracksForType_ = function (i) {
- var e,
- t,
- n = this,
- r = ai[i],
- a = this.el()[r.getterName],
- s = this[r.getterName]()
- this['featuresNative' + r.capitalName + 'Tracks'] &&
- a &&
- a.addEventListener &&
- ((t = function () {
- for (var e = [], t = 0; t < s.length; t++) {
- for (var i = !1, n = 0; n < a.length; n++)
- if (a[n] === s[t]) {
- i = !0
- break
- }
- i || e.push(s[t])
- }
- for (; e.length; ) s.removeTrack(e.shift())
- }),
- (this[r.getterName + 'Listeners_'] = e =
- {
- change: function (e) {
- var t = { type: 'change', target: s, currentTarget: s, srcElement: s }
- s.trigger(t), 'text' === i && n[si.remoteText.getterName]().trigger(t)
- },
- addtrack: function (e) {
- s.addTrack(e.track)
- },
- removetrack: function (e) {
- s.removeTrack(e.track)
- },
- }),
- Object.keys(e).forEach(function (t) {
- var i = e[t]
- a.addEventListener(t, i),
- n.on('dispose', function (e) {
- return a.removeEventListener(t, i)
- })
- }),
- this.on('loadstart', t),
- this.on('dispose', function (e) {
- return n.off('loadstart', t)
- }))
- }),
- (e.proxyNativeTracks_ = function () {
- var t = this
- ai.names.forEach(function (e) {
- t.proxyNativeTracksForType_(e)
- })
- }),
- (e.createEl = function () {
- var e,
- t = this.options_.tag
- ;(t && (this.options_.playerElIngest || this.movingMediaElementInDOM)) ||
- (t
- ? ((e = t.cloneNode(!0)), t.parentNode && t.parentNode.insertBefore(e, t), s.disposeMediaElement(t), (t = e))
- : ((t = document.createElement('video')),
- (e = lt({}, this.options_.tag && ae(this.options_.tag))),
- (F && !0 === this.options_.nativeControlsForTouch) || delete e.controls,
- re(t, b(e, { id: this.options_.techId, class: 'vjs-tech' }))),
- (t.playerId = this.options_.playerId)),
- 'undefined' != typeof this.options_.preload && oe(t, 'preload', this.options_.preload),
- void 0 !== this.options_.disablePictureInPicture && (t.disablePictureInPicture = this.options_.disablePictureInPicture)
- for (var i = ['loop', 'muted', 'playsinline', 'autoplay'], n = 0; n < i.length; n++) {
- var r = i[n],
- a = this.options_[r]
- 'undefined' != typeof a && (a ? oe(t, r, r) : ue(t, r), (t[r] = a))
- }
- return t
- }),
- (e.handleLateInit_ = function (e) {
- if (0 !== e.networkState && 3 !== e.networkState) {
- if (0 === e.readyState) {
- var t = !1,
- i = function () {
- t = !0
- }
- this.on('loadstart', i)
- var n = function () {
- t || this.trigger('loadstart')
- }
- return (
- this.on('loadedmetadata', n),
- void this.ready(function () {
- this.off('loadstart', i), this.off('loadedmetadata', n), t || this.trigger('loadstart')
- })
- )
- }
- var r = ['loadstart']
- r.push('loadedmetadata'),
- 2 <= e.readyState && r.push('loadeddata'),
- 3 <= e.readyState && r.push('canplay'),
- 4 <= e.readyState && r.push('canplaythrough'),
- this.ready(function () {
- r.forEach(function (e) {
- this.trigger(e)
- }, this)
- })
- }
- }),
- (e.setScrubbing = function (e) {
- this.isScrubbing_ = e
- }),
- (e.scrubbing = function () {
- return this.isScrubbing_
- }),
- (e.setCurrentTime = function (e) {
- try {
- this.isScrubbing_ && this.el_.fastSeek && V ? this.el_.fastSeek(e) : (this.el_.currentTime = e)
- } catch (e) {
- h(e, 'Video is not ready. (Video.js)')
- }
- }),
- (e.duration = function () {
- var t = this
- return this.el_.duration === 1 / 0 && A && M && 0 === this.el_.currentTime
- ? (this.on('timeupdate', function e() {
- 0 < t.el_.currentTime && (t.el_.duration === 1 / 0 && t.trigger('durationchange'), t.off('timeupdate', e))
- }),
- NaN)
- : this.el_.duration || NaN
- }),
- (e.width = function () {
- return this.el_.offsetWidth
- }),
- (e.height = function () {
- return this.el_.offsetHeight
- }),
- (e.proxyWebkitFullscreen_ = function () {
- var e,
- t,
- i = this
- 'webkitDisplayingFullscreen' in this.el_ &&
- ((e = function () {
- this.trigger('fullscreenchange', { isFullscreen: !1 }), this.el_.controls && !this.options_.nativeControlsForTouch && this.controls() && (this.el_.controls = !1)
- }),
- (t = function () {
- 'webkitPresentationMode' in this.el_ &&
- 'picture-in-picture' !== this.el_.webkitPresentationMode &&
- (this.one('webkitendfullscreen', e), this.trigger('fullscreenchange', { isFullscreen: !0, nativeIOSFullscreen: !0 }))
- }),
- this.on('webkitbeginfullscreen', t),
- this.on('dispose', function () {
- i.off('webkitbeginfullscreen', t), i.off('webkitendfullscreen', e)
- }))
- }),
- (e.supportsFullScreen = function () {
- if ('function' == typeof this.el_.webkitEnterFullScreen) {
- var e = (window.navigator && window.navigator.userAgent) || ''
- if (/Android/.test(e) || !/Chrome|Mac OS X 10.5/.test(e)) return !0
- }
- return !1
- }),
- (e.enterFullScreen = function () {
- var e = this.el_
- if (e.paused && e.networkState <= e.HAVE_METADATA)
- Et(this.el_.play()),
- this.setTimeout(function () {
- e.pause()
- try {
- e.webkitEnterFullScreen()
- } catch (e) {
- this.trigger('fullscreenerror', e)
- }
- }, 0)
- else
- try {
- e.webkitEnterFullScreen()
- } catch (e) {
- this.trigger('fullscreenerror', e)
- }
- }),
- (e.exitFullScreen = function () {
- this.el_.webkitDisplayingFullscreen ? this.el_.webkitExitFullScreen() : this.trigger('fullscreenerror', new Error('The video is not fullscreen'))
- }),
- (e.requestPictureInPicture = function () {
- return this.el_.requestPictureInPicture()
- }),
- (e.requestVideoFrameCallback = function (e) {
- return this.featuresVideoFrameCallback && !this.el_.webkitKeys ? this.el_.requestVideoFrameCallback(e) : l.prototype.requestVideoFrameCallback.call(this, e)
- }),
- (e.cancelVideoFrameCallback = function (e) {
- this.featuresVideoFrameCallback && !this.el_.webkitKeys ? this.el_.cancelVideoFrameCallback(e) : l.prototype.cancelVideoFrameCallback.call(this, e)
- }),
- (e.src = function (e) {
- if (void 0 === e) return this.el_.src
- this.setSrc(e)
- }),
- (e.reset = function () {
- s.resetMediaElement(this.el_)
- }),
- (e.currentSrc = function () {
- return this.currentSource_ ? this.currentSource_.src : this.el_.currentSrc
- }),
- (e.setControls = function (e) {
- this.el_.controls = !!e
- }),
- (e.addTextTrack = function (e, t, i) {
- return this.featuresNativeTextTracks ? this.el_.addTextTrack(e, t, i) : l.prototype.addTextTrack.call(this, e, t, i)
- }),
- (e.createRemoteTextTrack = function (e) {
- if (!this.featuresNativeTextTracks) return l.prototype.createRemoteTextTrack.call(this, e)
- var t = document.createElement('track')
- return (
- e.kind && (t.kind = e.kind),
- e.label && (t.label = e.label),
- (e.language || e.srclang) && (t.srclang = e.language || e.srclang),
- e.default && (t.default = e.default),
- e.id && (t.id = e.id),
- e.src && (t.src = e.src),
- t
- )
- }),
- (e.addRemoteTextTrack = function (e, t) {
- t = l.prototype.addRemoteTextTrack.call(this, e, t)
- return this.featuresNativeTextTracks && this.el().appendChild(t), t
- }),
- (e.removeRemoteTextTrack = function (e) {
- if ((l.prototype.removeRemoteTextTrack.call(this, e), this.featuresNativeTextTracks))
- for (var t = this.$$('track'), i = t.length; i--; ) (e !== t[i] && e !== t[i].track) || this.el().removeChild(t[i])
- }),
- (e.getVideoPlaybackQuality = function () {
- if ('function' == typeof this.el().getVideoPlaybackQuality) return this.el().getVideoPlaybackQuality()
- var e = {}
- return (
- 'undefined' != typeof this.el().webkitDroppedFrameCount &&
- 'undefined' != typeof this.el().webkitDecodedFrameCount &&
- ((e.droppedVideoFrames = this.el().webkitDroppedFrameCount), (e.totalVideoFrames = this.el().webkitDecodedFrameCount)),
- window.performance && 'function' == typeof window.performance.now
- ? (e.creationTime = window.performance.now())
- : window.performance &&
- window.performance.timing &&
- 'number' == typeof window.performance.timing.navigationStart &&
- (e.creationTime = window.Date.now() - window.performance.timing.navigationStart),
- e
- )
- }),
- s
- )
- })(ji)
- An(On, 'TEST_VID', function () {
- if (X()) {
- var e = document.createElement('video'),
- t = document.createElement('track')
- return (t.kind = 'captions'), (t.srclang = 'en'), (t.label = 'English'), e.appendChild(t), e
- }
- }),
- (On.isSupported = function () {
- try {
- On.TEST_VID.volume = 0.5
- } catch (e) {
- return !1
- }
- return !(!On.TEST_VID || !On.TEST_VID.canPlayType)
- }),
- (On.canPlayType = function (e) {
- return On.TEST_VID.canPlayType(e)
- }),
- (On.canPlaySource = function (e, t) {
- return On.canPlayType(e.type)
- }),
- (On.canControlVolume = function () {
- try {
- var e = On.TEST_VID.volume
- On.TEST_VID.volume = e / 2 + 0.1
- var t = e !== On.TEST_VID.volume
- return t && q
- ? (window.setTimeout(function () {
- On && On.prototype && (On.prototype.featuresVolumeControl = e !== On.TEST_VID.volume)
- }),
- !1)
- : t
- } catch (e) {
- return !1
- }
- }),
- (On.canMuteVolume = function () {
- try {
- var e = On.TEST_VID.muted
- return (On.TEST_VID.muted = !e), On.TEST_VID.muted ? oe(On.TEST_VID, 'muted', 'muted') : ue(On.TEST_VID, 'muted'), e !== On.TEST_VID.muted
- } catch (e) {
- return !1
- }
- }),
- (On.canControlPlaybackRate = function () {
- if (A && M && R < 58) return !1
- try {
- var e = On.TEST_VID.playbackRate
- return (On.TEST_VID.playbackRate = e / 2 + 0.1), e !== On.TEST_VID.playbackRate
- } catch (e) {
- return !1
- }
- }),
- (On.canOverrideAttributes = function () {
- try {
- var e = function () {}
- Object.defineProperty(document.createElement('video'), 'src', { get: e, set: e }),
- Object.defineProperty(document.createElement('audio'), 'src', { get: e, set: e }),
- Object.defineProperty(document.createElement('video'), 'innerHTML', { get: e, set: e }),
- Object.defineProperty(document.createElement('audio'), 'innerHTML', { get: e, set: e })
- } catch (e) {
- return !1
- }
- return !0
- }),
- (On.supportsNativeTextTracks = function () {
- return V || (q && M)
- }),
- (On.supportsNativeVideoTracks = function () {
- return !(!On.TEST_VID || !On.TEST_VID.videoTracks)
- }),
- (On.supportsNativeAudioTracks = function () {
- return !(!On.TEST_VID || !On.TEST_VID.audioTracks)
- }),
- (On.Events = [
- 'loadstart',
- 'suspend',
- 'abort',
- 'error',
- 'emptied',
- 'stalled',
- 'loadedmetadata',
- 'loadeddata',
- 'canplay',
- 'canplaythrough',
- 'playing',
- 'waiting',
- 'seeking',
- 'seeked',
- 'ended',
- 'durationchange',
- 'timeupdate',
- 'progress',
- 'play',
- 'pause',
- 'ratechange',
- 'resize',
- 'volumechange',
- ]),
- [
- ['featuresMuteControl', 'canMuteVolume'],
- ['featuresPlaybackRate', 'canControlPlaybackRate'],
- ['featuresSourceset', 'canOverrideAttributes'],
- ['featuresNativeTextTracks', 'supportsNativeTextTracks'],
- ['featuresNativeVideoTracks', 'supportsNativeVideoTracks'],
- ['featuresNativeAudioTracks', 'supportsNativeAudioTracks'],
- ].forEach(function (e) {
- var t = e[0],
- i = e[1]
- An(
- On.prototype,
- t,
- function () {
- return On[i]()
- },
- !0
- )
- }),
- (On.prototype.featuresVolumeControl = On.canControlVolume()),
- (On.prototype.movingMediaElementInDOM = !q),
- (On.prototype.featuresFullscreenResize = !0),
- (On.prototype.featuresProgressEvents = !0),
- (On.prototype.featuresTimeupdateEvents = !0),
- (On.prototype.featuresVideoFrameCallback = !(!On.TEST_VID || !On.TEST_VID.requestVideoFrameCallback)),
- (On.patchCanPlayType = function () {
- 4 <= P &&
- !D &&
- !M &&
- ((Pn = On.TEST_VID && On.TEST_VID.constructor.prototype.canPlayType),
- (On.TEST_VID.constructor.prototype.canPlayType = function (e) {
- return e && /^application\/(?:x-|vnd\.apple\.)mpegurl/i.test(e) ? 'maybe' : Pn.call(this, e)
- }))
- }),
- (On.unpatchCanPlayType = function () {
- var e = On.TEST_VID.constructor.prototype.canPlayType
- return Pn && (On.TEST_VID.constructor.prototype.canPlayType = Pn), e
- }),
- On.patchCanPlayType(),
- (On.disposeMediaElement = function (e) {
- if (e) {
- for (e.parentNode && e.parentNode.removeChild(e); e.hasChildNodes(); ) e.removeChild(e.firstChild)
- e.removeAttribute('src'),
- 'function' == typeof e.load &&
- (function () {
- try {
- e.load()
- } catch (e) {}
- })()
- }
- }),
- (On.resetMediaElement = function (e) {
- if (e) {
- for (var t = e.querySelectorAll('source'), i = t.length; i--; ) e.removeChild(t[i])
- e.removeAttribute('src'),
- 'function' == typeof e.load &&
- (function () {
- try {
- e.load()
- } catch (e) {}
- })()
- }
- }),
- ['muted', 'defaultMuted', 'autoplay', 'controls', 'loop', 'playsinline'].forEach(function (e) {
- On.prototype[e] = function () {
- return this.el_[e] || this.el_.hasAttribute(e)
- }
- }),
- ['muted', 'defaultMuted', 'autoplay', 'loop', 'playsinline'].forEach(function (t) {
- On.prototype['set' + ut(t)] = function (e) {
- ;(this.el_[t] = e) ? this.el_.setAttribute(t, t) : this.el_.removeAttribute(t)
- }
- }),
- [
- 'paused',
- 'currentTime',
- 'buffered',
- 'volume',
- 'poster',
- 'preload',
- 'error',
- 'seeking',
- 'seekable',
- 'ended',
- 'playbackRate',
- 'defaultPlaybackRate',
- 'disablePictureInPicture',
- 'played',
- 'networkState',
- 'readyState',
- 'videoWidth',
- 'videoHeight',
- 'crossOrigin',
- ].forEach(function (e) {
- On.prototype[e] = function () {
- return this.el_[e]
- }
- }),
- ['volume', 'src', 'poster', 'preload', 'playbackRate', 'defaultPlaybackRate', 'disablePictureInPicture', 'crossOrigin'].forEach(function (t) {
- On.prototype['set' + ut(t)] = function (e) {
- this.el_[t] = e
- }
- }),
- ['pause', 'load', 'play'].forEach(function (e) {
- On.prototype[e] = function () {
- return this.el_[e]()
- }
- }),
- ji.withSourceHandlers(On),
- (On.nativeSourceHandler = {}),
- (On.nativeSourceHandler.canPlayType = function (e) {
- try {
- return On.TEST_VID.canPlayType(e)
- } catch (e) {
- return ''
- }
- }),
- (On.nativeSourceHandler.canHandleSource = function (e, t) {
- if (e.type) return On.nativeSourceHandler.canPlayType(e.type)
- if (e.src) {
- e = Nt(e.src)
- return On.nativeSourceHandler.canPlayType('video/' + e)
- }
- return ''
- }),
- (On.nativeSourceHandler.handleSource = function (e, t, i) {
- t.setSrc(e.src)
- }),
- (On.nativeSourceHandler.dispose = function () {}),
- On.registerSourceHandler(On.nativeSourceHandler),
- ji.registerTech('Html5', On)
- var Mn = ['progress', 'abort', 'suspend', 'emptied', 'stalled', 'loadedmetadata', 'loadeddata', 'timeupdate', 'resize', 'volumechange', 'texttrackchange'],
- Rn = { canplay: 'CanPlay', canplaythrough: 'CanPlayThrough', playing: 'Playing', seeked: 'Seeked' },
- Nn = ['tiny', 'xsmall', 'small', 'medium', 'large', 'xlarge', 'huge'],
- Un = {}
- Nn.forEach(function (e) {
- var t = 'x' === e.charAt(0) ? 'x-' + e.substring(1) : e
- Un[e] = 'vjs-layout-' + t
- })
- var Bn = { tiny: 210, xsmall: 320, small: 425, medium: 768, large: 1440, xlarge: 2560, huge: 1 / 0 },
- Fn = (function (c) {
- function o(e, t, i) {
- var n, r
- if (((e.id = e.id || t.id || 'vjs_video_' + Pe++), ((t = b(o.getTagSettings(e), t)).initChildren = !1), (t.createEl = !1), (t.evented = !1), (t.reportTouchActivity = !1), !t.language))
- if ('function' == typeof e.closest) {
- var a = e.closest('[lang]')
- a && a.getAttribute && (t.language = a.getAttribute('lang'))
- } else
- for (var s = e; s && 1 === s.nodeType; ) {
- if (ae(s).hasOwnProperty('lang')) {
- t.language = s.getAttribute('lang')
- break
- }
- s = s.parentNode
- }
- if (
- (((n = c.call(this, null, t, i) || this).boundDocumentFullscreenChange_ = function (e) {
- return n.documentFullscreenChange_(e)
- }),
- (n.boundFullWindowOnEscKey_ = function (e) {
- return n.fullWindowOnEscKey(e)
- }),
- (n.boundUpdateStyleEl_ = function (e) {
- return n.updateStyleEl_(e)
- }),
- (n.boundApplyInitTime_ = function (e) {
- return n.applyInitTime_(e)
- }),
- (n.boundUpdateCurrentBreakpoint_ = function (e) {
- return n.updateCurrentBreakpoint_(e)
- }),
- (n.boundHandleTechClick_ = function (e) {
- return n.handleTechClick_(e)
- }),
- (n.boundHandleTechDoubleClick_ = function (e) {
- return n.handleTechDoubleClick_(e)
- }),
- (n.boundHandleTechTouchStart_ = function (e) {
- return n.handleTechTouchStart_(e)
- }),
- (n.boundHandleTechTouchMove_ = function (e) {
- return n.handleTechTouchMove_(e)
- }),
- (n.boundHandleTechTouchEnd_ = function (e) {
- return n.handleTechTouchEnd_(e)
- }),
- (n.boundHandleTechTap_ = function (e) {
- return n.handleTechTap_(e)
- }),
- (n.isFullscreen_ = !1),
- (n.log = p(n.id_)),
- (n.fsApi_ = l),
- (n.isPosterFromTech_ = !1),
- (n.queuedCallbacks_ = []),
- (n.isReady_ = !1),
- (n.hasStarted_ = !1),
- (n.userActive_ = !1),
- (n.debugEnabled_ = !1),
- (n.audioOnlyMode_ = !1),
- (n.audioPosterMode_ = !1),
- (n.audioOnlyCache_ = { playerHeight: null, hiddenChildren: [] }),
- !n.options_ || !n.options_.techOrder || !n.options_.techOrder.length)
- )
- throw new Error('No techOrder specified. Did you overwrite videojs.options instead of just changing the properties you want to override?')
- ;(n.tag = e),
- (n.tagAttributes = e && ae(e)),
- n.language(n.options_.language),
- t.languages
- ? ((r = {}),
- Object.getOwnPropertyNames(t.languages).forEach(function (e) {
- r[e.toLowerCase()] = t.languages[e]
- }),
- (n.languages_ = r))
- : (n.languages_ = o.prototype.options_.languages),
- n.resetCache_(),
- (n.poster_ = t.poster || ''),
- (n.controls_ = !!t.controls),
- (e.controls = !1),
- e.removeAttribute('controls'),
- (n.changingSrc_ = !1),
- (n.playCallbacks_ = []),
- (n.playTerminatedQueue_ = []),
- e.hasAttribute('autoplay') ? n.autoplay(!0) : n.autoplay(n.options_.autoplay),
- t.plugins &&
- Object.keys(t.plugins).forEach(function (e) {
- if ('function' != typeof n[e]) throw new Error('plugin "' + e + '" does not exist')
- }),
- (n.scrubbing_ = !1),
- (n.el_ = n.createEl()),
- rt(ft(n), { eventBusKey: 'el_' }),
- n.fsApi_.requestFullscreen && (Be(document, n.fsApi_.fullscreenchange, n.boundDocumentFullscreenChange_), n.on(n.fsApi_.fullscreenchange, n.boundDocumentFullscreenChange_)),
- n.fluid_ && n.on(['playerreset', 'resize'], n.boundUpdateStyleEl_)
- i = lt(n.options_)
- t.plugins &&
- Object.keys(t.plugins).forEach(function (e) {
- n[e](t.plugins[e])
- }),
- t.debug && n.debug(!0),
- (n.options_.playerOptions = i),
- (n.middleware_ = []),
- n.playbackRates(t.playbackRates),
- n.initChildren(),
- n.isAudio('audio' === e.nodeName.toLowerCase()),
- n.controls() ? n.addClass('vjs-controls-enabled') : n.addClass('vjs-controls-disabled'),
- n.el_.setAttribute('role', 'region'),
- n.isAudio() ? n.el_.setAttribute('aria-label', n.localize('Audio Player')) : n.el_.setAttribute('aria-label', n.localize('Video Player')),
- n.isAudio() && n.addClass('vjs-audio'),
- n.flexNotSupported_() && n.addClass('vjs-no-flex'),
- F && n.addClass('vjs-touch-enabled'),
- q || n.addClass('vjs-workinghover'),
- (o.players[n.id_] = ft(n))
- e = u.split('.')[0]
- return (
- n.addClass('vjs-v' + e),
- n.userActive(!0),
- n.reportUserActivity(),
- n.one('play', function (e) {
- return n.listenForUserActivity_(e)
- }),
- n.on('stageclick', function (e) {
- return n.handleStageClick_(e)
- }),
- n.on('keydown', function (e) {
- return n.handleKeyDown(e)
- }),
- n.on('languagechange', function (e) {
- return n.handleLanguagechange(e)
- }),
- n.breakpoints(n.options_.breakpoints),
- n.responsive(n.options_.responsive),
- n.on('ready', function () {
- n.audioPosterMode(n.options_.audioPosterMode), n.audioOnlyMode(n.options_.audioOnlyMode)
- }),
- n
- )
- }
- mt(o, c)
- var e = o.prototype
- return (
- (e.dispose = function () {
- var t = this
- this.trigger('dispose'),
- this.off('dispose'),
- Fe(document, this.fsApi_.fullscreenchange, this.boundDocumentFullscreenChange_),
- Fe(document, 'keydown', this.boundFullWindowOnEscKey_),
- this.styleEl_ && this.styleEl_.parentNode && (this.styleEl_.parentNode.removeChild(this.styleEl_), (this.styleEl_ = null)),
- (o.players[this.id_] = null),
- this.tag && this.tag.player && (this.tag.player = null),
- this.el_ && this.el_.player && (this.el_.player = null),
- this.tech_ && (this.tech_.dispose(), (this.isPosterFromTech_ = !1), (this.poster_ = '')),
- this.playerElIngest_ && (this.playerElIngest_ = null),
- this.tag && (this.tag = null),
- (qi[this.id()] = null),
- oi.names.forEach(function (e) {
- ;(e = oi[e]), (e = t[e.getterName]())
- e && e.off && e.off()
- }),
- c.prototype.dispose.call(this, { restoreEl: this.options_.restoreEl })
- }),
- (e.createEl = function () {
- var t,
- i = this.tag,
- e = (this.playerElIngest_ = i.parentNode && i.parentNode.hasAttribute && i.parentNode.hasAttribute('data-vjs-player')),
- n = 'video-js' === this.tag.tagName.toLowerCase()
- e ? (t = this.el_ = i.parentNode) : n || (t = this.el_ = c.prototype.createEl.call(this, 'div'))
- var r,
- a,
- s = ae(i)
- if (n) {
- for (t = this.el_ = i, i = this.tag = document.createElement('video'); t.children.length; ) i.appendChild(t.firstChild)
- ee(t, 'video-js') || te(t, 'video-js'),
- t.appendChild(i),
- (e = this.playerElIngest_ = t),
- Object.keys(t).forEach(function (e) {
- try {
- i[e] = t[e]
- } catch (e) {}
- })
- }
- i.setAttribute('tabindex', '-1'),
- (s.tabindex = '-1'),
- (N || (M && B)) && (i.setAttribute('role', 'application'), (s.role = 'application')),
- i.removeAttribute('width'),
- i.removeAttribute('height'),
- 'width' in s && delete s.width,
- 'height' in s && delete s.height,
- Object.getOwnPropertyNames(s).forEach(function (e) {
- ;(n && 'class' === e) || t.setAttribute(e, s[e]), n && i.setAttribute(e, s[e])
- }),
- (i.playerId = i.id),
- (i.id += '_html5_api'),
- (i.className = 'vjs-tech'),
- (i.player = t.player = this).addClass('vjs-paused'),
- !0 !== window.VIDEOJS_NO_DYNAMIC_STYLE &&
- ((this.styleEl_ = xe('vjs-styles-dimensions')), (r = Te('.vjs-styles-defaults')), (a = Te('head')).insertBefore(this.styleEl_, r ? r.nextSibling : a.firstChild)),
- (this.fill_ = !1),
- (this.fluid_ = !1),
- this.width(this.options_.width),
- this.height(this.options_.height),
- this.fill(this.options_.fill),
- this.fluid(this.options_.fluid),
- this.aspectRatio(this.options_.aspectRatio),
- this.crossOrigin(this.options_.crossOrigin || this.options_.crossorigin)
- for (var o = i.getElementsByTagName('a'), u = 0; u < o.length; u++) {
- var l = o.item(u)
- te(l, 'vjs-hidden'), l.setAttribute('hidden', 'hidden')
- }
- return (
- (i.initNetworkState_ = i.networkState),
- i.parentNode && !e && i.parentNode.insertBefore(t, i),
- Z(i, t),
- this.children_.unshift(i),
- this.el_.setAttribute('lang', this.language_),
- this.el_.setAttribute('translate', 'no'),
- (this.el_ = t)
- )
- }),
- (e.crossOrigin = function (e) {
- if (!e) return this.techGet_('crossOrigin')
- 'anonymous' === e || 'use-credentials' === e ? this.techCall_('setCrossOrigin', e) : h.warn('crossOrigin must be "anonymous" or "use-credentials", given "' + e + '"')
- }),
- (e.width = function (e) {
- return this.dimension('width', e)
- }),
- (e.height = function (e) {
- return this.dimension('height', e)
- }),
- (e.dimension = function (e, t) {
- var i = e + '_'
- if (void 0 === t) return this[i] || 0
- if ('' === t || 'auto' === t) return (this[i] = void 0), void this.updateStyleEl_()
- var n = parseFloat(t)
- isNaN(n) ? h.error('Improper value "' + t + '" supplied for for ' + e) : ((this[i] = n), this.updateStyleEl_())
- }),
- (e.fluid = function (e) {
- var t,
- i = this
- if (void 0 === e) return !!this.fluid_
- ;(this.fluid_ = !!e),
- it(this) && this.off(['playerreset', 'resize'], this.boundUpdateStyleEl_),
- e
- ? (this.addClass('vjs-fluid'),
- this.fill(!1),
- (t = function () {
- i.on(['playerreset', 'resize'], i.boundUpdateStyleEl_)
- }),
- it((e = this)) ? t() : (e.eventedCallbacks || (e.eventedCallbacks = []), e.eventedCallbacks.push(t)))
- : this.removeClass('vjs-fluid'),
- this.updateStyleEl_()
- }),
- (e.fill = function (e) {
- if (void 0 === e) return !!this.fill_
- ;(this.fill_ = !!e), e ? (this.addClass('vjs-fill'), this.fluid(!1)) : this.removeClass('vjs-fill')
- }),
- (e.aspectRatio = function (e) {
- if (void 0 === e) return this.aspectRatio_
- if (!/^\d+\:\d+$/.test(e)) throw new Error('Improper value supplied for aspect ratio. The format should be width:height, for example 16:9.')
- ;(this.aspectRatio_ = e), this.fluid(!0), this.updateStyleEl_()
- }),
- (e.updateStyleEl_ = function () {
- var e, t, i, n
- !0 !== window.VIDEOJS_NO_DYNAMIC_STYLE
- ? ((n =
- (i = (
- void 0 !== this.aspectRatio_ && 'auto' !== this.aspectRatio_ ? this.aspectRatio_ : 0 < this.videoWidth() ? this.videoWidth() + ':' + this.videoHeight() : '16:9'
- ).split(':'))[1] / i[0]),
- (e = void 0 !== this.width_ ? this.width_ : void 0 !== this.height_ ? this.height_ / n : this.videoWidth() || 300),
- (t = void 0 !== this.height_ ? this.height_ : e * n),
- (i = /^[^a-zA-Z]/.test(this.id()) ? 'dimensions-' + this.id() : this.id() + '-dimensions'),
- this.addClass(i),
- Ae(
- this.styleEl_,
- '\n .' +
- i +
- ' {\n width: ' +
- e +
- 'px;\n height: ' +
- t +
- 'px;\n }\n\n .' +
- i +
- '.vjs-fluid:not(.vjs-audio-only-mode) {\n padding-top: ' +
- 100 * n +
- '%;\n }\n '
- ))
- : ((t = 'number' == typeof this.width_ ? this.width_ : this.options_.width),
- (i = 'number' == typeof this.height_ ? this.height_ : this.options_.height),
- (n = this.tech_ && this.tech_.el()) && (0 <= t && (n.width = t), 0 <= i && (n.height = i)))
- }),
- (e.loadTech_ = function (e, t) {
- var i = this
- this.tech_ && this.unloadTech_()
- var n = ut(e),
- r = e.charAt(0).toLowerCase() + e.slice(1)
- 'Html5' !== n && this.tag && (ji.getTech('Html5').disposeMediaElement(this.tag), (this.tag.player = null), (this.tag = null)), (this.techName_ = n), (this.isReady_ = !1)
- var a = this.autoplay(),
- s = {
- source: t,
- autoplay: (a = 'string' == typeof this.autoplay() || (!0 === this.autoplay() && this.options_.normalizeAutoplay) ? !1 : a),
- nativeControlsForTouch: this.options_.nativeControlsForTouch,
- playerId: this.id(),
- techId: this.id() + '_' + r + '_api',
- playsinline: this.options_.playsinline,
- preload: this.options_.preload,
- loop: this.options_.loop,
- disablePictureInPicture: this.options_.disablePictureInPicture,
- muted: this.options_.muted,
- poster: this.poster(),
- language: this.language(),
- playerElIngest: this.playerElIngest_ || !1,
- 'vtt.js': this.options_['vtt.js'],
- canOverridePoster: !!this.options_.techCanOverridePoster,
- enableSourceset: this.options_.enableSourceset,
- Promise: this.options_.Promise,
- }
- oi.names.forEach(function (e) {
- e = oi[e]
- s[e.getterName] = i[e.privateName]
- }),
- b(s, this.options_[n]),
- b(s, this.options_[r]),
- b(s, this.options_[e.toLowerCase()]),
- this.tag && (s.tag = this.tag),
- t && t.src === this.cache_.src && 0 < this.cache_.currentTime && (s.startTime = this.cache_.currentTime)
- e = ji.getTech(e)
- if (!e) throw new Error("No Tech named '" + n + "' exists! '" + n + "' should be registered using videojs.registerTech()'")
- ;(this.tech_ = new e(s)),
- this.tech_.ready(Ve(this, this.handleTechReady_), !0),
- It(this.textTracksJson_ || [], this.tech_),
- Mn.forEach(function (t) {
- i.on(i.tech_, t, function (e) {
- return i['handleTech' + ut(t) + '_'](e)
- })
- }),
- Object.keys(Rn).forEach(function (t) {
- i.on(i.tech_, t, function (e) {
- 0 === i.tech_.playbackRate() && i.tech_.seeking()
- ? i.queuedCallbacks_.push({ callback: i['handleTech' + Rn[t] + '_'].bind(i), event: e })
- : i['handleTech' + Rn[t] + '_'](e)
- })
- }),
- this.on(this.tech_, 'loadstart', function (e) {
- return i.handleTechLoadStart_(e)
- }),
- this.on(this.tech_, 'sourceset', function (e) {
- return i.handleTechSourceset_(e)
- }),
- this.on(this.tech_, 'waiting', function (e) {
- return i.handleTechWaiting_(e)
- }),
- this.on(this.tech_, 'ended', function (e) {
- return i.handleTechEnded_(e)
- }),
- this.on(this.tech_, 'seeking', function (e) {
- return i.handleTechSeeking_(e)
- }),
- this.on(this.tech_, 'play', function (e) {
- return i.handleTechPlay_(e)
- }),
- this.on(this.tech_, 'firstplay', function (e) {
- return i.handleTechFirstPlay_(e)
- }),
- this.on(this.tech_, 'pause', function (e) {
- return i.handleTechPause_(e)
- }),
- this.on(this.tech_, 'durationchange', function (e) {
- return i.handleTechDurationChange_(e)
- }),
- this.on(this.tech_, 'fullscreenchange', function (e, t) {
- return i.handleTechFullscreenChange_(e, t)
- }),
- this.on(this.tech_, 'fullscreenerror', function (e, t) {
- return i.handleTechFullscreenError_(e, t)
- }),
- this.on(this.tech_, 'enterpictureinpicture', function (e) {
- return i.handleTechEnterPictureInPicture_(e)
- }),
- this.on(this.tech_, 'leavepictureinpicture', function (e) {
- return i.handleTechLeavePictureInPicture_(e)
- }),
- this.on(this.tech_, 'error', function (e) {
- return i.handleTechError_(e)
- }),
- this.on(this.tech_, 'posterchange', function (e) {
- return i.handleTechPosterChange_(e)
- }),
- this.on(this.tech_, 'textdata', function (e) {
- return i.handleTechTextData_(e)
- }),
- this.on(this.tech_, 'ratechange', function (e) {
- return i.handleTechRateChange_(e)
- }),
- this.on(this.tech_, 'loadedmetadata', this.boundUpdateStyleEl_),
- this.usingNativeControls(this.techGet_('controls')),
- this.controls() && !this.usingNativeControls() && this.addTechControlsListeners_(),
- this.tech_.el().parentNode === this.el() || ('Html5' === n && this.tag) || Z(this.tech_.el(), this.el()),
- this.tag && ((this.tag.player = null), (this.tag = null))
- }),
- (e.unloadTech_ = function () {
- var t = this
- oi.names.forEach(function (e) {
- e = oi[e]
- t[e.privateName] = t[e.getterName]()
- }),
- (this.textTracksJson_ = Ct(this.tech_)),
- (this.isReady_ = !1),
- this.tech_.dispose(),
- (this.tech_ = !1),
- this.isPosterFromTech_ && ((this.poster_ = ''), this.trigger('posterchange')),
- (this.isPosterFromTech_ = !1)
- }),
- (e.tech = function (e) {
- return (
- void 0 === e && h.warn("Using the tech directly can be dangerous. I hope you know what you're doing.\nSee https://github.com/videojs/video.js/issues/2617 for more info.\n"),
- this.tech_
- )
- }),
- (e.addTechControlsListeners_ = function () {
- this.removeTechControlsListeners_(),
- this.on(this.tech_, 'click', this.boundHandleTechClick_),
- this.on(this.tech_, 'dblclick', this.boundHandleTechDoubleClick_),
- this.on(this.tech_, 'touchstart', this.boundHandleTechTouchStart_),
- this.on(this.tech_, 'touchmove', this.boundHandleTechTouchMove_),
- this.on(this.tech_, 'touchend', this.boundHandleTechTouchEnd_),
- this.on(this.tech_, 'tap', this.boundHandleTechTap_)
- }),
- (e.removeTechControlsListeners_ = function () {
- this.off(this.tech_, 'tap', this.boundHandleTechTap_),
- this.off(this.tech_, 'touchstart', this.boundHandleTechTouchStart_),
- this.off(this.tech_, 'touchmove', this.boundHandleTechTouchMove_),
- this.off(this.tech_, 'touchend', this.boundHandleTechTouchEnd_),
- this.off(this.tech_, 'click', this.boundHandleTechClick_),
- this.off(this.tech_, 'dblclick', this.boundHandleTechDoubleClick_)
- }),
- (e.handleTechReady_ = function () {
- this.triggerReady(), this.cache_.volume && this.techCall_('setVolume', this.cache_.volume), this.handleTechPosterChange_(), this.handleTechDurationChange_()
- }),
- (e.handleTechLoadStart_ = function () {
- this.removeClass('vjs-ended'),
- this.removeClass('vjs-seeking'),
- this.error(null),
- this.handleTechDurationChange_(),
- this.paused() ? (this.hasStarted(!1), this.trigger('loadstart')) : (this.trigger('loadstart'), this.trigger('firstplay')),
- this.manualAutoplay_(!0 === this.autoplay() && this.options_.normalizeAutoplay ? 'play' : this.autoplay())
- }),
- (e.manualAutoplay_ = function (e) {
- var n = this
- if (this.tech_ && 'string' == typeof e) {
- var t,
- i = function () {
- var e = n.muted()
- n.muted(!0)
- function t() {
- n.muted(e)
- }
- n.playTerminatedQueue_.push(t)
- var i = n.play()
- if (wt(i))
- return i.catch(function (e) {
- throw (t(), new Error('Rejection at manualAutoplay. Restoring muted value. ' + (e || '')))
- })
- }
- if (('any' !== e || this.muted() ? (t = 'muted' !== e || this.muted() ? this.play() : i()) : wt((t = this.play())) && (t = t.catch(i)), wt(t)))
- return t
- .then(function () {
- n.trigger({ type: 'autoplay-success', autoplay: e })
- })
- .catch(function () {
- n.trigger({ type: 'autoplay-failure', autoplay: e })
- })
- }
- }),
- (e.updateSourceCaches_ = function (e) {
- var t = (e = void 0 === e ? '' : e),
- i = ''
- 'string' != typeof t && ((t = e.src), (i = e.type)),
- (this.cache_.source = this.cache_.source || {}),
- (this.cache_.sources = this.cache_.sources || []),
- t &&
- !i &&
- (i = (function (e, t) {
- if (!t) return ''
- if (e.cache_.source.src === t && e.cache_.source.type) return e.cache_.source.type
- var i = e.cache_.sources.filter(function (e) {
- return e.src === t
- })
- if (i.length) return i[0].type
- for (var n = e.$$('source'), r = 0; r < n.length; r++) {
- var a = n[r]
- if (a.type && a.src && a.src === t) return a.type
- }
- return $i(t)
- })(this, t)),
- (this.cache_.source = lt({}, e, { src: t, type: i }))
- for (
- var i = this.cache_.sources.filter(function (e) {
- return e.src && e.src === t
- }),
- n = [],
- r = this.$$('source'),
- a = [],
- s = 0;
- s < r.length;
- s++
- ) {
- var o = ae(r[s])
- n.push(o), o.src && o.src === t && a.push(o.src)
- }
- a.length && !i.length ? (this.cache_.sources = n) : i.length || (this.cache_.sources = [this.cache_.source]), (this.cache_.src = t)
- }),
- (e.handleTechSourceset_ = function (e) {
- var t,
- i,
- n,
- r = this
- this.changingSrc_ ||
- ((t = function (e) {
- return r.updateSourceCaches_(e)
- }),
- (i = this.currentSource().src),
- (n = e.src),
- i && !/^blob:/.test(i) && /^blob:/.test(n) && ((this.lastSource_ && (this.lastSource_.tech === n || this.lastSource_.player === i)) || (t = function () {})),
- t(n),
- e.src ||
- this.tech_.any(['sourceset', 'loadstart'], function (e) {
- 'sourceset' !== e.type && ((e = r.techGet('currentSrc')), (r.lastSource_.tech = e), r.updateSourceCaches_(e))
- })),
- (this.lastSource_ = { player: this.currentSource().src, tech: e.src }),
- this.trigger({ src: e.src, type: 'sourceset' })
- }),
- (e.hasStarted = function (e) {
- if (void 0 === e) return this.hasStarted_
- e !== this.hasStarted_ && ((this.hasStarted_ = e), this.hasStarted_ ? (this.addClass('vjs-has-started'), this.trigger('firstplay')) : this.removeClass('vjs-has-started'))
- }),
- (e.handleTechPlay_ = function () {
- this.removeClass('vjs-ended'), this.removeClass('vjs-paused'), this.addClass('vjs-playing'), this.hasStarted(!0), this.trigger('play')
- }),
- (e.handleTechRateChange_ = function () {
- 0 < this.tech_.playbackRate() &&
- 0 === this.cache_.lastPlaybackRate &&
- (this.queuedCallbacks_.forEach(function (e) {
- return e.callback(e.event)
- }),
- (this.queuedCallbacks_ = [])),
- (this.cache_.lastPlaybackRate = this.tech_.playbackRate()),
- this.trigger('ratechange')
- }),
- (e.handleTechWaiting_ = function () {
- var t = this
- this.addClass('vjs-waiting'), this.trigger('waiting')
- var i = this.currentTime()
- this.on('timeupdate', function e() {
- i !== t.currentTime() && (t.removeClass('vjs-waiting'), t.off('timeupdate', e))
- })
- }),
- (e.handleTechCanPlay_ = function () {
- this.removeClass('vjs-waiting'), this.trigger('canplay')
- }),
- (e.handleTechCanPlayThrough_ = function () {
- this.removeClass('vjs-waiting'), this.trigger('canplaythrough')
- }),
- (e.handleTechPlaying_ = function () {
- this.removeClass('vjs-waiting'), this.trigger('playing')
- }),
- (e.handleTechSeeking_ = function () {
- this.addClass('vjs-seeking'), this.trigger('seeking')
- }),
- (e.handleTechSeeked_ = function () {
- this.removeClass('vjs-seeking'), this.removeClass('vjs-ended'), this.trigger('seeked')
- }),
- (e.handleTechFirstPlay_ = function () {
- this.options_.starttime && (h.warn('Passing the `starttime` option to the player will be deprecated in 6.0'), this.currentTime(this.options_.starttime)),
- this.addClass('vjs-has-started'),
- this.trigger('firstplay')
- }),
- (e.handleTechPause_ = function () {
- this.removeClass('vjs-playing'), this.addClass('vjs-paused'), this.trigger('pause')
- }),
- (e.handleTechEnded_ = function () {
- this.addClass('vjs-ended'), this.removeClass('vjs-waiting'), this.options_.loop ? (this.currentTime(0), this.play()) : this.paused() || this.pause(), this.trigger('ended')
- }),
- (e.handleTechDurationChange_ = function () {
- this.duration(this.techGet_('duration'))
- }),
- (e.handleTechClick_ = function (e) {
- this.controls_ &&
- ((void 0 !== this.options_ && void 0 !== this.options_.userActions && void 0 !== this.options_.userActions.click && !1 === this.options_.userActions.click) ||
- (void 0 !== this.options_ && void 0 !== this.options_.userActions && 'function' == typeof this.options_.userActions.click
- ? this.options_.userActions.click.call(this, e)
- : this.paused()
- ? Et(this.play())
- : this.pause()))
- }),
- (e.handleTechDoubleClick_ = function (t) {
- this.controls_ &&
- (Array.prototype.some.call(this.$$('.vjs-control-bar, .vjs-modal-dialog'), function (e) {
- return e.contains(t.target)
- }) ||
- (void 0 !== this.options_ && void 0 !== this.options_.userActions && void 0 !== this.options_.userActions.doubleClick && !1 === this.options_.userActions.doubleClick) ||
- (void 0 !== this.options_ && void 0 !== this.options_.userActions && 'function' == typeof this.options_.userActions.doubleClick
- ? this.options_.userActions.doubleClick.call(this, t)
- : this.isFullscreen()
- ? this.exitFullscreen()
- : this.requestFullscreen()))
- }),
- (e.handleTechTap_ = function () {
- this.userActive(!this.userActive())
- }),
- (e.handleTechTouchStart_ = function () {
- this.userWasActive = this.userActive()
- }),
- (e.handleTechTouchMove_ = function () {
- this.userWasActive && this.reportUserActivity()
- }),
- (e.handleTechTouchEnd_ = function (e) {
- e.cancelable && e.preventDefault()
- }),
- (e.handleStageClick_ = function () {
- this.reportUserActivity()
- }),
- (e.toggleFullscreenClass_ = function () {
- this.isFullscreen() ? this.addClass('vjs-fullscreen') : this.removeClass('vjs-fullscreen')
- }),
- (e.documentFullscreenChange_ = function (e) {
- var t = e.target.player
- ;(t && t !== this) ||
- ((e = this.el()),
- !(t = document[this.fsApi_.fullscreenElement] === e) && e.matches
- ? (t = e.matches(':' + this.fsApi_.fullscreen))
- : !t && e.msMatchesSelector && (t = e.msMatchesSelector(':' + this.fsApi_.fullscreen)),
- this.isFullscreen(t))
- }),
- (e.handleTechFullscreenChange_ = function (e, t) {
- var i = this
- t &&
- (t.nativeIOSFullscreen &&
- (this.addClass('vjs-ios-native-fs'),
- this.tech_.one('webkitendfullscreen', function () {
- i.removeClass('vjs-ios-native-fs')
- })),
- this.isFullscreen(t.isFullscreen))
- }),
- (e.handleTechFullscreenError_ = function (e, t) {
- this.trigger('fullscreenerror', t)
- }),
- (e.togglePictureInPictureClass_ = function () {
- this.isInPictureInPicture() ? this.addClass('vjs-picture-in-picture') : this.removeClass('vjs-picture-in-picture')
- }),
- (e.handleTechEnterPictureInPicture_ = function (e) {
- this.isInPictureInPicture(!0)
- }),
- (e.handleTechLeavePictureInPicture_ = function (e) {
- this.isInPictureInPicture(!1)
- }),
- (e.handleTechError_ = function () {
- var e = this.tech_.error()
- this.error(e)
- }),
- (e.handleTechTextData_ = function () {
- this.trigger('textdata', 1 < arguments.length ? arguments[1] : null)
- }),
- (e.getCache = function () {
- return this.cache_
- }),
- (e.resetCache_ = function () {
- this.cache_ = {
- currentTime: 0,
- initTime: 0,
- inactivityTimeout: this.options_.inactivityTimeout,
- duration: NaN,
- lastVolume: 1,
- lastPlaybackRate: this.defaultPlaybackRate(),
- media: null,
- src: '',
- source: {},
- sources: [],
- playbackRates: [],
- volume: 1,
- }
- }),
- (e.techCall_ = function (n, r) {
- this.ready(function () {
- if (n in Xi) return (e = this.middleware_), (t = this.tech_), (i = r), t[(t = n)](e.reduce(Yi(t), i))
- if (n in Ki) return Gi(this.middleware_, this.tech_, n, r)
- var e, t, i
- try {
- this.tech_ && this.tech_[n](r)
- } catch (e) {
- throw (h(e), e)
- }
- }, !0)
- }),
- (e.techGet_ = function (t) {
- if (this.tech_ && this.tech_.isReady_) {
- if (t in zi) return (e = this.middleware_), (i = this.tech_), (n = t), e.reduceRight(Yi(n), i[n]())
- if (t in Ki) return Gi(this.middleware_, this.tech_, t)
- var e, i, n
- try {
- return this.tech_[t]()
- } catch (e) {
- if (void 0 === this.tech_[t]) throw (h('Video.js: ' + t + ' method not defined for ' + this.techName_ + ' playback technology.', e), e)
- if ('TypeError' === e.name) throw (h('Video.js: ' + t + ' unavailable on ' + this.techName_ + ' playback technology element.', e), (this.tech_.isReady_ = !1), e)
- throw (h(e), e)
- }
- }
- }),
- (e.play = function () {
- var t = this,
- e = this.options_.Promise || window.Promise
- return e
- ? new e(function (e) {
- t.play_(e)
- })
- : this.play_()
- }),
- (e.play_ = function (e) {
- var t = this
- this.playCallbacks_.push((e = void 0 === e ? Et : e))
- e = Boolean(!this.changingSrc_ && (this.src() || this.currentSrc()))
- if ((this.waitToPlay_ && (this.off(['ready', 'loadstart'], this.waitToPlay_), (this.waitToPlay_ = null)), !this.isReady_ || !e))
- return (
- (this.waitToPlay_ = function (e) {
- t.play_()
- }),
- this.one(['ready', 'loadstart'], this.waitToPlay_),
- void (e || (!V && !q) || this.load())
- )
- e = this.techGet_('play')
- null === e ? this.runPlayTerminatedQueue_() : this.runPlayCallbacks_(e)
- }),
- (e.runPlayTerminatedQueue_ = function () {
- var e = this.playTerminatedQueue_.slice(0)
- ;(this.playTerminatedQueue_ = []),
- e.forEach(function (e) {
- e()
- })
- }),
- (e.runPlayCallbacks_ = function (t) {
- var e = this.playCallbacks_.slice(0)
- ;(this.playCallbacks_ = []),
- (this.playTerminatedQueue_ = []),
- e.forEach(function (e) {
- e(t)
- })
- }),
- (e.pause = function () {
- this.techCall_('pause')
- }),
- (e.paused = function () {
- return !1 !== this.techGet_('paused')
- }),
- (e.played = function () {
- return this.techGet_('played') || vt(0, 0)
- }),
- (e.scrubbing = function (e) {
- if ('undefined' == typeof e) return this.scrubbing_
- ;(this.scrubbing_ = !!e), this.techCall_('setScrubbing', this.scrubbing_), e ? this.addClass('vjs-scrubbing') : this.removeClass('vjs-scrubbing')
- }),
- (e.currentTime = function (e) {
- return 'undefined' != typeof e
- ? (e < 0 && (e = 0),
- this.isReady_ && !this.changingSrc_ && this.tech_ && this.tech_.isReady_
- ? (this.techCall_('setCurrentTime', e), void (this.cache_.initTime = 0))
- : ((this.cache_.initTime = e), this.off('canplay', this.boundApplyInitTime_), void this.one('canplay', this.boundApplyInitTime_)))
- : ((this.cache_.currentTime = this.techGet_('currentTime') || 0), this.cache_.currentTime)
- }),
- (e.applyInitTime_ = function () {
- this.currentTime(this.cache_.initTime)
- }),
- (e.duration = function (e) {
- if (void 0 === e) return void 0 !== this.cache_.duration ? this.cache_.duration : NaN
- ;(e = (e = parseFloat(e)) < 0 ? 1 / 0 : e) !== this.cache_.duration &&
- ((this.cache_.duration = e) === 1 / 0 ? this.addClass('vjs-live') : this.removeClass('vjs-live'), isNaN(e) || this.trigger('durationchange'))
- }),
- (e.remainingTime = function () {
- return this.duration() - this.currentTime()
- }),
- (e.remainingTimeDisplay = function () {
- return Math.floor(this.duration()) - Math.floor(this.currentTime())
- }),
- (e.buffered = function () {
- var e
- return (e = !(e = this.techGet_('buffered')) || !e.length ? vt(0, 0) : e)
- }),
- (e.bufferedPercent = function () {
- return _t(this.buffered(), this.duration())
- }),
- (e.bufferedEnd = function () {
- var e = this.buffered(),
- t = this.duration(),
- e = e.end(e.length - 1)
- return (e = t < e ? t : e)
- }),
- (e.volume = function (e) {
- var t
- return void 0 !== e
- ? ((t = Math.max(0, Math.min(1, parseFloat(e)))), (this.cache_.volume = t), this.techCall_('setVolume', t), void (0 < t && this.lastVolume_(t)))
- : ((t = parseFloat(this.techGet_('volume'))), isNaN(t) ? 1 : t)
- }),
- (e.muted = function (e) {
- if (void 0 === e) return this.techGet_('muted') || !1
- this.techCall_('setMuted', e)
- }),
- (e.defaultMuted = function (e) {
- return void 0 !== e ? this.techCall_('setDefaultMuted', e) : this.techGet_('defaultMuted') || !1
- }),
- (e.lastVolume_ = function (e) {
- if (void 0 === e || 0 === e) return this.cache_.lastVolume
- this.cache_.lastVolume = e
- }),
- (e.supportsFullScreen = function () {
- return this.techGet_('supportsFullScreen') || !1
- }),
- (e.isFullscreen = function (e) {
- if (void 0 === e) return this.isFullscreen_
- var t = this.isFullscreen_
- ;(this.isFullscreen_ = Boolean(e)), this.isFullscreen_ !== t && this.fsApi_.prefixed && this.trigger('fullscreenchange'), this.toggleFullscreenClass_()
- }),
- (e.requestFullscreen = function (s) {
- var e = this.options_.Promise || window.Promise
- if (e) {
- var o = this
- return new e(function (e, i) {
- function n() {
- o.off('fullscreenerror', r), o.off('fullscreenchange', t)
- }
- function t() {
- n(), e()
- }
- function r(e, t) {
- n(), i(t)
- }
- o.one('fullscreenchange', t), o.one('fullscreenerror', r)
- var a = o.requestFullscreenHelper_(s)
- a && (a.then(n, n), a.then(e, i))
- })
- }
- return this.requestFullscreenHelper_()
- }),
- (e.requestFullscreenHelper_ = function (e) {
- var t = this
- if ((this.fsApi_.prefixed || ((i = (this.options_.fullscreen && this.options_.fullscreen.options) || {}), void 0 !== e && (i = e)), this.fsApi_.requestFullscreen)) {
- var i = this.el_[this.fsApi_.requestFullscreen](i)
- return (
- i &&
- i.then(
- function () {
- return t.isFullscreen(!0)
- },
- function () {
- return t.isFullscreen(!1)
- }
- ),
- i
- )
- }
- this.tech_.supportsFullScreen() && !0 == !this.options_.preferFullWindow ? this.techCall_('enterFullScreen') : this.enterFullWindow()
- }),
- (e.exitFullscreen = function () {
- var e = this.options_.Promise || window.Promise
- if (e) {
- var s = this
- return new e(function (e, i) {
- function n() {
- s.off('fullscreenerror', r), s.off('fullscreenchange', t)
- }
- function t() {
- n(), e()
- }
- function r(e, t) {
- n(), i(t)
- }
- s.one('fullscreenchange', t), s.one('fullscreenerror', r)
- var a = s.exitFullscreenHelper_()
- a && (a.then(n, n), a.then(e, i))
- })
- }
- return this.exitFullscreenHelper_()
- }),
- (e.exitFullscreenHelper_ = function () {
- var e = this
- if (this.fsApi_.requestFullscreen) {
- var t = document[this.fsApi_.exitFullscreen]()
- return (
- t &&
- Et(
- t.then(function () {
- return e.isFullscreen(!1)
- })
- ),
- t
- )
- }
- this.tech_.supportsFullScreen() && !0 == !this.options_.preferFullWindow ? this.techCall_('exitFullScreen') : this.exitFullWindow()
- }),
- (e.enterFullWindow = function () {
- this.isFullscreen(!0),
- (this.isFullWindow = !0),
- (this.docOrigOverflow = document.documentElement.style.overflow),
- Be(document, 'keydown', this.boundFullWindowOnEscKey_),
- (document.documentElement.style.overflow = 'hidden'),
- te(document.body, 'vjs-full-window'),
- this.trigger('enterFullWindow')
- }),
- (e.fullWindowOnEscKey = function (e) {
- ht.isEventKey(e, 'Esc') && !0 === this.isFullscreen() && (this.isFullWindow ? this.exitFullWindow() : this.exitFullscreen())
- }),
- (e.exitFullWindow = function () {
- this.isFullscreen(!1),
- (this.isFullWindow = !1),
- Fe(document, 'keydown', this.boundFullWindowOnEscKey_),
- (document.documentElement.style.overflow = this.docOrigOverflow),
- ie(document.body, 'vjs-full-window'),
- this.trigger('exitFullWindow')
- }),
- (e.disablePictureInPicture = function (e) {
- if (void 0 === e) return this.techGet_('disablePictureInPicture')
- this.techCall_('setDisablePictureInPicture', e), (this.options_.disablePictureInPicture = e), this.trigger('disablepictureinpicturechanged')
- }),
- (e.isInPictureInPicture = function (e) {
- return void 0 !== e ? ((this.isInPictureInPicture_ = !!e), void this.togglePictureInPictureClass_()) : !!this.isInPictureInPicture_
- }),
- (e.requestPictureInPicture = function () {
- if ('pictureInPictureEnabled' in document && !1 === this.disablePictureInPicture()) return this.techGet_('requestPictureInPicture')
- }),
- (e.exitPictureInPicture = function () {
- if ('pictureInPictureEnabled' in document) return document.exitPictureInPicture()
- }),
- (e.handleKeyDown = function (e) {
- var t = this.options_.userActions
- t &&
- t.hotkeys &&
- ((function (e) {
- var t = e.tagName.toLowerCase()
- if (e.isContentEditable) return !0
- if ('input' === t) return -1 === ['button', 'checkbox', 'hidden', 'radio', 'reset', 'submit'].indexOf(e.type)
- return -1 !== ['textarea'].indexOf(t)
- })(this.el_.ownerDocument.activeElement) ||
- ('function' == typeof t.hotkeys ? t.hotkeys.call(this, e) : this.handleHotkeys(e)))
- }),
- (e.handleHotkeys = function (e) {
- var t = this.options_.userActions ? this.options_.userActions.hotkeys : {},
- i = t.fullscreenKey,
- n = t.muteKey,
- n =
- void 0 === n
- ? function (e) {
- return ht.isEventKey(e, 'm')
- }
- : n,
- t = t.playPauseKey,
- t =
- void 0 === t
- ? function (e) {
- return ht.isEventKey(e, 'k') || ht.isEventKey(e, 'Space')
- }
- : t
- ;(void 0 === i
- ? function (e) {
- return ht.isEventKey(e, 'f')
- }
- : i
- ).call(this, e)
- ? (e.preventDefault(), e.stopPropagation(), (i = pt.getComponent('FullscreenToggle')), !1 !== document[this.fsApi_.fullscreenEnabled] && i.prototype.handleClick.call(this, e))
- : n.call(this, e)
- ? (e.preventDefault(), e.stopPropagation(), pt.getComponent('MuteToggle').prototype.handleClick.call(this, e))
- : t.call(this, e) && (e.preventDefault(), e.stopPropagation(), pt.getComponent('PlayToggle').prototype.handleClick.call(this, e))
- }),
- (e.canPlayType = function (e) {
- for (var t, i = 0, n = this.options_.techOrder; i < n.length; i++) {
- var r = n[i],
- a = ji.getTech(r)
- if ((a = a || pt.getComponent(r))) {
- if (a.isSupported() && (t = a.canPlayType(e))) return t
- } else h.error('The "' + r + '" tech is undefined. Skipped browser support check for that tech.')
- }
- return ''
- }),
- (e.selectSource = function (e) {
- function t(e, i, n) {
- var r
- return (
- e.some(function (t) {
- return i.some(function (e) {
- if ((r = n(t, e))) return !0
- })
- }),
- r
- )
- }
- var i,
- n = this,
- r = this.options_.techOrder
- .map(function (e) {
- return [e, ji.getTech(e)]
- })
- .filter(function (e) {
- var t = e[0],
- e = e[1]
- return e ? e.isSupported() : (h.error('The "' + t + '" tech is undefined. Skipped browser support check for that tech.'), !1)
- }),
- a = function (e, t) {
- var i = e[0]
- if (e[1].canPlaySource(t, n.options_[i.toLowerCase()])) return { source: t, tech: i }
- },
- a = this.options_.sourceOrder
- ? t(
- e,
- r,
- ((i = a),
- function (e, t) {
- return i(t, e)
- })
- )
- : t(r, e, a)
- return a || !1
- }),
- (e.handleSrc_ = function (e, n) {
- var r = this
- if ('undefined' == typeof e) return this.cache_.src || ''
- this.resetRetryOnError_ && this.resetRetryOnError_()
- var t,
- i,
- a = Ji(e)
- a.length
- ? ((this.changingSrc_ = !0),
- n || (this.cache_.sources = a),
- this.updateSourceCaches_(a[0]),
- Wi(this, a[0], function (e, t) {
- var i
- return (
- (r.middleware_ = t),
- n || (r.cache_.sources = a),
- r.updateSourceCaches_(e),
- r.src_(e)
- ? 1 < a.length
- ? r.handleSrc_(a.slice(1))
- : ((r.changingSrc_ = !1),
- r.setTimeout(function () {
- this.error({ code: 4, message: this.options_.notSupportedMessage })
- }, 0),
- void r.triggerReady())
- : ((t = t),
- (i = r.tech_),
- void t.forEach(function (e) {
- return e.setTech && e.setTech(i)
- }))
- )
- }),
- this.options_.retryOnError &&
- 1 < a.length &&
- ((i = function () {
- r.off('error', t)
- }),
- this.one(
- 'error',
- (t = function () {
- r.error(null), r.handleSrc_(a.slice(1), !0)
- })
- ),
- this.one('playing', i),
- (this.resetRetryOnError_ = function () {
- r.off('error', t), r.off('playing', i)
- })))
- : this.setTimeout(function () {
- this.error({ code: 4, message: this.options_.notSupportedMessage })
- }, 0)
- }),
- (e.src = function (e) {
- return this.handleSrc_(e, !1)
- }),
- (e.src_ = function (e) {
- var t,
- i,
- n = this,
- r = this.selectSource([e])
- return (
- !r ||
- ((t = r.tech),
- (i = this.techName_),
- ut(t) !== ut(i)
- ? ((this.changingSrc_ = !0),
- this.loadTech_(r.tech, r.source),
- this.tech_.ready(function () {
- n.changingSrc_ = !1
- }))
- : this.ready(function () {
- this.tech_.constructor.prototype.hasOwnProperty('setSource') ? this.techCall_('setSource', e) : this.techCall_('src', e.src), (this.changingSrc_ = !1)
- }, !0),
- !1)
- )
- }),
- (e.load = function () {
- this.techCall_('load')
- }),
- (e.reset = function () {
- var e = this,
- t = this.options_.Promise || window.Promise
- this.paused() || !t
- ? this.doReset_()
- : Et(
- this.play().then(function () {
- return e.doReset_()
- })
- )
- }),
- (e.doReset_ = function () {
- this.tech_ && this.tech_.clearTracks('text'),
- this.resetCache_(),
- this.poster(''),
- this.loadTech_(this.options_.techOrder[0], null),
- this.techCall_('reset'),
- this.resetControlBarUI_(),
- it(this) && this.trigger('playerreset')
- }),
- (e.resetControlBarUI_ = function () {
- this.resetProgressBar_(), this.resetPlaybackRate_(), this.resetVolumeBar_()
- }),
- (e.resetProgressBar_ = function () {
- this.currentTime(0)
- var e = this.controlBar || {},
- t = e.durationDisplay,
- e = e.remainingTimeDisplay
- t && t.updateContent(), e && e.updateContent()
- }),
- (e.resetPlaybackRate_ = function () {
- this.playbackRate(this.defaultPlaybackRate()), this.handleTechRateChange_()
- }),
- (e.resetVolumeBar_ = function () {
- this.volume(1), this.trigger('volumechange')
- }),
- (e.currentSources = function () {
- var e = this.currentSource(),
- t = []
- return 0 !== Object.keys(e).length && t.push(e), this.cache_.sources || t
- }),
- (e.currentSource = function () {
- return this.cache_.source || {}
- }),
- (e.currentSrc = function () {
- return (this.currentSource() && this.currentSource().src) || ''
- }),
- (e.currentType = function () {
- return (this.currentSource() && this.currentSource().type) || ''
- }),
- (e.preload = function (e) {
- return void 0 !== e ? (this.techCall_('setPreload', e), void (this.options_.preload = e)) : this.techGet_('preload')
- }),
- (e.autoplay = function (e) {
- if (void 0 === e) return this.options_.autoplay || !1
- var t
- ;('string' == typeof e && /(any|play|muted)/.test(e)) || (!0 === e && this.options_.normalizeAutoplay)
- ? ((this.options_.autoplay = e), this.manualAutoplay_('string' == typeof e ? e : 'play'), (t = !1))
- : (this.options_.autoplay = !!e),
- (t = 'undefined' == typeof t ? this.options_.autoplay : t),
- this.tech_ && this.techCall_('setAutoplay', t)
- }),
- (e.playsinline = function (e) {
- return void 0 !== e ? (this.techCall_('setPlaysinline', e), (this.options_.playsinline = e), this) : this.techGet_('playsinline')
- }),
- (e.loop = function (e) {
- return void 0 !== e ? (this.techCall_('setLoop', e), void (this.options_.loop = e)) : this.techGet_('loop')
- }),
- (e.poster = function (e) {
- if (void 0 === e) return this.poster_
- ;(e = e || '') !== this.poster_ && ((this.poster_ = e), this.techCall_('setPoster', e), (this.isPosterFromTech_ = !1), this.trigger('posterchange'))
- }),
- (e.handleTechPosterChange_ = function () {
- var e
- ;(this.poster_ && !this.options_.techCanOverridePoster) ||
- !this.tech_ ||
- !this.tech_.poster ||
- ((e = this.tech_.poster() || '') !== this.poster_ && ((this.poster_ = e), (this.isPosterFromTech_ = !0), this.trigger('posterchange')))
- }),
- (e.controls = function (e) {
- if (void 0 === e) return !!this.controls_
- this.controls_ !== (e = !!e) &&
- ((this.controls_ = e),
- this.usingNativeControls() && this.techCall_('setControls', e),
- this.controls_
- ? (this.removeClass('vjs-controls-disabled'),
- this.addClass('vjs-controls-enabled'),
- this.trigger('controlsenabled'),
- this.usingNativeControls() || this.addTechControlsListeners_())
- : (this.removeClass('vjs-controls-enabled'),
- this.addClass('vjs-controls-disabled'),
- this.trigger('controlsdisabled'),
- this.usingNativeControls() || this.removeTechControlsListeners_()))
- }),
- (e.usingNativeControls = function (e) {
- if (void 0 === e) return !!this.usingNativeControls_
- this.usingNativeControls_ !== (e = !!e) &&
- ((this.usingNativeControls_ = e),
- this.usingNativeControls_
- ? (this.addClass('vjs-using-native-controls'), this.trigger('usingnativecontrols'))
- : (this.removeClass('vjs-using-native-controls'), this.trigger('usingcustomcontrols')))
- }),
- (e.error = function (t) {
- var i = this
- if (void 0 === t) return this.error_ || null
- if (
- (a('beforeerror').forEach(function (e) {
- e = e(i, t)
- ;(T(e) && !Array.isArray(e)) || 'string' == typeof e || 'number' == typeof e || null === e
- ? (t = e)
- : i.log.error('please return a value that MediaError expects in beforeerror hooks')
- }),
- this.options_.suppressNotSupportedError && t && 4 === t.code)
- ) {
- var e = function () {
- this.error(t)
- }
- return (
- (this.options_.suppressNotSupportedError = !1),
- this.any(['click', 'touchstart'], e),
- void this.one('loadstart', function () {
- this.off(['click', 'touchstart'], e)
- })
- )
- }
- if (null === t) return (this.error_ = t), this.removeClass('vjs-error'), void (this.errorDisplay && this.errorDisplay.close())
- ;(this.error_ = new bt(t)),
- this.addClass('vjs-error'),
- h.error('(CODE:' + this.error_.code + ' ' + bt.errorTypes[this.error_.code] + ')', this.error_.message, this.error_),
- this.trigger('error'),
- a('error').forEach(function (e) {
- return e(i, i.error_)
- })
- }),
- (e.reportUserActivity = function (e) {
- this.userActivity_ = !0
- }),
- (e.userActive = function (e) {
- if (void 0 === e) return this.userActive_
- if ((e = !!e) !== this.userActive_) {
- if (((this.userActive_ = e), this.userActive_))
- return (this.userActivity_ = !0), this.removeClass('vjs-user-inactive'), this.addClass('vjs-user-active'), void this.trigger('useractive')
- this.tech_ &&
- this.tech_.one('mousemove', function (e) {
- e.stopPropagation(), e.preventDefault()
- }),
- (this.userActivity_ = !1),
- this.removeClass('vjs-user-active'),
- this.addClass('vjs-user-inactive'),
- this.trigger('userinactive')
- }
- }),
- (e.listenForUserActivity_ = function () {
- var t,
- i,
- n,
- r = Ve(this, this.reportUserActivity),
- e = function (e) {
- r(), this.clearInterval(t)
- }
- this.on('mousedown', function () {
- r(), this.clearInterval(t), (t = this.setInterval(r, 250))
- }),
- this.on('mousemove', function (e) {
- ;(e.screenX === i && e.screenY === n) || ((i = e.screenX), (n = e.screenY), r())
- }),
- this.on('mouseup', e),
- this.on('mouseleave', e)
- var a,
- e = this.getChild('controlBar')
- !e ||
- q ||
- A ||
- (e.on('mouseenter', function (e) {
- 0 !== this.player().options_.inactivityTimeout && (this.player().cache_.inactivityTimeout = this.player().options_.inactivityTimeout),
- (this.player().options_.inactivityTimeout = 0)
- }),
- e.on('mouseleave', function (e) {
- this.player().options_.inactivityTimeout = this.player().cache_.inactivityTimeout
- })),
- this.on('keydown', r),
- this.on('keyup', r),
- this.setInterval(function () {
- var e
- this.userActivity_ &&
- ((this.userActivity_ = !1),
- this.userActive(!0),
- this.clearTimeout(a),
- (e = this.options_.inactivityTimeout) <= 0 ||
- (a = this.setTimeout(function () {
- this.userActivity_ || this.userActive(!1)
- }, e)))
- }, 250)
- }),
- (e.playbackRate = function (e) {
- if (void 0 === e) return this.tech_ && this.tech_.featuresPlaybackRate ? this.cache_.lastPlaybackRate || this.techGet_('playbackRate') : 1
- this.techCall_('setPlaybackRate', e)
- }),
- (e.defaultPlaybackRate = function (e) {
- return void 0 !== e ? this.techCall_('setDefaultPlaybackRate', e) : this.tech_ && this.tech_.featuresPlaybackRate ? this.techGet_('defaultPlaybackRate') : 1
- }),
- (e.isAudio = function (e) {
- if (void 0 === e) return !!this.isAudio_
- this.isAudio_ = !!e
- }),
- (e.enableAudioOnlyUI_ = function () {
- var t = this
- this.addClass('vjs-audio-only-mode')
- var e = this.children(),
- i = this.getChild('ControlBar'),
- n = i && i.currentHeight()
- e.forEach(function (e) {
- e !== i && e.el_ && !e.hasClass('vjs-hidden') && (e.hide(), t.audioOnlyCache_.hiddenChildren.push(e))
- }),
- (this.audioOnlyCache_.playerHeight = this.currentHeight()),
- this.height(n),
- this.trigger('audioonlymodechange')
- }),
- (e.disableAudioOnlyUI_ = function () {
- this.removeClass('vjs-audio-only-mode'),
- this.audioOnlyCache_.hiddenChildren.forEach(function (e) {
- return e.show()
- }),
- this.height(this.audioOnlyCache_.playerHeight),
- this.trigger('audioonlymodechange')
- }),
- (e.audioOnlyMode = function (e) {
- var t = this
- if ('boolean' != typeof e || e === this.audioOnlyMode_) return this.audioOnlyMode_
- this.audioOnlyMode_ = e
- var i = this.options_.Promise || window.Promise
- if (i) {
- if (e) {
- var n = []
- return (
- this.isInPictureInPicture() && n.push(this.exitPictureInPicture()),
- this.isFullscreen() && n.push(this.exitFullscreen()),
- this.audioPosterMode() && n.push(this.audioPosterMode(!1)),
- i.all(n).then(function () {
- return t.enableAudioOnlyUI_()
- })
- )
- }
- return i.resolve().then(function () {
- return t.disableAudioOnlyUI_()
- })
- }
- e ? (this.isInPictureInPicture() && this.exitPictureInPicture(), this.isFullscreen() && this.exitFullscreen(), this.enableAudioOnlyUI_()) : this.disableAudioOnlyUI_()
- }),
- (e.enablePosterModeUI_ = function () {
- ;(this.tech_ && this.tech_).hide(), this.addClass('vjs-audio-poster-mode'), this.trigger('audiopostermodechange')
- }),
- (e.disablePosterModeUI_ = function () {
- ;(this.tech_ && this.tech_).show(), this.removeClass('vjs-audio-poster-mode'), this.trigger('audiopostermodechange')
- }),
- (e.audioPosterMode = function (e) {
- var t = this
- if ('boolean' != typeof e || e === this.audioPosterMode_) return this.audioPosterMode_
- this.audioPosterMode_ = e
- var i = this.options_.Promise || window.Promise
- return i
- ? e
- ? (this.audioOnlyMode() ? this.audioOnlyMode(!1) : i.resolve()).then(function () {
- t.enablePosterModeUI_()
- })
- : i.resolve().then(function () {
- t.disablePosterModeUI_()
- })
- : e
- ? (this.audioOnlyMode() && this.audioOnlyMode(!1), void this.enablePosterModeUI_())
- : void this.disablePosterModeUI_()
- }),
- (e.addTextTrack = function (e, t, i) {
- if (this.tech_) return this.tech_.addTextTrack(e, t, i)
- }),
- (e.addRemoteTextTrack = function (e, t) {
- if (this.tech_) return this.tech_.addRemoteTextTrack(e, t)
- }),
- (e.removeRemoteTextTrack = function (e) {
- var t = (t = (e = void 0 === e ? {} : e).track) || e
- if (this.tech_) return this.tech_.removeRemoteTextTrack(t)
- }),
- (e.getVideoPlaybackQuality = function () {
- return this.techGet_('getVideoPlaybackQuality')
- }),
- (e.videoWidth = function () {
- return (this.tech_ && this.tech_.videoWidth && this.tech_.videoWidth()) || 0
- }),
- (e.videoHeight = function () {
- return (this.tech_ && this.tech_.videoHeight && this.tech_.videoHeight()) || 0
- }),
- (e.language = function (e) {
- if (void 0 === e) return this.language_
- this.language_ !== String(e).toLowerCase() && ((this.language_ = String(e).toLowerCase()), it(this) && this.trigger('languagechange'))
- }),
- (e.languages = function () {
- return lt(o.prototype.options_.languages, this.languages_)
- }),
- (e.toJSON = function () {
- var e = lt(this.options_),
- t = e.tracks
- e.tracks = []
- for (var i = 0; i < t.length; i++) {
- var n = t[i]
- ;((n = lt(n)).player = void 0), (e.tracks[i] = n)
- }
- return e
- }),
- (e.createModal = function (e, t) {
- var i = this
- ;(t = t || {}).content = e || ''
- var n = new At(this, t)
- return (
- this.addChild(n),
- n.on('dispose', function () {
- i.removeChild(n)
- }),
- n.open(),
- n
- )
- }),
- (e.updateCurrentBreakpoint_ = function () {
- if (this.responsive())
- for (var e = this.currentBreakpoint(), t = this.currentWidth(), i = 0; i < Nn.length; i++) {
- var n = Nn[i]
- if (t <= this.breakpoints_[n]) {
- if (e === n) return
- e && this.removeClass(Un[e]), this.addClass(Un[n]), (this.breakpoint_ = n)
- break
- }
- }
- }),
- (e.removeCurrentBreakpoint_ = function () {
- var e = this.currentBreakpointClass()
- ;(this.breakpoint_ = ''), e && this.removeClass(e)
- }),
- (e.breakpoints = function (e) {
- return void 0 === e || ((this.breakpoint_ = ''), (this.breakpoints_ = b({}, Bn, e)), this.updateCurrentBreakpoint_()), b(this.breakpoints_)
- }),
- (e.responsive = function (e) {
- return void 0 === e
- ? this.responsive_
- : (e = Boolean(e)) !== this.responsive_
- ? ((this.responsive_ = e)
- ? (this.on('playerresize', this.boundUpdateCurrentBreakpoint_), this.updateCurrentBreakpoint_())
- : (this.off('playerresize', this.boundUpdateCurrentBreakpoint_), this.removeCurrentBreakpoint_()),
- e)
- : void 0
- }),
- (e.currentBreakpoint = function () {
- return this.breakpoint_
- }),
- (e.currentBreakpointClass = function () {
- return Un[this.breakpoint_] || ''
- }),
- (e.loadMedia = function (e, t) {
- var i,
- n,
- r,
- a = this
- e &&
- 'object' == typeof e &&
- (this.reset(),
- (this.cache_.media = lt(e)),
- (i = (r = this.cache_.media).artwork),
- (n = r.poster),
- (e = r.src),
- (r = r.textTracks),
- !i && n && (this.cache_.media.artwork = [{ src: n, type: $i(n) }]),
- e && this.src(e),
- n && this.poster(n),
- Array.isArray(r) &&
- r.forEach(function (e) {
- return a.addRemoteTextTrack(e, !1)
- }),
- this.ready(t))
- }),
- (e.getMedia = function () {
- if (this.cache_.media) return lt(this.cache_.media)
- var e = this.poster(),
- t = {
- src: this.currentSources(),
- textTracks: Array.prototype.map.call(this.remoteTextTracks(), function (e) {
- return { kind: e.kind, label: e.label, language: e.language, src: e.src }
- }),
- }
- return e && ((t.poster = e), (t.artwork = [{ src: t.poster, type: $i(t.poster) }])), t
- }),
- (o.getTagSettings = function (e) {
- var t,
- i = { sources: [], tracks: [] },
- n = ae(e),
- r = n['data-setup']
- if (
- (ee(e, 'vjs-fill') && (n.fill = !0),
- ee(e, 'vjs-fluid') && (n.fluid = !0),
- null !== r && ((r = (t = St(r || '{}'))[0]), (t = t[1]), r && h.error(r), b(n, t)),
- b(i, n),
- e.hasChildNodes())
- )
- for (var a = e.childNodes, s = 0, o = a.length; s < o; s++) {
- var u = a[s],
- l = u.nodeName.toLowerCase()
- 'source' === l ? i.sources.push(ae(u)) : 'track' === l && i.tracks.push(ae(u))
- }
- return i
- }),
- (e.flexNotSupported_ = function () {
- var e = document.createElement('i')
- return !('flexBasis' in e.style || 'webkitFlexBasis' in e.style || 'mozFlexBasis' in e.style || 'msFlexBasis' in e.style || 'msFlexOrder' in e.style)
- }),
- (e.debug = function (e) {
- if (void 0 === e) return this.debugEnabled_
- e
- ? (this.trigger('debugon'), (this.previousLogLevel_ = this.log.level), this.log.level('debug'), (this.debugEnabled_ = !0))
- : (this.trigger('debugoff'), this.log.level(this.previousLogLevel_), (this.previousLogLevel_ = void 0), (this.debugEnabled_ = !1))
- }),
- (e.playbackRates = function (e) {
- if (void 0 === e) return this.cache_.playbackRates
- Array.isArray(e) &&
- e.every(function (e) {
- return 'number' == typeof e
- }) &&
- ((this.cache_.playbackRates = e), this.trigger('playbackrateschange'))
- }),
- o
- )
- })(pt)
- oi.names.forEach(function (e) {
- var t = oi[e]
- Fn.prototype[t.getterName] = function () {
- return this.tech_ ? this.tech_[t.getterName]() : ((this[t.privateName] = this[t.privateName] || new t.ListClass()), this[t.privateName])
- }
- }),
- (Fn.prototype.crossorigin = Fn.prototype.crossOrigin),
- (Fn.players = {})
- k = window.navigator
- ;(Fn.prototype.options_ = {
- techOrder: ji.defaultTechOrder_,
- html5: {},
- inactivityTimeout: 2e3,
- playbackRates: [],
- liveui: !1,
- children: ['mediaLoader', 'posterImage', 'textTrackDisplay', 'loadingSpinner', 'bigPlayButton', 'liveTracker', 'controlBar', 'errorDisplay', 'textTrackSettings', 'resizeManager'],
- language: (k && ((k.languages && k.languages[0]) || k.userLanguage || k.language)) || 'en',
- languages: {},
- notSupportedMessage: 'No compatible source was found for this media.',
- normalizeAutoplay: !1,
- fullscreen: { options: { navigationUI: 'hide' } },
- breakpoints: {},
- responsive: !1,
- audioOnlyMode: !1,
- audioPosterMode: !1,
- }),
- ['ended', 'seeking', 'seekable', 'networkState', 'readyState'].forEach(function (e) {
- Fn.prototype[e] = function () {
- return this.techGet_(e)
- }
- }),
- Mn.forEach(function (e) {
- Fn.prototype['handleTech' + ut(e) + '_'] = function () {
- return this.trigger(e)
- }
- }),
- pt.registerComponent('Player', Fn)
- var jn = m(function (i) {
- function n(e, t) {
- return (
- (i.exports = n =
- Object.setPrototypeOf ||
- function (e, t) {
- return (e.__proto__ = t), e
- }),
- n(e, t)
- )
- }
- i.exports = n
- })
- function Hn(e) {
- return Qn.hasOwnProperty(e)
- }
- function qn(e) {
- return Hn(e) ? Qn[e] : void 0
- }
- function Vn(e, t, i) {
- ;(i = (i ? 'before' : '') + 'pluginsetup'), e.trigger(i, t), e.trigger(i + ':' + t.name, t)
- }
- function Wn(t, i) {
- function n() {
- Vn(this, { name: t, plugin: i, instance: null }, !0)
- var e = i.apply(this, arguments)
- return $n(this, t), Vn(this, { name: t, plugin: i, instance: e }), e
- }
- return (
- Object.keys(i).forEach(function (e) {
- n[e] = i[e]
- }),
- n
- )
- }
- function Gn(r, a) {
- return (
- (a.prototype.name = r),
- function () {
- Vn(this, { name: r, plugin: a, instance: null }, !0)
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- var n = Xn(a, [this].concat(t))
- return (
- (this[r] = function () {
- return n
- }),
- Vn(this, n.getEventHash()),
- n
- )
- }
- )
- }
- var zn = function () {
- if ('undefined' == typeof Reflect || !Reflect.construct) return !1
- if (Reflect.construct.sham) return !1
- if ('function' == typeof Proxy) return !0
- try {
- return Date.prototype.toString.call(Reflect.construct(Date, [], function () {})), !0
- } catch (e) {
- return !1
- }
- },
- Xn = m(function (n) {
- function r(e, t, i) {
- return (
- zn()
- ? (n.exports = r = Reflect.construct)
- : (n.exports = r =
- function (e, t, i) {
- var n = [null]
- n.push.apply(n, t)
- n = new (Function.bind.apply(e, n))()
- return i && jn(n, i.prototype), n
- }),
- r.apply(null, arguments)
- )
- }
- n.exports = r
- }),
- Kn = 'plugin',
- Yn = 'activePlugins_',
- Qn = {},
- $n = function (e, t) {
- ;(e[Yn] = e[Yn] || {}), (e[Yn][t] = !0)
- },
- Jn = (function () {
- function i(e) {
- if (this.constructor === i) throw new Error('Plugin must be sub-classed; not directly instantiated.')
- ;(this.player = e),
- this.log || (this.log = this.player.log.createLogger(this.name)),
- rt(this),
- delete this.trigger,
- st(this, this.constructor.defaultState),
- $n(e, this.name),
- (this.dispose = this.dispose.bind(this)),
- e.on('dispose', this.dispose)
- }
- var e = i.prototype
- return (
- (e.version = function () {
- return this.constructor.VERSION
- }),
- (e.getEventHash = function (e) {
- return ((e = void 0 === e ? {} : e).name = this.name), (e.plugin = this.constructor), (e.instance = this), e
- }),
- (e.trigger = function (e, t) {
- return je(this.eventBusEl_, e, this.getEventHash((t = void 0 === t ? {} : t)))
- }),
- (e.handleStateChanged = function (e) {}),
- (e.dispose = function () {
- var e = this.name,
- t = this.player
- this.trigger('dispose'), this.off(), t.off('dispose', this.dispose), (t[Yn][e] = !1), (this.player = this.state = null), (t[e] = Gn(e, Qn[e]))
- }),
- (i.isBasic = function (e) {
- e = 'string' == typeof e ? qn(e) : e
- return 'function' == typeof e && !i.prototype.isPrototypeOf(e.prototype)
- }),
- (i.registerPlugin = function (e, t) {
- if ('string' != typeof e) throw new Error('Illegal plugin name, "' + e + '", must be a string, was ' + typeof e + '.')
- if (Hn(e)) h.warn('A plugin named "' + e + '" already exists. You may want to avoid re-registering plugins!')
- else if (Fn.prototype.hasOwnProperty(e)) throw new Error('Illegal plugin name, "' + e + '", cannot share a name with an existing player method!')
- if ('function' != typeof t) throw new Error('Illegal plugin for "' + e + '", must be a function, was ' + typeof t + '.')
- return (Qn[e] = t), e !== Kn && (i.isBasic(t) ? (Fn.prototype[e] = Wn(e, t)) : (Fn.prototype[e] = Gn(e, t))), t
- }),
- (i.deregisterPlugin = function (e) {
- if (e === Kn) throw new Error('Cannot de-register base plugin.')
- Hn(e) && (delete Qn[e], delete Fn.prototype[e])
- }),
- (i.getPlugins = function (e) {
- var i
- return (
- (e = void 0 === e ? Object.keys(Qn) : e).forEach(function (e) {
- var t = qn(e)
- t && ((i = i || {})[e] = t)
- }),
- i
- )
- }),
- (i.getPluginVersion = function (e) {
- e = qn(e)
- return (e && e.VERSION) || ''
- }),
- i
- )
- })()
- ;(Jn.getPlugin = qn),
- (Jn.BASE_PLUGIN_NAME = Kn),
- Jn.registerPlugin(Kn, Jn),
- (Fn.prototype.usingPlugin = function (e) {
- return !!this[Yn] && !0 === this[Yn][e]
- }),
- (Fn.prototype.hasPlugin = function (e) {
- return !!Hn(e)
- })
- var Zn = function (e, t) {
- if ('function' != typeof t && null !== t) throw new TypeError('Super expression must either be null or a function')
- ;(e.prototype = Object.create(t && t.prototype, { constructor: { value: e, writable: !0, configurable: !0 } })), t && jn(e, t)
- },
- er = function (e) {
- return 0 === e.indexOf('#') ? e.slice(1) : e
- }
- function tr(e, t, i) {
- if ((r = tr.getPlayer(e))) return t && h.warn('Player "' + e + '" is already initialised. Options will not be applied.'), i && r.ready(i), r
- var n = 'string' == typeof e ? Te('#' + er(e)) : e
- if (!K(n)) throw new TypeError('The element or ID supplied is not valid. (videojs)')
- ;(n.ownerDocument.defaultView && n.ownerDocument.body.contains(n)) || h.warn('The element supplied is not included in the DOM'),
- !0 === (t = t || {}).restoreEl && (t.restoreEl = (n.parentNode && n.parentNode.hasAttribute('data-vjs-player') ? n.parentNode : n).cloneNode(!0)),
- a('beforesetup').forEach(function (e) {
- e = e(n, lt(t))
- T(e) && !Array.isArray(e) ? (t = lt(t, e)) : h.error('please return an object in beforesetup hooks')
- })
- var r = new (pt.getComponent('Player'))(n, t, i)
- return (
- a('setup').forEach(function (e) {
- return e(r)
- }),
- r
- )
- }
- ;(tr.hooks_ = i),
- (tr.hooks = a),
- (tr.hook = function (e, t) {
- a(e, t)
- }),
- (tr.hookOnce = function (i, e) {
- a(
- i,
- [].concat(e).map(function (t) {
- return function e() {
- return n(i, e), t.apply(void 0, arguments)
- }
- })
- )
- }),
- (tr.removeHook = n),
- !0 !== window.VIDEOJS_NO_DYNAMIC_STYLE &&
- X() &&
- ((ar = Te('.vjs-styles-defaults')) ||
- ((ar = xe('vjs-styles-defaults')),
- (k = Te('head')) && k.insertBefore(ar, k.firstChild),
- Ae(ar, '\n .video-js {\n width: 300px;\n height: 150px;\n }\n\n .vjs-fluid:not(.vjs-audio-only-mode) {\n padding-top: 56.25%\n }\n '))),
- Ce(1, tr),
- (tr.VERSION = u),
- (tr.options = Fn.prototype.options_),
- (tr.getPlayers = function () {
- return Fn.players
- }),
- (tr.getPlayer = function (e) {
- var t = Fn.players
- if ('string' == typeof e) {
- var i = er(e),
- n = t[i]
- if (n) return n
- i = Te('#' + i)
- } else i = e
- if (K(i)) {
- ;(e = i.player), (i = i.playerId)
- if (e || t[i]) return e || t[i]
- }
- }),
- (tr.getAllPlayers = function () {
- return Object.keys(Fn.players)
- .map(function (e) {
- return Fn.players[e]
- })
- .filter(Boolean)
- }),
- (tr.players = Fn.players),
- (tr.getComponent = pt.getComponent),
- (tr.registerComponent = function (e, t) {
- ji.isTech(t) && h.warn('The ' + e + ' tech was registered as a component. It should instead be registered using videojs.registerTech(name, tech)'), pt.registerComponent.call(pt, e, t)
- }),
- (tr.getTech = ji.getTech),
- (tr.registerTech = ji.registerTech),
- (tr.use = function (e, t) {
- ;(Hi[e] = Hi[e] || []), Hi[e].push(t)
- }),
- Object.defineProperty(tr, 'middleware', { value: {}, writeable: !1, enumerable: !0 }),
- Object.defineProperty(tr.middleware, 'TERMINATOR', { value: Vi, writeable: !1, enumerable: !0 }),
- (tr.browser = W),
- (tr.TOUCH_ENABLED = F),
- (tr.extend = function (e, t) {
- var i,
- n = function () {
- e.apply(this, arguments)
- },
- r = {}
- for (i in ('object' == typeof (t = void 0 === t ? {} : t) ? (t.constructor !== Object.prototype.constructor && (n = t.constructor), (r = t)) : 'function' == typeof t && (n = t),
- Zn(n, e),
- e && (n.super_ = e),
- r))
- r.hasOwnProperty(i) && (n.prototype[i] = r[i])
- return n
- }),
- (tr.mergeOptions = lt),
- (tr.bind = Ve),
- (tr.registerPlugin = Jn.registerPlugin),
- (tr.deregisterPlugin = Jn.deregisterPlugin),
- (tr.plugin = function (e, t) {
- return h.warn('videojs.plugin() is deprecated; use videojs.registerPlugin() instead'), Jn.registerPlugin(e, t)
- }),
- (tr.getPlugins = Jn.getPlugins),
- (tr.getPlugin = Jn.getPlugin),
- (tr.getPluginVersion = Jn.getPluginVersion),
- (tr.addLanguage = function (e, t) {
- var i
- return (e = ('' + e).toLowerCase()), (tr.options.languages = lt(tr.options.languages, (((i = {})[e] = t), i))), tr.options.languages[e]
- }),
- (tr.log = h),
- (tr.createLogger = p),
- (tr.createTimeRange = tr.createTimeRanges = vt),
- (tr.formatTime = ln),
- (tr.setFormatTime = function (e) {
- un = e
- }),
- (tr.resetFormatTime = function () {
- un = on
- }),
- (tr.parseUrl = Mt),
- (tr.isCrossOrigin = Ut),
- (tr.EventTarget = ze),
- (tr.on = Be),
- (tr.one = He),
- (tr.off = Fe),
- (tr.trigger = je),
- (tr.xhr = Jt),
- (tr.TextTrack = ri),
- (tr.AudioTrack = x),
- (tr.VideoTrack = U),
- ['isEl', 'isTextNode', 'createEl', 'hasClass', 'addClass', 'removeClass', 'toggleClass', 'setAttributes', 'getAttributes', 'emptyEl', 'appendContent', 'insertContent'].forEach(function (e) {
- tr[e] = function () {
- return h.warn('videojs.' + e + '() is deprecated; use videojs.dom.' + e + '() instead'), we[e].apply(null, arguments)
- }
- }),
- (tr.computedStyle = w),
- (tr.dom = we),
- (tr.url = zt),
- (tr.defineLazyProperty = An),
- tr.addLanguage('en', { 'Non-Fullscreen': 'Exit Fullscreen' })
- function ir(e, t) {
- if (/^[a-z]+:/i.test(t)) return t
- ;/^data:/.test(e) && (e = (window.location && window.location.href) || '')
- var i = 'function' == typeof window.URL,
- n = /^\/\//.test(e),
- r = !window.location && !/\/\//i.test(e)
- if ((i ? (e = new window.URL(e, window.location || rr)) : /\/\//i.test(e) || (e = nr.buildAbsoluteURL((window.location && window.location.href) || '', e)), i)) {
- i = new URL(t, e)
- return r ? i.href.slice(rr.length) : n ? i.href.slice(i.protocol.length) : i.href
- }
- return nr.buildAbsoluteURL(e, t)
- }
- var nr = m(function (e, t) {
- var i, a, n, r, s
- ;(i = /^((?:[a-zA-Z0-9+\-.]+:)?)(\/\/[^\/?#]*)?((?:[^\/?#]*\/)*[^;?#]*)?(;[^?#]*)?(\?[^#]*)?(#[^]*)?$/),
- (a = /^([^\/?#]*)([^]*)$/),
- (n = /(?:\/|^)\.(?=\/)/g),
- (r = /(?:\/|^)\.\.\/(?!\.\.\/)[^\/]*(?=\/)/g),
- (s = {
- buildAbsoluteURL: function (e, t, i) {
- if (((i = i || {}), (e = e.trim()), !(t = t.trim()))) {
- if (!i.alwaysNormalize) return e
- var n = s.parseURL(e)
- if (!n) throw new Error('Error trying to parse base URL.')
- return (n.path = s.normalizePath(n.path)), s.buildURLFromParts(n)
- }
- n = s.parseURL(t)
- if (!n) throw new Error('Error trying to parse relative URL.')
- if (n.scheme) return i.alwaysNormalize ? ((n.path = s.normalizePath(n.path)), s.buildURLFromParts(n)) : t
- t = s.parseURL(e)
- if (!t) throw new Error('Error trying to parse base URL.')
- !t.netLoc && t.path && '/' !== t.path[0] && ((r = a.exec(t.path)), (t.netLoc = r[1]), (t.path = r[2])), t.netLoc && !t.path && (t.path = '/')
- var r,
- e = { scheme: t.scheme, netLoc: n.netLoc, path: null, params: n.params, query: n.query, fragment: n.fragment }
- return (
- n.netLoc ||
- ((e.netLoc = t.netLoc),
- '/' !== n.path[0] &&
- (n.path
- ? ((r = (r = t.path).substring(0, r.lastIndexOf('/') + 1) + n.path), (e.path = s.normalizePath(r)))
- : ((e.path = t.path), n.params || ((e.params = t.params), n.query || (e.query = t.query))))),
- null === e.path && (e.path = i.alwaysNormalize ? s.normalizePath(n.path) : n.path),
- s.buildURLFromParts(e)
- )
- },
- parseURL: function (e) {
- e = i.exec(e)
- return e ? { scheme: e[1] || '', netLoc: e[2] || '', path: e[3] || '', params: e[4] || '', query: e[5] || '', fragment: e[6] || '' } : null
- },
- normalizePath: function (e) {
- for (e = e.split('').reverse().join('').replace(n, ''); e.length !== (e = e.replace(r, '')).length; );
- return e.split('').reverse().join('')
- },
- buildURLFromParts: function (e) {
- return e.scheme + e.netLoc + e.path + e.params + e.query + e.fragment
- },
- }),
- (e.exports = s)
- }),
- rr = 'http://example.com',
- ar = (function () {
- function e() {
- this.listeners = {}
- }
- var t = e.prototype
- return (
- (t.on = function (e, t) {
- this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t)
- }),
- (t.off = function (e, t) {
- if (!this.listeners[e]) return !1
- t = this.listeners[e].indexOf(t)
- return (this.listeners[e] = this.listeners[e].slice(0)), this.listeners[e].splice(t, 1), -1 < t
- }),
- (t.trigger = function (e) {
- var t = this.listeners[e]
- if (t)
- if (2 === arguments.length) for (var i = t.length, n = 0; n < i; ++n) t[n].call(this, arguments[1])
- else for (var r = Array.prototype.slice.call(arguments, 1), a = t.length, s = 0; s < a; ++s) t[s].apply(this, r)
- }),
- (t.dispose = function () {
- this.listeners = {}
- }),
- (t.pipe = function (t) {
- this.on('data', function (e) {
- t.push(e)
- })
- }),
- e
- )
- })(),
- sr = function (e) {
- return window.atob ? window.atob(e) : Buffer.from(e, 'base64').toString('binary')
- }
- function or(e) {
- for (var t = sr(e), i = new Uint8Array(t.length), n = 0; n < t.length; n++) i[n] = t.charCodeAt(n)
- return i
- }
- /*! @name m3u8-parser @version 4.7.1 @license Apache-2.0 */ function ur(e) {
- var t = /([0-9.]*)?@?([0-9.]*)?/.exec(e || ''),
- e = {}
- return t[1] && (e.length = parseInt(t[1], 10)), t[2] && (e.offset = parseInt(t[2], 10)), e
- }
- function lr(e) {
- for (var t, i = e.split(new RegExp('(?:^|,)((?:[^=]*)=(?:"[^"]*"|[^,]*))')), n = {}, r = i.length; r--; )
- '' !== i[r] &&
- (((t = /([^=]*)=(.*)/.exec(i[r]).slice(1))[0] = t[0].replace(/^\s+|\s+$/g, '')),
- (t[1] = t[1].replace(/^\s+|\s+$/g, '')),
- (t[1] = t[1].replace(/^['"](.*)['"]$/g, '$1')),
- (n[t[0]] = t[1]))
- return n
- }
- function cr(t) {
- var i = {}
- return (
- Object.keys(t).forEach(function (e) {
- i[
- e.toLowerCase().replace(/-(\w)/g, function (e) {
- return e[1].toUpperCase()
- })
- ] = t[e]
- }),
- i
- )
- }
- function dr(e) {
- var t,
- i,
- n,
- r,
- a = e.serverControl,
- s = e.targetDuration,
- o = e.partTargetDuration
- a &&
- ((t = '#EXT-X-SERVER-CONTROL'),
- (i = 'holdBack'),
- (n = 'partHoldBack'),
- (r = s && 3 * s),
- (e = o && 2 * o),
- s && !a.hasOwnProperty(i) && ((a[i] = r), this.trigger('info', { message: t + ' defaulting HOLD-BACK to targetDuration * 3 (' + r + ').' })),
- r && a[i] < r && (this.trigger('warn', { message: t + ' clamping HOLD-BACK (' + a[i] + ') to targetDuration * 3 (' + r + ')' }), (a[i] = r)),
- o && !a.hasOwnProperty(n) && ((a[n] = 3 * o), this.trigger('info', { message: t + ' defaulting PART-HOLD-BACK to partTargetDuration * 3 (' + a[n] + ').' })),
- o && a[n] < e && (this.trigger('warn', { message: t + ' clamping PART-HOLD-BACK (' + a[n] + ') to partTargetDuration * 2 (' + e + ').' }), (a[n] = e)))
- }
- function hr(e) {
- return (
- e &&
- e.replace(/avc1\.(\d+)\.(\d+)/i, function (e, t, i) {
- return 'avc1.' + ('00' + Number(t).toString(16)).slice(-2) + '00' + ('00' + Number(i).toString(16)).slice(-2)
- })
- )
- }
- function pr(e) {
- var e = (e = void 0 === e ? '' : e).split(','),
- a = []
- return (
- e.forEach(function (n) {
- var r
- ;(n = n.trim()),
- Ar.forEach(function (e) {
- var t,
- i = xr[e].exec(n.toLowerCase())
- !i || i.length <= 1 || ((r = e), (t = n.substring(0, i[1].length)), (i = n.replace(t, '')), a.push({ type: t, details: i, mediaType: e }))
- }),
- r || a.push({ type: n, details: '', mediaType: 'unknown' })
- }),
- a
- )
- }
- function fr(e) {
- return xr.audio.test((e = void 0 === e ? '' : e).trim().toLowerCase())
- }
- function mr(e) {
- if (e && 'string' == typeof e) {
- var t = e
- .toLowerCase()
- .split(',')
- .map(function (e) {
- return hr(e.trim())
- }),
- i = 'video'
- 1 === t.length && fr(t[0]) ? (i = 'audio') : 1 === t.length && ((n = t[0]), xr.text.test((n = void 0 === n ? '' : n).trim().toLowerCase())) && (i = 'application')
- var n = 'mp4'
- return (
- t.every(function (e) {
- return xr.mp4.test(e)
- })
- ? (n = 'mp4')
- : t.every(function (e) {
- return xr.webm.test(e)
- })
- ? (n = 'webm')
- : t.every(function (e) {
- return xr.ogg.test(e)
- }) && (n = 'ogg'),
- i + '/' + n + ';codecs="' + e + '"'
- )
- }
- }
- function gr(e) {
- return void 0 === e && (e = ''), (window.MediaSource && window.MediaSource.isTypeSupported && window.MediaSource.isTypeSupported(mr(e))) || !1
- }
- function yr(e) {
- return (e = void 0 === e ? '' : e)
- .toLowerCase()
- .split(',')
- .every(function (e) {
- e = e.trim()
- for (var t = 0; t < Pr.length; t++) if (xr['muxer' + Pr[t]].test(e)) return !0
- return !1
- })
- }
- function vr(e) {
- return Dr.test(e) ? 'hls' : Or.test(e) ? 'dash' : 'application/vnd.videojs.vhs+json' === e ? 'vhs-json' : null
- }
- function _r(e) {
- return 'function' === ArrayBuffer.isView ? ArrayBuffer.isView(e) : e && e.buffer instanceof ArrayBuffer
- }
- function br(e) {
- return e instanceof Uint8Array
- ? e
- : (Array.isArray(e) || Mr(e) || e instanceof ArrayBuffer || (e = 'number' != typeof e || ('number' == typeof e && e != e) ? 0 : [e]),
- new Uint8Array((e && e.buffer) || e, (e && e.byteOffset) || 0, (e && e.byteLength) || 0))
- }
- function Tr(e, t) {
- var i = void 0 !== (t = (void 0 === t ? {} : t).le) && t
- e = Rr((e = ('bigint' != typeof e && 'number' != typeof e) || ('number' == typeof e && e != e) ? 0 : e))
- for (var n = ((t = e), Math.ceil(t.toString(2).length / 8)), r = new Uint8Array(new ArrayBuffer(n)), a = 0; a < n; a++) {
- var s = i ? a : Math.abs(a + 1 - r.length)
- ;(r[s] = Number((e / Nr[a]) & Rr(255))), e < 0 && ((r[s] = Math.abs(~r[s])), (r[s] -= 0 === a ? 1 : 2))
- }
- return r
- }
- function Sr(e, t) {
- if ('string' != typeof (e = 'string' != typeof e && e && 'function' == typeof e.toString ? e.toString() : e)) return new Uint8Array()
- t || (e = unescape(encodeURIComponent(e)))
- for (var i = new Uint8Array(e.length), n = 0; n < e.length; n++) i[n] = e.charCodeAt(n)
- return i
- }
- function wr(i, e, t) {
- var n = void 0 === t ? {} : t,
- r = void 0 === (t = n.offset) ? 0 : t,
- a = void 0 === (n = n.mask) ? [] : n
- return (
- (i = br(i)),
- (n = (e = br(e)).every || Array.prototype.every),
- e.length &&
- i.length - r >= e.length &&
- n.call(e, function (e, t) {
- return e === (a[t] ? a[t] & i[r + t] : i[r + t])
- })
- )
- }
- var Er = (function (t) {
- function e() {
- var e = t.call(this) || this
- return (e.buffer = ''), e
- }
- return (
- mt(e, t),
- (e.prototype.push = function (e) {
- var t
- for (this.buffer += e, t = this.buffer.indexOf('\n'); -1 < t; t = this.buffer.indexOf('\n'))
- this.trigger('data', this.buffer.substring(0, t)), (this.buffer = this.buffer.substring(t + 1))
- }),
- e
- )
- })(ar),
- kr = String.fromCharCode(9),
- Cr = (function (t) {
- function e() {
- var e = t.call(this) || this
- return (e.customParsers = []), (e.tagMappers = []), e
- }
- mt(e, t)
- var i = e.prototype
- return (
- (i.push = function (i) {
- var r,
- a,
- s = this
- 0 !== (i = i.trim()).length &&
- ('#' === i[0]
- ? this.tagMappers
- .reduce(
- function (e, t) {
- t = t(i)
- return t === i ? e : e.concat([t])
- },
- [i]
- )
- .forEach(function (e) {
- for (var t, i, n = 0; n < s.customParsers.length; n++) if (s.customParsers[n].call(s, e)) return
- if (0 === e.indexOf('#EXT'))
- if (((e = e.replace('\r', '')), (r = /^#EXTM3U/.exec(e)))) s.trigger('data', { type: 'tag', tagType: 'm3u' })
- else {
- if ((r = /^#EXTINF:?([0-9\.]*)?,?(.*)?$/.exec(e)))
- return (a = { type: 'tag', tagType: 'inf' }), r[1] && (a.duration = parseFloat(r[1])), r[2] && (a.title = r[2]), void s.trigger('data', a)
- if ((r = /^#EXT-X-TARGETDURATION:?([0-9.]*)?/.exec(e)))
- return (a = { type: 'tag', tagType: 'targetduration' }), r[1] && (a.duration = parseInt(r[1], 10)), void s.trigger('data', a)
- if ((r = /^#EXT-X-VERSION:?([0-9.]*)?/.exec(e)))
- return (a = { type: 'tag', tagType: 'version' }), r[1] && (a.version = parseInt(r[1], 10)), void s.trigger('data', a)
- if ((r = /^#EXT-X-MEDIA-SEQUENCE:?(\-?[0-9.]*)?/.exec(e)))
- return (a = { type: 'tag', tagType: 'media-sequence' }), r[1] && (a.number = parseInt(r[1], 10)), void s.trigger('data', a)
- if ((r = /^#EXT-X-DISCONTINUITY-SEQUENCE:?(\-?[0-9.]*)?/.exec(e)))
- return (a = { type: 'tag', tagType: 'discontinuity-sequence' }), r[1] && (a.number = parseInt(r[1], 10)), void s.trigger('data', a)
- if ((r = /^#EXT-X-PLAYLIST-TYPE:?(.*)?$/.exec(e)))
- return (a = { type: 'tag', tagType: 'playlist-type' }), r[1] && (a.playlistType = r[1]), void s.trigger('data', a)
- if ((r = /^#EXT-X-BYTERANGE:?(.*)?$/.exec(e))) return (a = g(ur(r[1]), { type: 'tag', tagType: 'byterange' })), void s.trigger('data', a)
- if ((r = /^#EXT-X-ALLOW-CACHE:?(YES|NO)?/.exec(e)))
- return (a = { type: 'tag', tagType: 'allow-cache' }), r[1] && (a.allowed = !/NO/.test(r[1])), void s.trigger('data', a)
- if ((r = /^#EXT-X-MAP:?(.*)$/.exec(e)))
- return (
- (a = { type: 'tag', tagType: 'map' }),
- r[1] && ((t = lr(r[1])).URI && (a.uri = t.URI), t.BYTERANGE && (a.byterange = ur(t.BYTERANGE))),
- void s.trigger('data', a)
- )
- if ((r = /^#EXT-X-STREAM-INF:?(.*)$/.exec(e)))
- return (
- (a = { type: 'tag', tagType: 'stream-inf' }),
- r[1] &&
- ((a.attributes = lr(r[1])),
- a.attributes.RESOLUTION &&
- ((i = {}),
- (t = a.attributes.RESOLUTION.split('x'))[0] && (i.width = parseInt(t[0], 10)),
- t[1] && (i.height = parseInt(t[1], 10)),
- (a.attributes.RESOLUTION = i)),
- a.attributes.BANDWIDTH && (a.attributes.BANDWIDTH = parseInt(a.attributes.BANDWIDTH, 10)),
- a.attributes['PROGRAM-ID'] && (a.attributes['PROGRAM-ID'] = parseInt(a.attributes['PROGRAM-ID'], 10))),
- void s.trigger('data', a)
- )
- if ((r = /^#EXT-X-MEDIA:?(.*)$/.exec(e))) return (a = { type: 'tag', tagType: 'media' }), r[1] && (a.attributes = lr(r[1])), void s.trigger('data', a)
- if ((r = /^#EXT-X-ENDLIST/.exec(e))) s.trigger('data', { type: 'tag', tagType: 'endlist' })
- else {
- if (!(r = /^#EXT-X-DISCONTINUITY/.exec(e)))
- return (r = /^#EXT-X-PROGRAM-DATE-TIME:?(.*)$/.exec(e))
- ? ((a = { type: 'tag', tagType: 'program-date-time' }),
- r[1] && ((a.dateTimeString = r[1]), (a.dateTimeObject = new Date(r[1]))),
- void s.trigger('data', a))
- : (r = /^#EXT-X-KEY:?(.*)$/.exec(e))
- ? ((a = { type: 'tag', tagType: 'key' }),
- r[1] &&
- ((a.attributes = lr(r[1])),
- a.attributes.IV &&
- ('0x' === a.attributes.IV.substring(0, 2).toLowerCase() && (a.attributes.IV = a.attributes.IV.substring(2)),
- (a.attributes.IV = a.attributes.IV.match(/.{8}/g)),
- (a.attributes.IV[0] = parseInt(a.attributes.IV[0], 16)),
- (a.attributes.IV[1] = parseInt(a.attributes.IV[1], 16)),
- (a.attributes.IV[2] = parseInt(a.attributes.IV[2], 16)),
- (a.attributes.IV[3] = parseInt(a.attributes.IV[3], 16)),
- (a.attributes.IV = new Uint32Array(a.attributes.IV)))),
- void s.trigger('data', a))
- : (r = /^#EXT-X-START:?(.*)$/.exec(e))
- ? ((a = { type: 'tag', tagType: 'start' }),
- r[1] &&
- ((a.attributes = lr(r[1])),
- (a.attributes['TIME-OFFSET'] = parseFloat(a.attributes['TIME-OFFSET'])),
- (a.attributes.PRECISE = /YES/.test(a.attributes.PRECISE))),
- void s.trigger('data', a))
- : (r = /^#EXT-X-CUE-OUT-CONT:?(.*)?$/.exec(e))
- ? ((a = { type: 'tag', tagType: 'cue-out-cont' }), r[1] ? (a.data = r[1]) : (a.data = ''), void s.trigger('data', a))
- : (r = /^#EXT-X-CUE-OUT:?(.*)?$/.exec(e))
- ? ((a = { type: 'tag', tagType: 'cue-out' }), r[1] ? (a.data = r[1]) : (a.data = ''), void s.trigger('data', a))
- : (r = /^#EXT-X-CUE-IN:?(.*)?$/.exec(e))
- ? ((a = { type: 'tag', tagType: 'cue-in' }), r[1] ? (a.data = r[1]) : (a.data = ''), void s.trigger('data', a))
- : (r = /^#EXT-X-SKIP:(.*)$/.exec(e)) && r[1]
- ? (((a = { type: 'tag', tagType: 'skip' }).attributes = lr(r[1])),
- a.attributes.hasOwnProperty('SKIPPED-SEGMENTS') && (a.attributes['SKIPPED-SEGMENTS'] = parseInt(a.attributes['SKIPPED-SEGMENTS'], 10)),
- a.attributes.hasOwnProperty('RECENTLY-REMOVED-DATERANGES') &&
- (a.attributes['RECENTLY-REMOVED-DATERANGES'] = a.attributes['RECENTLY-REMOVED-DATERANGES'].split(kr)),
- void s.trigger('data', a))
- : (r = /^#EXT-X-PART:(.*)$/.exec(e)) && r[1]
- ? (((a = { type: 'tag', tagType: 'part' }).attributes = lr(r[1])),
- ['DURATION'].forEach(function (e) {
- a.attributes.hasOwnProperty(e) && (a.attributes[e] = parseFloat(a.attributes[e]))
- }),
- ['INDEPENDENT', 'GAP'].forEach(function (e) {
- a.attributes.hasOwnProperty(e) && (a.attributes[e] = /YES/.test(a.attributes[e]))
- }),
- a.attributes.hasOwnProperty('BYTERANGE') && (a.attributes.byterange = ur(a.attributes.BYTERANGE)),
- void s.trigger('data', a))
- : (r = /^#EXT-X-SERVER-CONTROL:(.*)$/.exec(e)) && r[1]
- ? (((a = { type: 'tag', tagType: 'server-control' }).attributes = lr(r[1])),
- ['CAN-SKIP-UNTIL', 'PART-HOLD-BACK', 'HOLD-BACK'].forEach(function (e) {
- a.attributes.hasOwnProperty(e) && (a.attributes[e] = parseFloat(a.attributes[e]))
- }),
- ['CAN-SKIP-DATERANGES', 'CAN-BLOCK-RELOAD'].forEach(function (e) {
- a.attributes.hasOwnProperty(e) && (a.attributes[e] = /YES/.test(a.attributes[e]))
- }),
- void s.trigger('data', a))
- : (r = /^#EXT-X-PART-INF:(.*)$/.exec(e)) && r[1]
- ? (((a = { type: 'tag', tagType: 'part-inf' }).attributes = lr(r[1])),
- ['PART-TARGET'].forEach(function (e) {
- a.attributes.hasOwnProperty(e) && (a.attributes[e] = parseFloat(a.attributes[e]))
- }),
- void s.trigger('data', a))
- : (r = /^#EXT-X-PRELOAD-HINT:(.*)$/.exec(e)) && r[1]
- ? (((a = { type: 'tag', tagType: 'preload-hint' }).attributes = lr(r[1])),
- ['BYTERANGE-START', 'BYTERANGE-LENGTH'].forEach(function (e) {
- var t
- a.attributes.hasOwnProperty(e) &&
- ((a.attributes[e] = parseInt(a.attributes[e], 10)),
- (t = 'BYTERANGE-LENGTH' === e ? 'length' : 'offset'),
- (a.attributes.byterange = a.attributes.byterange || {}),
- (a.attributes.byterange[t] = a.attributes[e]),
- delete a.attributes[e])
- }),
- void s.trigger('data', a))
- : (r = /^#EXT-X-RENDITION-REPORT:(.*)$/.exec(e)) && r[1]
- ? (((a = { type: 'tag', tagType: 'rendition-report' }).attributes = lr(r[1])),
- ['LAST-MSN', 'LAST-PART'].forEach(function (e) {
- a.attributes.hasOwnProperty(e) && (a.attributes[e] = parseInt(a.attributes[e], 10))
- }),
- void s.trigger('data', a))
- : void s.trigger('data', { type: 'tag', data: e.slice(4) })
- s.trigger('data', { type: 'tag', tagType: 'discontinuity' })
- }
- }
- else s.trigger('data', { type: 'comment', text: e.slice(1) })
- })
- : this.trigger('data', { type: 'uri', uri: i }))
- }),
- (i.addParser = function (e) {
- var t = this,
- i = e.expression,
- n = e.customType,
- r = e.dataParser,
- a = e.segment
- 'function' != typeof r &&
- (r = function (e) {
- return e
- }),
- this.customParsers.push(function (e) {
- if (i.exec(e)) return t.trigger('data', { type: 'custom', data: r(e), customType: n, segment: a }), !0
- })
- }),
- (i.addTagMapper = function (e) {
- var t = e.expression,
- i = e.map
- this.tagMappers.push(function (e) {
- return t.test(e) ? i(e) : e
- })
- }),
- e
- )
- })(ar),
- Ir = (function (t) {
- function e() {
- var e = t.call(this) || this
- ;(e.lineStream = new Er()), (e.parseStream = new Cr()), e.lineStream.pipe(e.parseStream)
- var n,
- r,
- a = ft(e),
- o = [],
- u = {},
- l = !1,
- c = { AUDIO: {}, VIDEO: {}, 'CLOSED-CAPTIONS': {}, SUBTITLES: {} },
- d = 0
- e.manifest = { allowCache: !0, discontinuityStarts: [], segments: [] }
- var h = 0,
- p = 0
- return (
- e.on('end', function () {
- u.uri ||
- (!u.parts && !u.preloadHints) ||
- (!u.map && n && (u.map = n), !u.key && r && (u.key = r), u.timeline || 'number' != typeof d || (u.timeline = d), (e.manifest.preloadSegment = u))
- }),
- e.parseStream.on('data', function (s) {
- var t, i
- ;({
- tag: function () {
- ;((
- {
- version: function () {
- s.version && (this.manifest.version = s.version)
- },
- 'allow-cache': function () {
- ;(this.manifest.allowCache = s.allowed),
- 'allowed' in s || (this.trigger('info', { message: 'defaulting allowCache to YES' }), (this.manifest.allowCache = !0))
- },
- byterange: function () {
- var e = {}
- 'length' in s && (((u.byterange = e).length = s.length), 'offset' in s || (s.offset = h)),
- 'offset' in s && ((u.byterange = e).offset = s.offset),
- (h = e.offset + e.length)
- },
- endlist: function () {
- this.manifest.endList = !0
- },
- inf: function () {
- 'mediaSequence' in this.manifest || ((this.manifest.mediaSequence = 0), this.trigger('info', { message: 'defaulting media sequence to zero' })),
- 'discontinuitySequence' in this.manifest ||
- ((this.manifest.discontinuitySequence = 0), this.trigger('info', { message: 'defaulting discontinuity sequence to zero' })),
- 0 < s.duration && (u.duration = s.duration),
- 0 === s.duration && ((u.duration = 0.01), this.trigger('info', { message: 'updating zero segment duration to a small value' })),
- (this.manifest.segments = o)
- },
- key: function () {
- if (s.attributes)
- if ('NONE' !== s.attributes.METHOD)
- if (s.attributes.URI) {
- if ('com.apple.streamingkeydelivery' === s.attributes.KEYFORMAT)
- return (
- (this.manifest.contentProtection = this.manifest.contentProtection || {}),
- void (this.manifest.contentProtection['com.apple.fps.1_0'] = { attributes: s.attributes })
- )
- if ('com.microsoft.playready' === s.attributes.KEYFORMAT)
- return (
- (this.manifest.contentProtection = this.manifest.contentProtection || {}),
- void (this.manifest.contentProtection['com.microsoft.playready'] = { uri: s.attributes.URI })
- )
- if ('urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed' === s.attributes.KEYFORMAT)
- return -1 === ['SAMPLE-AES', 'SAMPLE-AES-CTR', 'SAMPLE-AES-CENC'].indexOf(s.attributes.METHOD)
- ? void this.trigger('warn', { message: 'invalid key method provided for Widevine' })
- : ('SAMPLE-AES-CENC' === s.attributes.METHOD &&
- this.trigger('warn', { message: 'SAMPLE-AES-CENC is deprecated, please use SAMPLE-AES-CTR instead' }),
- 'data:text/plain;base64,' !== s.attributes.URI.substring(0, 23)
- ? void this.trigger('warn', { message: 'invalid key URI provided for Widevine' })
- : s.attributes.KEYID && '0x' === s.attributes.KEYID.substring(0, 2)
- ? ((this.manifest.contentProtection = this.manifest.contentProtection || {}),
- void (this.manifest.contentProtection['com.widevine.alpha'] = {
- attributes: { schemeIdUri: s.attributes.KEYFORMAT, keyId: s.attributes.KEYID.substring(2) },
- pssh: or(s.attributes.URI.split(',')[1]),
- }))
- : void this.trigger('warn', { message: 'invalid key ID provided for Widevine' }))
- s.attributes.METHOD || this.trigger('warn', { message: 'defaulting key method to AES-128' }),
- (r = { method: s.attributes.METHOD || 'AES-128', uri: s.attributes.URI }),
- 'undefined' != typeof s.attributes.IV && (r.iv = s.attributes.IV)
- } else this.trigger('warn', { message: 'ignoring key declaration without URI' })
- else r = null
- else this.trigger('warn', { message: 'ignoring key declaration without attribute list' })
- },
- 'media-sequence': function () {
- isFinite(s.number) ? (this.manifest.mediaSequence = s.number) : this.trigger('warn', { message: 'ignoring invalid media sequence: ' + s.number })
- },
- 'discontinuity-sequence': function () {
- isFinite(s.number)
- ? ((this.manifest.discontinuitySequence = s.number), (d = s.number))
- : this.trigger('warn', { message: 'ignoring invalid discontinuity sequence: ' + s.number })
- },
- 'playlist-type': function () {
- ;/VOD|EVENT/.test(s.playlistType)
- ? (this.manifest.playlistType = s.playlistType)
- : this.trigger('warn', { message: 'ignoring unknown playlist type: ' + s.playlist })
- },
- map: function () {
- ;(n = {}), s.uri && (n.uri = s.uri), s.byterange && (n.byterange = s.byterange), r && (n.key = r)
- },
- 'stream-inf': function () {
- ;(this.manifest.playlists = o),
- (this.manifest.mediaGroups = this.manifest.mediaGroups || c),
- s.attributes
- ? (u.attributes || (u.attributes = {}), g(u.attributes, s.attributes))
- : this.trigger('warn', { message: 'ignoring empty stream-inf attributes' })
- },
- media: function () {
- var e
- ;(this.manifest.mediaGroups = this.manifest.mediaGroups || c),
- s.attributes && s.attributes.TYPE && s.attributes['GROUP-ID'] && s.attributes.NAME
- ? (((e = this.manifest.mediaGroups[s.attributes.TYPE])[s.attributes['GROUP-ID']] = e[s.attributes['GROUP-ID']] || {}),
- (t = e[s.attributes['GROUP-ID']]),
- (i = { default: /yes/i.test(s.attributes.DEFAULT) }).default ? (i.autoselect = !0) : (i.autoselect = /yes/i.test(s.attributes.AUTOSELECT)),
- s.attributes.LANGUAGE && (i.language = s.attributes.LANGUAGE),
- s.attributes.URI && (i.uri = s.attributes.URI),
- s.attributes['INSTREAM-ID'] && (i.instreamId = s.attributes['INSTREAM-ID']),
- s.attributes.CHARACTERISTICS && (i.characteristics = s.attributes.CHARACTERISTICS),
- s.attributes.FORCED && (i.forced = /yes/i.test(s.attributes.FORCED)),
- (t[s.attributes.NAME] = i))
- : this.trigger('warn', { message: 'ignoring incomplete or missing media group' })
- },
- discontinuity: function () {
- ;(d += 1), (u.discontinuity = !0), this.manifest.discontinuityStarts.push(o.length)
- },
- 'program-date-time': function () {
- 'undefined' == typeof this.manifest.dateTimeString &&
- ((this.manifest.dateTimeString = s.dateTimeString), (this.manifest.dateTimeObject = s.dateTimeObject)),
- (u.dateTimeString = s.dateTimeString),
- (u.dateTimeObject = s.dateTimeObject)
- },
- targetduration: function () {
- !isFinite(s.duration) || s.duration < 0
- ? this.trigger('warn', { message: 'ignoring invalid target duration: ' + s.duration })
- : ((this.manifest.targetDuration = s.duration), dr.call(this, this.manifest))
- },
- start: function () {
- s.attributes && !isNaN(s.attributes['TIME-OFFSET'])
- ? (this.manifest.start = { timeOffset: s.attributes['TIME-OFFSET'], precise: s.attributes.PRECISE })
- : this.trigger('warn', { message: 'ignoring start declaration without appropriate attribute list' })
- },
- 'cue-out': function () {
- u.cueOut = s.data
- },
- 'cue-out-cont': function () {
- u.cueOutCont = s.data
- },
- 'cue-in': function () {
- u.cueIn = s.data
- },
- skip: function () {
- ;(this.manifest.skip = cr(s.attributes)), this.warnOnMissingAttributes_('#EXT-X-SKIP', s.attributes, ['SKIPPED-SEGMENTS'])
- },
- part: function () {
- var i = this
- l = !0
- var e = this.manifest.segments.length,
- t = cr(s.attributes)
- ;(u.parts = u.parts || []),
- u.parts.push(t),
- t.byterange && (t.byterange.hasOwnProperty('offset') || (t.byterange.offset = p), (p = t.byterange.offset + t.byterange.length))
- var n = u.parts.length - 1
- this.warnOnMissingAttributes_('#EXT-X-PART #' + n + ' for segment #' + e, s.attributes, ['URI', 'DURATION']),
- this.manifest.renditionReports &&
- this.manifest.renditionReports.forEach(function (e, t) {
- e.hasOwnProperty('lastPart') || i.trigger('warn', { message: '#EXT-X-RENDITION-REPORT #' + t + ' lacks required attribute(s): LAST-PART' })
- })
- },
- 'server-control': function () {
- var e = (this.manifest.serverControl = cr(s.attributes))
- e.hasOwnProperty('canBlockReload') ||
- ((e.canBlockReload = !1), this.trigger('info', { message: '#EXT-X-SERVER-CONTROL defaulting CAN-BLOCK-RELOAD to false' })),
- dr.call(this, this.manifest),
- e.canSkipDateranges &&
- !e.hasOwnProperty('canSkipUntil') &&
- this.trigger('warn', { message: '#EXT-X-SERVER-CONTROL lacks required attribute CAN-SKIP-UNTIL which is required when CAN-SKIP-DATERANGES is set' })
- },
- 'preload-hint': function () {
- var e = this.manifest.segments.length,
- t = cr(s.attributes),
- i = t.type && 'PART' === t.type
- ;(u.preloadHints = u.preloadHints || []),
- u.preloadHints.push(t),
- t.byterange && (t.byterange.hasOwnProperty('offset') || ((t.byterange.offset = i ? p : 0), i && (p = t.byterange.offset + t.byterange.length)))
- var n = u.preloadHints.length - 1
- if ((this.warnOnMissingAttributes_('#EXT-X-PRELOAD-HINT #' + n + ' for segment #' + e, s.attributes, ['TYPE', 'URI']), t.type))
- for (var r = 0; r < u.preloadHints.length - 1; r++) {
- var a = u.preloadHints[r]
- a.type &&
- a.type === t.type &&
- this.trigger('warn', {
- message: '#EXT-X-PRELOAD-HINT #' + n + ' for segment #' + e + ' has the same TYPE ' + t.type + ' as preload hint #' + r,
- })
- }
- },
- 'rendition-report': function () {
- var e = cr(s.attributes)
- ;(this.manifest.renditionReports = this.manifest.renditionReports || []), this.manifest.renditionReports.push(e)
- var t = this.manifest.renditionReports.length - 1,
- e = ['LAST-MSN', 'URI']
- l && e.push('LAST-PART'), this.warnOnMissingAttributes_('#EXT-X-RENDITION-REPORT #' + t, s.attributes, e)
- },
- 'part-inf': function () {
- ;(this.manifest.partInf = cr(s.attributes)),
- this.warnOnMissingAttributes_('#EXT-X-PART-INF', s.attributes, ['PART-TARGET']),
- this.manifest.partInf.partTarget && (this.manifest.partTargetDuration = this.manifest.partInf.partTarget),
- dr.call(this, this.manifest)
- },
- }[s.tagType] || function () {}
- ).call(a))
- },
- uri: function () {
- ;(u.uri = s.uri),
- o.push(u),
- !this.manifest.targetDuration ||
- 'duration' in u ||
- (this.trigger('warn', { message: 'defaulting segment duration to the target duration' }), (u.duration = this.manifest.targetDuration)),
- r && (u.key = r),
- (u.timeline = d),
- n && (u.map = n),
- (p = 0),
- (u = {})
- },
- comment: function () {},
- custom: function () {
- s.segment
- ? ((u.custom = u.custom || {}), (u.custom[s.customType] = s.data))
- : ((this.manifest.custom = this.manifest.custom || {}), (this.manifest.custom[s.customType] = s.data))
- },
- }[s.type].call(a))
- }),
- e
- )
- }
- mt(e, t)
- var i = e.prototype
- return (
- (i.warnOnMissingAttributes_ = function (e, t, i) {
- var n = []
- i.forEach(function (e) {
- t.hasOwnProperty(e) || n.push(e)
- }),
- n.length && this.trigger('warn', { message: e + ' lacks required attribute(s): ' + n.join(', ') })
- }),
- (i.push = function (e) {
- this.lineStream.push(e)
- }),
- (i.end = function () {
- this.lineStream.push('\n'), this.trigger('end')
- }),
- (i.addParser = function (e) {
- this.parseStream.addParser(e)
- }),
- (i.addTagMapper = function (e) {
- this.parseStream.addTagMapper(e)
- }),
- e
- )
- })(ar),
- xr = {
- mp4: /^(av0?1|avc0?[1234]|vp0?9|flac|opus|mp3|mp4a|mp4v|stpp.ttml.im1t)/,
- webm: /^(vp0?[89]|av0?1|opus|vorbis)/,
- ogg: /^(vp0?[89]|theora|flac|opus|vorbis)/,
- video: /^(av0?1|avc0?[1234]|vp0?[89]|hvc1|hev1|theora|mp4v)/,
- audio: /^(mp4a|flac|vorbis|opus|ac-[34]|ec-3|alac|mp3|speex|aac)/,
- text: /^(stpp.ttml.im1t)/,
- muxerVideo: /^(avc0?1)/,
- muxerAudio: /^(mp4a)/,
- muxerText: /a^/,
- },
- Ar = ['video', 'audio', 'text'],
- Pr = ['Video', 'Audio', 'Text'],
- Lr = 'mp4a.40.2',
- Dr = /^(audio|video|application)\/(x-|vnd\.apple\.)?mpegurl/i,
- Or = /^application\/dash\+xml/i,
- Mr = _r,
- Rr = window.BigInt || Number,
- Nr = [Rr('0x1'), Rr('0x100'), Rr('0x10000'), Rr('0x1000000'), Rr('0x100000000'), Rr('0x10000000000'), Rr('0x1000000000000'), Rr('0x100000000000000'), Rr('0x10000000000000000')]
- function Ur(e, t) {
- return (t = void 0 === t ? Object : t) && 'function' == typeof t.freeze ? t.freeze(e) : e
- }
- var Br = Ur({
- HTML: 'text/html',
- isHTML: function (e) {
- return e === Br.HTML
- },
- XML_APPLICATION: 'application/xml',
- XML_TEXT: 'text/xml',
- XML_XHTML_APPLICATION: 'application/xhtml+xml',
- XML_SVG_IMAGE: 'image/svg+xml',
- }),
- Fr = Ur({
- HTML: 'http://www.w3.org/1999/xhtml',
- isHTML: function (e) {
- return e === Fr.HTML
- },
- SVG: 'http://www.w3.org/2000/svg',
- XML: 'http://www.w3.org/XML/1998/namespace',
- XMLNS: 'http://www.w3.org/2000/xmlns/',
- }),
- jr = { freeze: Ur, MIME_TYPE: Br, NAMESPACE: Fr },
- Hr = jr.NAMESPACE
- function qr(e) {
- return '' !== e
- }
- function Vr(e, t) {
- return e.hasOwnProperty(t) || (e[t] = !0), e
- }
- function Wr(e) {
- if (!e) return []
- e = (e = e) ? e.split(/[\t\n\f\r ]+/).filter(qr) : []
- return Object.keys(e.reduce(Vr, {}))
- }
- function Gr(e, t) {
- for (var i in e) t[i] = e[i]
- }
- function zr(e, t) {
- var i,
- n = e.prototype
- n instanceof t || (((i = function () {}).prototype = t.prototype), Gr(n, (i = new i())), (e.prototype = n = i)), n.constructor != e && (n.constructor = e)
- }
- var W = {},
- Xr = (W.ELEMENT_NODE = 1),
- Kr = (W.ATTRIBUTE_NODE = 2),
- Yr = (W.TEXT_NODE = 3),
- Qr = (W.CDATA_SECTION_NODE = 4),
- $r = (W.ENTITY_REFERENCE_NODE = 5),
- Jr = ((W.ENTITY_NODE = 6), (W.PROCESSING_INSTRUCTION_NODE = 7)),
- Zr = (W.COMMENT_NODE = 8),
- ea = (W.DOCUMENT_NODE = 9),
- ta = (W.DOCUMENT_TYPE_NODE = 10),
- ia = (W.DOCUMENT_FRAGMENT_NODE = 11),
- x = ((W.NOTATION_NODE = 12), {}),
- na = {}
- ;(x.INDEX_SIZE_ERR = ((na[1] = 'Index size error'), 1)), (x.DOMSTRING_SIZE_ERR = ((na[2] = 'DOMString size error'), 2))
- x.HIERARCHY_REQUEST_ERR = ((na[3] = 'Hierarchy request error'), 3)
- ;(x.WRONG_DOCUMENT_ERR = ((na[4] = 'Wrong document'), 4)),
- (x.INVALID_CHARACTER_ERR = ((na[5] = 'Invalid character'), 5)),
- (x.NO_DATA_ALLOWED_ERR = ((na[6] = 'No data allowed'), 6)),
- (x.NO_MODIFICATION_ALLOWED_ERR = ((na[7] = 'No modification allowed'), 7))
- x.NOT_FOUND_ERR = ((na[8] = 'Not found'), 8)
- x.NOT_SUPPORTED_ERR = ((na[9] = 'Not supported'), 9)
- var ra
- x.INUSE_ATTRIBUTE_ERR = ((na[10] = 'Attribute in use'), 10)
- function aa(e, t) {
- var i
- return (
- t instanceof Error ? (i = t) : ((i = this), Error.call(this, na[e]), (this.message = na[e]), Error.captureStackTrace && Error.captureStackTrace(this, aa)),
- (i.code = e),
- t && (this.message = this.message + ': ' + t),
- i
- )
- }
- function sa() {}
- function oa(e, t) {
- ;(this._node = e), (this._refresh = t), ua(this)
- }
- function ua(e) {
- var t,
- i = e._node._inc || e._node.ownerDocument._inc
- e._inc != i && ((t = e._refresh(e._node)), Fa(e, 'length', t.length), Gr(t, e), (e._inc = i))
- }
- function la() {}
- function ca(e, t) {
- for (var i = e.length; i--; ) if (e[i] === t) return i
- }
- function da(e, t, i, n) {
- n ? (t[ca(t, n)] = i) : (t[t.length++] = i),
- !e ||
- ((t = (i.ownerElement = e).ownerDocument) &&
- (n && va(t, e, n), (e = e), (i = i), (t = t) && t._inc++, i.namespaceURI === Hr.XMLNS && (e._nsMap[i.prefix ? i.localName : ''] = i.value)))
- }
- function ha(e, t, i) {
- var n = ca(t, i)
- if (!(0 <= n)) throw aa(8, new Error(e.tagName + '@' + i))
- for (var r, a = t.length - 1; n < a; ) t[n] = t[++n]
- ;(t.length = a), !e || ((r = e.ownerDocument) && (va(r, e, i), (i.ownerElement = null)))
- }
- function pa() {}
- function fa() {}
- function ma(e) {
- return ('<' == e ? '<' : '>' == e && '>') || ('&' == e && '&') || ('"' == e && '"') || '&#' + e.charCodeAt() + ';'
- }
- function ga(e, t) {
- if (t(e)) return 1
- if ((e = e.firstChild))
- do {
- if (ga(e, t)) return 1
- } while ((e = e.nextSibling))
- }
- function ya() {}
- function va(e, t, i) {
- e && e._inc++, i.namespaceURI === Hr.XMLNS && delete t._nsMap[i.prefix ? i.localName : '']
- }
- function _a(e, t, i) {
- if (e && e._inc) {
- e._inc++
- var n = t.childNodes
- if (i) n[n.length++] = i
- else {
- for (var r = t.firstChild, a = 0; r; ) r = (n[a++] = r).nextSibling
- n.length = a
- }
- }
- }
- function ba(e, t) {
- var i = t.previousSibling,
- n = t.nextSibling
- return i ? (i.nextSibling = n) : (e.firstChild = n), n ? (n.previousSibling = i) : (e.lastChild = i), _a(e.ownerDocument, e), t
- }
- function Ta(e, t, i) {
- var n = t.parentNode
- if ((n && n.removeChild(t), t.nodeType === ia)) {
- var r = t.firstChild
- if (null == r) return t
- var a = t.lastChild
- } else r = a = t
- n = i ? i.previousSibling : e.lastChild
- for (
- r.previousSibling = n, a.nextSibling = i, n ? (n.nextSibling = r) : (e.firstChild = r), null == i ? (e.lastChild = a) : (i.previousSibling = a);
- (r.parentNode = e), r !== a && (r = r.nextSibling);
- );
- return _a(e.ownerDocument || e, e), t.nodeType == ia && (t.firstChild = t.lastChild = null), t
- }
- function Sa() {
- this._nsMap = {}
- }
- function wa() {}
- function Ea() {}
- function ka() {}
- function Ca() {}
- function Ia() {}
- function xa() {}
- function Aa() {}
- function Pa() {}
- function La() {}
- function Da() {}
- function Oa() {}
- function Ma() {}
- function Ra(e, t) {
- var i,
- n = [],
- r = (9 == this.nodeType && this.documentElement) || this,
- a = r.prefix,
- s = r.namespaceURI
- return Ba(this, n, e, t, (i = s && null == a && null == (a = r.lookupPrefix(s)) ? [{ namespace: s, prefix: null }] : i)), n.join('')
- }
- function Na(e, t, i) {
- var n = e.prefix || '',
- r = e.namespaceURI
- if (r && ('xml' !== n || r !== Hr.XML) && r !== Hr.XMLNS) {
- for (var a = i.length; a--; ) {
- var s = i[a]
- if (s.prefix === n) return s.namespace !== r
- }
- return 1
- }
- }
- function Ua(e, t, i) {
- e.push(' ', t, '="', i.replace(/[<&"]/g, ma), '"')
- }
- function Ba(e, t, i, n, r) {
- if (((r = r || []), n)) {
- if (!(e = n(e))) return
- if ('string' == typeof e) return void t.push(e)
- }
- switch (e.nodeType) {
- case Xr:
- var a = e.attributes,
- s = a.length,
- o = e.firstChild,
- u = e.tagName,
- l = u
- if (!(i = Hr.isHTML(e.namespaceURI) || i) && !e.prefix && e.namespaceURI) {
- for (var c, d = 0; d < a.length; d++)
- if ('xmlns' === a.item(d).name) {
- c = a.item(d).value
- break
- }
- if (!c)
- for (var h = r.length - 1; 0 <= h; h--)
- if ('' === (p = r[h]).prefix && p.namespace === e.namespaceURI) {
- c = p.namespace
- break
- }
- if (c !== e.namespaceURI)
- for (var p, h = r.length - 1; 0 <= h; h--)
- if ((p = r[h]).namespace === e.namespaceURI) {
- p.prefix && (l = p.prefix + ':' + u)
- break
- }
- }
- t.push('<', l)
- for (var f = 0; f < s; f++)
- 'xmlns' == (m = a.item(f)).prefix ? r.push({ prefix: m.localName, namespace: m.value }) : 'xmlns' == m.nodeName && r.push({ prefix: '', namespace: m.value })
- for (var m, g, y, f = 0; f < s; f++)
- Na((m = a.item(f)), 0, r) && (Ua(t, (g = m.prefix || '') ? 'xmlns:' + g : 'xmlns', (y = m.namespaceURI)), r.push({ prefix: g, namespace: y })), Ba(m, t, i, n, r)
- if (
- (u === l && Na(e, 0, r) && (Ua(t, (g = e.prefix || '') ? 'xmlns:' + g : 'xmlns', (y = e.namespaceURI)), r.push({ prefix: g, namespace: y })),
- o || (i && !/^(?:meta|link|img|br|hr|input)$/i.test(u)))
- ) {
- if ((t.push('>'), i && /^script$/i.test(u))) for (; o; ) o.data ? t.push(o.data) : Ba(o, t, i, n, r.slice()), (o = o.nextSibling)
- else for (; o; ) Ba(o, t, i, n, r.slice()), (o = o.nextSibling)
- t.push('</', l, '>')
- } else t.push('/>')
- return
- case ea:
- case ia:
- for (o = e.firstChild; o; ) Ba(o, t, i, n, r.slice()), (o = o.nextSibling)
- return
- case Kr:
- return Ua(t, e.name, e.value), 0
- case Yr:
- return t.push(e.data.replace(/[<&]/g, ma).replace(/]]>/g, ']]>'))
- case Qr:
- return t.push('<![CDATA[', e.data, ']]>')
- case Zr:
- return t.push('\x3c!--', e.data, '--\x3e')
- case ta:
- var v = e.publicId,
- _ = e.systemId
- return (
- t.push('<!DOCTYPE ', e.name),
- void (v
- ? (t.push(' PUBLIC ', v), _ && '.' != _ && t.push(' ', _), t.push('>'))
- : _ && '.' != _
- ? t.push(' SYSTEM ', _, '>')
- : ((_ = e.internalSubset) && t.push(' [', _, ']'), t.push('>')))
- )
- case Jr:
- return t.push('<?', e.target, ' ', e.data, '?>')
- case $r:
- return t.push('&', e.nodeName, ';')
- default:
- t.push('??', e.nodeName)
- }
- }
- function Fa(e, t, i) {
- e[t] = i
- }
- ;(x.INVALID_STATE_ERR = ((na[11] = 'Invalid state'), 11)),
- (x.SYNTAX_ERR = ((na[12] = 'Syntax error'), 12)),
- (x.INVALID_MODIFICATION_ERR = ((na[13] = 'Invalid modification'), 13)),
- (x.NAMESPACE_ERR = ((na[14] = 'Invalid namespace'), 14)),
- (x.INVALID_ACCESS_ERR = ((na[15] = 'Invalid access'), 15)),
- (aa.prototype = Error.prototype),
- Gr(x, aa),
- (sa.prototype = {
- length: 0,
- item: function (e) {
- return this[e] || null
- },
- toString: function (e, t) {
- for (var i = [], n = 0; n < this.length; n++) Ba(this[n], i, e, t)
- return i.join('')
- },
- }),
- (oa.prototype.item = function (e) {
- return ua(this), this[e]
- }),
- zr(oa, sa),
- (la.prototype = {
- length: 0,
- item: sa.prototype.item,
- getNamedItem: function (e) {
- for (var t = this.length; t--; ) {
- var i = this[t]
- if (i.nodeName == e) return i
- }
- },
- setNamedItem: function (e) {
- var t = e.ownerElement
- if (t && t != this._ownerElement) throw new aa(10)
- t = this.getNamedItem(e.nodeName)
- return da(this._ownerElement, this, e, t), t
- },
- setNamedItemNS: function (e) {
- var t = e.ownerElement
- if (t && t != this._ownerElement) throw new aa(10)
- return (t = this.getNamedItemNS(e.namespaceURI, e.localName)), da(this._ownerElement, this, e, t), t
- },
- removeNamedItem: function (e) {
- e = this.getNamedItem(e)
- return ha(this._ownerElement, this, e), e
- },
- removeNamedItemNS: function (e, t) {
- t = this.getNamedItemNS(e, t)
- return ha(this._ownerElement, this, t), t
- },
- getNamedItemNS: function (e, t) {
- for (var i = this.length; i--; ) {
- var n = this[i]
- if (n.localName == t && n.namespaceURI == e) return n
- }
- return null
- },
- }),
- (pa.prototype = {
- hasFeature: function (e, t) {
- return !0
- },
- createDocument: function (e, t, i) {
- var n = new ya()
- return (n.implementation = this), (n.childNodes = new sa()), (n.doctype = i || null), i && n.appendChild(i), t && ((t = n.createElementNS(e, t)), n.appendChild(t)), n
- },
- createDocumentType: function (e, t, i) {
- var n = new xa()
- return (n.name = e), (n.nodeName = e), (n.publicId = t || ''), (n.systemId = i || ''), n
- },
- }),
- (fa.prototype = {
- firstChild: null,
- lastChild: null,
- previousSibling: null,
- nextSibling: null,
- attributes: null,
- parentNode: null,
- childNodes: null,
- ownerDocument: null,
- nodeValue: null,
- namespaceURI: null,
- prefix: null,
- localName: null,
- insertBefore: function (e, t) {
- return Ta(this, e, t)
- },
- replaceChild: function (e, t) {
- this.insertBefore(e, t), t && this.removeChild(t)
- },
- removeChild: function (e) {
- return ba(this, e)
- },
- appendChild: function (e) {
- return this.insertBefore(e, null)
- },
- hasChildNodes: function () {
- return null != this.firstChild
- },
- cloneNode: function (e) {
- return (function e(t, i, n) {
- var r = new i.constructor()
- for (var a in i) {
- var s = i[a]
- 'object' != typeof s && s != r[a] && (r[a] = s)
- }
- i.childNodes && (r.childNodes = new sa())
- r.ownerDocument = t
- switch (r.nodeType) {
- case Xr:
- var o = i.attributes,
- u = (r.attributes = new la()),
- l = o.length
- u._ownerElement = r
- for (var c = 0; c < l; c++) r.setAttributeNode(e(t, o.item(c), !0))
- break
- case Kr:
- n = !0
- }
- if (n) for (var d = i.firstChild; d; ) r.appendChild(e(t, d, n)), (d = d.nextSibling)
- return r
- })(this.ownerDocument || this, this, e)
- },
- normalize: function () {
- for (var e = this.firstChild; e; ) {
- var t = e.nextSibling
- t && t.nodeType == Yr && e.nodeType == Yr ? (this.removeChild(t), e.appendData(t.data)) : (e.normalize(), (e = t))
- }
- },
- isSupported: function (e, t) {
- return this.ownerDocument.implementation.hasFeature(e, t)
- },
- hasAttributes: function () {
- return 0 < this.attributes.length
- },
- lookupPrefix: function (e) {
- for (var t = this; t; ) {
- var i = t._nsMap
- if (i) for (var n in i) if (i[n] == e) return n
- t = t.nodeType == Kr ? t.ownerDocument : t.parentNode
- }
- return null
- },
- lookupNamespaceURI: function (e) {
- for (var t = this; t; ) {
- var i = t._nsMap
- if (i && e in i) return i[e]
- t = t.nodeType == Kr ? t.ownerDocument : t.parentNode
- }
- return null
- },
- isDefaultNamespace: function (e) {
- return null == this.lookupPrefix(e)
- },
- }),
- Gr(W, fa),
- Gr(W, fa.prototype),
- (ya.prototype = {
- nodeName: '#document',
- nodeType: ea,
- doctype: null,
- documentElement: null,
- _inc: 1,
- insertBefore: function (e, t) {
- if (e.nodeType != ia) return null == this.documentElement && e.nodeType == Xr && (this.documentElement = e), Ta(this, e, t), (e.ownerDocument = this), e
- for (var i = e.firstChild; i; ) {
- var n = i.nextSibling
- this.insertBefore(i, t), (i = n)
- }
- return e
- },
- removeChild: function (e) {
- return this.documentElement == e && (this.documentElement = null), ba(this, e)
- },
- importNode: function (e, t) {
- return (function e(t, i, n) {
- var r
- switch (i.nodeType) {
- case Xr:
- ;(r = i.cloneNode(!1)).ownerDocument = t
- case ia:
- break
- case Kr:
- n = !0
- }
- r = r || i.cloneNode(!1)
- r.ownerDocument = t
- r.parentNode = null
- if (n) for (var a = i.firstChild; a; ) r.appendChild(e(t, a, n)), (a = a.nextSibling)
- return r
- })(this, e, t)
- },
- getElementById: function (t) {
- var i = null
- return (
- ga(this.documentElement, function (e) {
- if (e.nodeType == Xr && e.getAttribute('id') == t) return (i = e), !0
- }),
- i
- )
- },
- getElementsByClassName: function (s) {
- var o = Wr(s)
- return new oa(this, function (r) {
- var a = []
- return (
- 0 < o.length &&
- ga(r.documentElement, function (e) {
- var t, i, n
- e === r ||
- e.nodeType !== Xr ||
- ((t = e.getAttribute('class')) &&
- ((i = s === t) ||
- ((t = Wr(t)),
- (i = o.every(
- ((n = t),
- function (e) {
- return n && -1 !== n.indexOf(e)
- })
- ))),
- i && a.push(e)))
- }),
- a
- )
- })
- },
- createElement: function (e) {
- var t = new Sa()
- return (t.ownerDocument = this), (t.nodeName = e), (t.tagName = e), (t.localName = e), (t.childNodes = new sa()), ((t.attributes = new la())._ownerElement = t)
- },
- createDocumentFragment: function () {
- var e = new Da()
- return (e.ownerDocument = this), (e.childNodes = new sa()), e
- },
- createTextNode: function (e) {
- var t = new ka()
- return (t.ownerDocument = this), t.appendData(e), t
- },
- createComment: function (e) {
- var t = new Ca()
- return (t.ownerDocument = this), t.appendData(e), t
- },
- createCDATASection: function (e) {
- var t = new Ia()
- return (t.ownerDocument = this), t.appendData(e), t
- },
- createProcessingInstruction: function (e, t) {
- var i = new Oa()
- return (i.ownerDocument = this), (i.tagName = i.target = e), (i.nodeValue = i.data = t), i
- },
- createAttribute: function (e) {
- var t = new wa()
- return (t.ownerDocument = this), (t.name = e), (t.nodeName = e), (t.localName = e), (t.specified = !0), t
- },
- createEntityReference: function (e) {
- var t = new La()
- return (t.ownerDocument = this), (t.nodeName = e), t
- },
- createElementNS: function (e, t) {
- var i = new Sa(),
- n = t.split(':'),
- r = (i.attributes = new la())
- return (
- (i.childNodes = new sa()),
- (i.ownerDocument = this),
- (i.nodeName = t),
- (i.tagName = t),
- (i.namespaceURI = e),
- 2 == n.length ? ((i.prefix = n[0]), (i.localName = n[1])) : (i.localName = t),
- (r._ownerElement = i)
- )
- },
- createAttributeNS: function (e, t) {
- var i = new wa(),
- n = t.split(':')
- return (
- (i.ownerDocument = this), (i.nodeName = t), (i.name = t), (i.namespaceURI = e), (i.specified = !0), 2 == n.length ? ((i.prefix = n[0]), (i.localName = n[1])) : (i.localName = t), i
- )
- },
- }),
- zr(ya, fa),
- (ya.prototype.getElementsByTagName = (Sa.prototype = {
- nodeType: Xr,
- hasAttribute: function (e) {
- return null != this.getAttributeNode(e)
- },
- getAttribute: function (e) {
- e = this.getAttributeNode(e)
- return (e && e.value) || ''
- },
- getAttributeNode: function (e) {
- return this.attributes.getNamedItem(e)
- },
- setAttribute: function (e, t) {
- e = this.ownerDocument.createAttribute(e)
- ;(e.value = e.nodeValue = '' + t), this.setAttributeNode(e)
- },
- removeAttribute: function (e) {
- e = this.getAttributeNode(e)
- e && this.removeAttributeNode(e)
- },
- appendChild: function (e) {
- return e.nodeType === ia
- ? this.insertBefore(e, null)
- : (function (e, t) {
- var i = t.parentNode
- i && ((n = e.lastChild), i.removeChild(t), (n = e.lastChild))
- var n = e.lastChild
- return (t.parentNode = e), (t.previousSibling = n), (t.nextSibling = null), n ? (n.nextSibling = t) : (e.firstChild = t), (e.lastChild = t), _a(e.ownerDocument, e, t), t
- })(this, e)
- },
- setAttributeNode: function (e) {
- return this.attributes.setNamedItem(e)
- },
- setAttributeNodeNS: function (e) {
- return this.attributes.setNamedItemNS(e)
- },
- removeAttributeNode: function (e) {
- return this.attributes.removeNamedItem(e.nodeName)
- },
- removeAttributeNS: function (e, t) {
- t = this.getAttributeNodeNS(e, t)
- t && this.removeAttributeNode(t)
- },
- hasAttributeNS: function (e, t) {
- return null != this.getAttributeNodeNS(e, t)
- },
- getAttributeNS: function (e, t) {
- t = this.getAttributeNodeNS(e, t)
- return (t && t.value) || ''
- },
- setAttributeNS: function (e, t, i) {
- t = this.ownerDocument.createAttributeNS(e, t)
- ;(t.value = t.nodeValue = '' + i), this.setAttributeNode(t)
- },
- getAttributeNodeNS: function (e, t) {
- return this.attributes.getNamedItemNS(e, t)
- },
- getElementsByTagName: function (n) {
- return new oa(this, function (t) {
- var i = []
- return (
- ga(t, function (e) {
- e === t || e.nodeType != Xr || ('*' !== n && e.tagName != n) || i.push(e)
- }),
- i
- )
- })
- },
- getElementsByTagNameNS: function (n, r) {
- return new oa(this, function (t) {
- var i = []
- return (
- ga(t, function (e) {
- e === t || e.nodeType !== Xr || ('*' !== n && e.namespaceURI !== n) || ('*' !== r && e.localName != r) || i.push(e)
- }),
- i
- )
- })
- },
- }).getElementsByTagName),
- (ya.prototype.getElementsByTagNameNS = Sa.prototype.getElementsByTagNameNS),
- zr(Sa, fa),
- (wa.prototype.nodeType = Kr),
- zr(wa, fa),
- (Ea.prototype = {
- data: '',
- substringData: function (e, t) {
- return this.data.substring(e, e + t)
- },
- appendData: function (e) {
- ;(e = this.data + e), (this.nodeValue = this.data = e), (this.length = e.length)
- },
- insertData: function (e, t) {
- this.replaceData(e, 0, t)
- },
- appendChild: function (e) {
- throw new Error(na[3])
- },
- deleteData: function (e, t) {
- this.replaceData(e, t, '')
- },
- replaceData: function (e, t, i) {
- var n = this.data.substring(0, e),
- t = this.data.substring(e + t)
- ;(this.nodeValue = this.data = i = n + i + t), (this.length = i.length)
- },
- }),
- zr(Ea, fa),
- (ka.prototype = {
- nodeName: '#text',
- nodeType: Yr,
- splitText: function (e) {
- var t = (i = this.data).substring(e),
- i = i.substring(0, e)
- ;(this.data = this.nodeValue = i), (this.length = i.length)
- t = this.ownerDocument.createTextNode(t)
- return this.parentNode && this.parentNode.insertBefore(t, this.nextSibling), t
- },
- }),
- zr(ka, Ea),
- (Ca.prototype = { nodeName: '#comment', nodeType: Zr }),
- zr(Ca, Ea),
- (Ia.prototype = { nodeName: '#cdata-section', nodeType: Qr }),
- zr(Ia, Ea),
- (xa.prototype.nodeType = ta),
- zr(xa, fa),
- (Aa.prototype.nodeType = 12),
- zr(Aa, fa),
- (Pa.prototype.nodeType = 6),
- zr(Pa, fa),
- (La.prototype.nodeType = $r),
- zr(La, fa),
- (Da.prototype.nodeName = '#document-fragment'),
- (Da.prototype.nodeType = ia),
- zr(Da, fa),
- (Oa.prototype.nodeType = Jr),
- zr(Oa, fa),
- (Ma.prototype.serializeToString = function (e, t, i) {
- return Ra.call(e, t, i)
- }),
- (fa.prototype.toString = Ra)
- try {
- Object.defineProperty &&
- ((ra = function e(t) {
- switch (t.nodeType) {
- case Xr:
- case ia:
- var i = []
- for (t = t.firstChild; t; ) 7 !== t.nodeType && 8 !== t.nodeType && i.push(e(t)), (t = t.nextSibling)
- return i.join('')
- default:
- return t.nodeValue
- }
- }),
- Object.defineProperty(oa.prototype, 'length', {
- get: function () {
- return ua(this), this.$$length
- },
- }),
- Object.defineProperty(fa.prototype, 'textContent', {
- get: function () {
- return ra(this)
- },
- set: function (e) {
- switch (this.nodeType) {
- case Xr:
- case ia:
- for (; this.firstChild; ) this.removeChild(this.firstChild)
- ;(e || String(e)) && this.appendChild(this.ownerDocument.createTextNode(e))
- break
- default:
- ;(this.data = e), (this.value = e), (this.nodeValue = e)
- }
- },
- }),
- (Fa = function (e, t, i) {
- e['$$' + t] = i
- }))
- } catch (e) {}
- var U = { DocumentType: xa, DOMException: aa, DOMImplementation: pa, Element: Sa, Node: fa, NodeList: sa, XMLSerializer: Ma },
- ja = m(function (e, t) {
- var i = jr.freeze
- ;(t.XML_ENTITIES = i({ amp: '&', apos: "'", gt: '>', lt: '<', quot: '"' })),
- (t.HTML_ENTITIES = i({
- lt: '<',
- gt: '>',
- amp: '&',
- quot: '"',
- apos: "'",
- Agrave: 'À',
- Aacute: 'Á',
- Acirc: 'Â',
- Atilde: 'Ã',
- Auml: 'Ä',
- Aring: 'Å',
- AElig: 'Æ',
- Ccedil: 'Ç',
- Egrave: 'È',
- Eacute: 'É',
- Ecirc: 'Ê',
- Euml: 'Ë',
- Igrave: 'Ì',
- Iacute: 'Í',
- Icirc: 'Î',
- Iuml: 'Ï',
- ETH: 'Ð',
- Ntilde: 'Ñ',
- Ograve: 'Ò',
- Oacute: 'Ó',
- Ocirc: 'Ô',
- Otilde: 'Õ',
- Ouml: 'Ö',
- Oslash: 'Ø',
- Ugrave: 'Ù',
- Uacute: 'Ú',
- Ucirc: 'Û',
- Uuml: 'Ü',
- Yacute: 'Ý',
- THORN: 'Þ',
- szlig: 'ß',
- agrave: 'à',
- aacute: 'á',
- acirc: 'â',
- atilde: 'ã',
- auml: 'ä',
- aring: 'å',
- aelig: 'æ',
- ccedil: 'ç',
- egrave: 'è',
- eacute: 'é',
- ecirc: 'ê',
- euml: 'ë',
- igrave: 'ì',
- iacute: 'í',
- icirc: 'î',
- iuml: 'ï',
- eth: 'ð',
- ntilde: 'ñ',
- ograve: 'ò',
- oacute: 'ó',
- ocirc: 'ô',
- otilde: 'õ',
- ouml: 'ö',
- oslash: 'ø',
- ugrave: 'ù',
- uacute: 'ú',
- ucirc: 'û',
- uuml: 'ü',
- yacute: 'ý',
- thorn: 'þ',
- yuml: 'ÿ',
- nbsp: ' ',
- iexcl: '¡',
- cent: '¢',
- pound: '£',
- curren: '¤',
- yen: '¥',
- brvbar: '¦',
- sect: '§',
- uml: '¨',
- copy: '©',
- ordf: 'ª',
- laquo: '«',
- not: '¬',
- shy: '',
- reg: '®',
- macr: '¯',
- deg: '°',
- plusmn: '±',
- sup2: '²',
- sup3: '³',
- acute: '´',
- micro: 'µ',
- para: '¶',
- middot: '·',
- cedil: '¸',
- sup1: '¹',
- ordm: 'º',
- raquo: '»',
- frac14: '¼',
- frac12: '½',
- frac34: '¾',
- iquest: '¿',
- times: '×',
- divide: '÷',
- forall: '∀',
- part: '∂',
- exist: '∃',
- empty: '∅',
- nabla: '∇',
- isin: '∈',
- notin: '∉',
- ni: '∋',
- prod: '∏',
- sum: '∑',
- minus: '−',
- lowast: '∗',
- radic: '√',
- prop: '∝',
- infin: '∞',
- ang: '∠',
- and: '∧',
- or: '∨',
- cap: '∩',
- cup: '∪',
- int: '∫',
- there4: '∴',
- sim: '∼',
- cong: '≅',
- asymp: '≈',
- ne: '≠',
- equiv: '≡',
- le: '≤',
- ge: '≥',
- sub: '⊂',
- sup: '⊃',
- nsub: '⊄',
- sube: '⊆',
- supe: '⊇',
- oplus: '⊕',
- otimes: '⊗',
- perp: '⊥',
- sdot: '⋅',
- Alpha: 'Α',
- Beta: 'Β',
- Gamma: 'Γ',
- Delta: 'Δ',
- Epsilon: 'Ε',
- Zeta: 'Ζ',
- Eta: 'Η',
- Theta: 'Θ',
- Iota: 'Ι',
- Kappa: 'Κ',
- Lambda: 'Λ',
- Mu: 'Μ',
- Nu: 'Ν',
- Xi: 'Ξ',
- Omicron: 'Ο',
- Pi: 'Π',
- Rho: 'Ρ',
- Sigma: 'Σ',
- Tau: 'Τ',
- Upsilon: 'Υ',
- Phi: 'Φ',
- Chi: 'Χ',
- Psi: 'Ψ',
- Omega: 'Ω',
- alpha: 'α',
- beta: 'β',
- gamma: 'γ',
- delta: 'δ',
- epsilon: 'ε',
- zeta: 'ζ',
- eta: 'η',
- theta: 'θ',
- iota: 'ι',
- kappa: 'κ',
- lambda: 'λ',
- mu: 'μ',
- nu: 'ν',
- xi: 'ξ',
- omicron: 'ο',
- pi: 'π',
- rho: 'ρ',
- sigmaf: 'ς',
- sigma: 'σ',
- tau: 'τ',
- upsilon: 'υ',
- phi: 'φ',
- chi: 'χ',
- psi: 'ψ',
- omega: 'ω',
- thetasym: 'ϑ',
- upsih: 'ϒ',
- piv: 'ϖ',
- OElig: 'Œ',
- oelig: 'œ',
- Scaron: 'Š',
- scaron: 'š',
- Yuml: 'Ÿ',
- fnof: 'ƒ',
- circ: 'ˆ',
- tilde: '˜',
- ensp: ' ',
- emsp: ' ',
- thinsp: ' ',
- zwnj: '',
- zwj: '',
- lrm: '',
- rlm: '',
- ndash: '–',
- mdash: '—',
- lsquo: '‘',
- rsquo: '’',
- sbquo: '‚',
- ldquo: '“',
- rdquo: '”',
- bdquo: '„',
- dagger: '†',
- Dagger: '‡',
- bull: '•',
- hellip: '…',
- permil: '‰',
- prime: '′',
- Prime: '″',
- lsaquo: '‹',
- rsaquo: '›',
- oline: '‾',
- euro: '€',
- trade: '™',
- larr: '←',
- uarr: '↑',
- rarr: '→',
- darr: '↓',
- harr: '↔',
- crarr: '↵',
- lceil: '⌈',
- rceil: '⌉',
- lfloor: '⌊',
- rfloor: '⌋',
- loz: '◊',
- spades: '♠',
- clubs: '♣',
- hearts: '♥',
- diams: '♦',
- })),
- (t.entityMap = t.HTML_ENTITIES)
- })
- ja.XML_ENTITIES, ja.HTML_ENTITIES, ja.entityMap
- var Ha = jr.NAMESPACE,
- zt = /[A-Z_a-z\xC0-\xD6\xD8-\xF6\u00F8-\u02FF\u0370-\u037D\u037F-\u1FFF\u200C-\u200D\u2070-\u218F\u2C00-\u2FEF\u3001-\uD7FF\uF900-\uFDCF\uFDF0-\uFFFD]/,
- ar = new RegExp('[\\-\\.0-9' + zt.source.slice(1, -1) + '\\u00B7\\u0300-\\u036F\\u203F-\\u2040]'),
- qa = new RegExp('^' + zt.source + ar.source + '*(?::' + zt.source + ar.source + '*)?$'),
- Va = 0,
- Wa = 1,
- Ga = 2,
- za = 3,
- Xa = 4,
- Ka = 5,
- Ya = 6,
- Qa = 7
- function $a(e, t) {
- ;(this.message = e), (this.locator = t), Error.captureStackTrace && Error.captureStackTrace(this, $a)
- }
- function Ja() {}
- function Za(e, t) {
- return (t.lineNumber = e.lineNumber), (t.columnNumber = e.columnNumber), t
- }
- function es(e, t, i) {
- for (var n = e.tagName, r = null, a = e.length; a--; ) {
- var s = e[a],
- o = s.qName,
- u = s.value,
- o = 0 < (c = o.indexOf(':')) ? ((l = s.prefix = o.slice(0, c)), (d = o.slice(c + 1)), 'xmlns' === l && d) : ((l = null), 'xmlns' === (d = o) && '')
- ;(s.localName = d), !1 !== o && (null == r && ((r = {}), ts(i, (i = {}))), (i[o] = r[o] = u), (s.uri = Ha.XMLNS), t.startPrefixMapping(o, u))
- }
- for (var l, a = e.length; a--; ) (l = (s = e[a]).prefix) && ('xml' === l && (s.uri = Ha.XML), 'xmlns' !== l && (s.uri = i[l || '']))
- var c,
- d = 0 < (c = n.indexOf(':')) ? ((l = e.prefix = n.slice(0, c)), (e.localName = n.slice(c + 1))) : ((l = null), (e.localName = n)),
- h = (e.uri = i[l || ''])
- if ((t.startElement(h, d, n, e), !e.closed)) return (e.currentNSMap = i), (e.localNSMap = r), 1
- if ((t.endElement(h, d, n), r)) for (l in r) t.endPrefixMapping(l)
- }
- function ts(e, t) {
- for (var i in e) t[i] = e[i]
- }
- function is() {
- this.attributeNames = {}
- }
- ;(($a.prototype = new Error()).name = $a.name),
- (Ja.prototype = {
- parse: function (e, t, i) {
- var n = this.domBuilder
- n.startDocument(),
- ts(t, (t = {})),
- (function (i, e, n, r, a) {
- function s(e) {
- var t = e.slice(1, -1)
- return t in n
- ? n[t]
- : '#' === t.charAt(0)
- ? 65535 < (t = parseInt(t.substr(1).replace('x', '0x')))
- ? ((t -= 65536), String.fromCharCode(55296 + (t >> 10), 56320 + (1023 & t)))
- : String.fromCharCode(t)
- : (a.error('entity not found:' + e), e)
- }
- function t(e) {
- var t
- f < e && ((t = i.substring(f, e).replace(/&#?\w+;/g, s)), d && o(f), r.characters(t, 0, e - f), (f = e))
- }
- function o(e, t) {
- for (; l <= e && (t = c.exec(i)); ) (u = t.index), (l = u + t[0].length), d.lineNumber++
- d.columnNumber = e - u + 1
- }
- var u = 0,
- l = 0,
- c = /.*(?:\r\n?|\n)|.*$/g,
- d = r.locator,
- h = [{ currentNSMap: e }],
- p = {},
- f = 0
- for (;;) {
- try {
- var m,
- g,
- y = i.indexOf('<', f)
- if (y < 0) return i.substr(f).match(/^\s*$/) || ((m = r.doc), (g = m.createTextNode(i.substr(f))), m.appendChild(g), (r.currentElement = g))
- switch ((f < y && t(y), i.charAt(y + 1))) {
- case '/':
- var v = i.indexOf('>', y + 3),
- _ = i.substring(y + 2, v).replace(/[ \t\n\r]+$/g, ''),
- b = h.pop()
- v < 0
- ? ((_ = i.substring(y + 2).replace(/[\s<].*/, '')), a.error('end tag name: ' + _ + ' is not complete:' + b.tagName), (v = y + 1 + _.length))
- : _.match(/\s</) && ((_ = _.replace(/[\s<].*/, '')), a.error('end tag name: ' + _ + ' maybe not complete'), (v = y + 1 + _.length))
- var T = b.localNSMap,
- S = b.tagName == _
- if (S || (b.tagName && b.tagName.toLowerCase() == _.toLowerCase())) {
- if ((r.endElement(b.uri, b.localName, _), T)) for (var w in T) r.endPrefixMapping(w)
- S || a.fatalError('end tag name: ' + _ + ' is not match the current start tagName:' + b.tagName)
- } else h.push(b)
- v++
- break
- case '?':
- d && o(y),
- (v = (function (e, t, i) {
- var n = e.indexOf('?>', t)
- if (n) {
- t = e.substring(t, n).match(/^<\?(\S*)\s*([\s\S]*?)\s*$/)
- return t ? (t[0].length, i.processingInstruction(t[1], t[2]), n + 2) : -1
- }
- return -1
- })(i, y, r))
- break
- case '!':
- d && o(y),
- (v = (function (e, t, i, n) {
- {
- if ('-' === e.charAt(t + 2)) {
- if ('-' !== e.charAt(t + 3)) return -1
- var r = e.indexOf('--\x3e', t + 4)
- return t < r ? (i.comment(e, t + 4, r - t - 4), r + 3) : (n.error('Unclosed comment'), -1)
- }
- if ('CDATA[' == e.substr(t + 3, 6)) {
- r = e.indexOf(']]>', t + 9)
- return i.startCDATA(), i.characters(e, t + 9, r - t - 9), i.endCDATA(), r + 3
- }
- var a = (function (e, t) {
- var i,
- n = [],
- r = /'[^']+'|"[^"]+"|[^\s<>\/=]+=?|(\/?\s*>|<)/g
- ;(r.lastIndex = t), r.exec(e)
- for (; (i = r.exec(e)); ) if ((n.push(i), i[1])) return n
- })(e, t),
- n = a.length
- if (1 < n && /!doctype/i.test(a[0][0])) {
- ;(r = a[1][0]), (e = !1), (t = !1)
- 3 < n && (/^public$/i.test(a[2][0]) ? ((e = a[3][0]), (t = 4 < n && a[4][0])) : /^system$/i.test(a[2][0]) && (t = a[3][0]))
- n = a[n - 1]
- return i.startDTD(r, e, t), i.endDTD(), n.index + n[0].length
- }
- }
- return -1
- })(i, y, r, a))
- break
- default:
- d && o(y)
- var E = new is(),
- k = h[h.length - 1].currentNSMap,
- v = (function (e, t, n, i, r, a) {
- function s(e, t, i) {
- n.attributeNames.hasOwnProperty(e) && a.fatalError('Attribute ' + e + ' redefined'), n.addValue(e, t, i)
- }
- var o,
- u = ++t,
- l = Va
- for (;;) {
- var c = e.charAt(u)
- switch (c) {
- case '=':
- if (l === Wa) (o = e.slice(t, u)), (l = za)
- else {
- if (l !== Ga) throw new Error('attribute equal must after attrName')
- l = za
- }
- break
- case "'":
- case '"':
- if (l === za || l === Wa) {
- if ((l === Wa && (a.warning('attribute value must after "="'), (o = e.slice(t, u))), (t = u + 1), !(0 < (u = e.indexOf(c, t)))))
- throw new Error("attribute value no end '" + c + "' match")
- ;(d = e.slice(t, u).replace(/&#?\w+;/g, r)), s(o, d, t - 1), (l = Ka)
- } else {
- if (l != Xa) throw new Error('attribute value must after "="')
- ;(d = e.slice(t, u).replace(/&#?\w+;/g, r)),
- s(o, d, t),
- a.warning('attribute "' + o + '" missed start quot(' + c + ')!!'),
- (t = u + 1),
- (l = Ka)
- }
- break
- case '/':
- switch (l) {
- case Va:
- n.setTagName(e.slice(t, u))
- case Ka:
- case Ya:
- case Qa:
- ;(l = Qa), (n.closed = !0)
- case Xa:
- case Wa:
- case Ga:
- break
- default:
- throw new Error("attribute invalid close char('/')")
- }
- break
- case '':
- return a.error('unexpected end of input'), l == Va && n.setTagName(e.slice(t, u)), u
- case '>':
- switch (l) {
- case Va:
- n.setTagName(e.slice(t, u))
- case Ka:
- case Ya:
- case Qa:
- break
- case Xa:
- case Wa:
- '/' === (d = e.slice(t, u)).slice(-1) && ((n.closed = !0), (d = d.slice(0, -1)))
- case Ga:
- l === Ga && (d = o),
- l == Xa
- ? (a.warning('attribute "' + d + '" missed quot(")!'), s(o, d.replace(/&#?\w+;/g, r), t))
- : ((Ha.isHTML(i['']) && d.match(/^(?:disabled|checked|selected)$/i)) ||
- a.warning('attribute "' + d + '" missed value!! "' + d + '" instead!!'),
- s(d, d, t))
- break
- case za:
- throw new Error('attribute value missed!!')
- }
- return u
- case '':
- c = ' '
- default:
- if (c <= ' ')
- switch (l) {
- case Va:
- n.setTagName(e.slice(t, u)), (l = Ya)
- break
- case Wa:
- ;(o = e.slice(t, u)), (l = Ga)
- break
- case Xa:
- var d = e.slice(t, u).replace(/&#?\w+;/g, r)
- a.warning('attribute "' + d + '" missed quot(")!!'), s(o, d, t)
- case Ka:
- l = Ya
- }
- else
- switch (l) {
- case Ga:
- n.tagName,
- (Ha.isHTML(i['']) && o.match(/^(?:disabled|checked|selected)$/i)) ||
- a.warning('attribute "' + o + '" missed value!! "' + o + '" instead2!!'),
- s(o, o, t),
- (t = u),
- (l = Wa)
- break
- case Ka:
- a.warning('attribute space is required"' + o + '"!!')
- case Ya:
- ;(l = Wa), (t = u)
- break
- case za:
- ;(l = Xa), (t = u)
- break
- case Qa:
- throw new Error("elements closed character '/' and '>' must be connected to")
- }
- }
- u++
- }
- })(i, y, E, k, s, a),
- C = E.length
- if (
- (!E.closed &&
- (function (e, t, i, n) {
- var r = n[i]
- null == r && ((r = e.lastIndexOf('</' + i + '>')) < t && (r = e.lastIndexOf('</' + i)), (n[i] = r))
- return r < t
- })(i, v, E.tagName, p) &&
- ((E.closed = !0), n.nbsp || a.warning('unclosed xml attribute')),
- d && C)
- ) {
- for (var I = Za(d, {}), x = 0; x < C; x++) {
- var A = E[x]
- o(A.offset), (A.locator = Za(d, {}))
- }
- ;(r.locator = I), es(E, r, k) && h.push(E), (r.locator = d)
- } else es(E, r, k) && h.push(E)
- Ha.isHTML(E.uri) && !E.closed
- ? (v = (function (e, t, i, n, r) {
- if (/^(?:script|textarea)$/i.test(i)) {
- var a = e.indexOf('</' + i + '>', t),
- e = e.substring(t + 1, a)
- if (/[&<]/.test(e)) return /^script$/i.test(i) || (e = e.replace(/&#?\w+;/g, n)), r.characters(e, 0, e.length), a
- }
- return t + 1
- })(i, v, E.tagName, s, r))
- : v++
- }
- } catch (e) {
- if (e instanceof $a) throw e
- a.error('element parse error: ' + e), (v = -1)
- }
- f < v ? (f = v) : t(Math.max(y, f) + 1)
- }
- })(e, t, i, n, this.errorHandler),
- n.endDocument()
- },
- }),
- (is.prototype = {
- setTagName: function (e) {
- if (!qa.test(e)) throw new Error('invalid tagName:' + e)
- this.tagName = e
- },
- addValue: function (e, t, i) {
- if (!qa.test(e)) throw new Error('invalid attribute:' + e)
- ;(this.attributeNames[e] = this.length), (this[this.length++] = { qName: e, value: t, offset: i })
- },
- length: 0,
- getLocalName: function (e) {
- return this[e].localName
- },
- getLocator: function (e) {
- return this[e].locator
- },
- getQName: function (e) {
- return this[e].qName
- },
- getURI: function (e) {
- return this[e].uri
- },
- getValue: function (e) {
- return this[e].value
- },
- })
- var x = { XMLReader: Ja, ParseError: $a },
- ns = U.DOMImplementation,
- rs = jr.NAMESPACE,
- as = x.ParseError,
- ss = x.XMLReader
- function os(e) {
- this.options = e || { locator: {} }
- }
- function us() {
- this.cdata = !1
- }
- function ls(e, t) {
- ;(t.lineNumber = e.lineNumber), (t.columnNumber = e.columnNumber)
- }
- function cs(e) {
- if (e) return '\n@' + (e.systemId || '') + '#[line:' + e.lineNumber + ',col:' + e.columnNumber + ']'
- }
- function ds(e, t, i) {
- return 'string' == typeof e ? e.substr(t, i) : e.length >= t + i || t ? new java.lang.String(e, t, i) + '' : e
- }
- function hs(e, t) {
- ;(e.currentElement || e.doc).appendChild(t)
- }
- ;(os.prototype.parseFromString = function (e, t) {
- var i = this.options,
- n = new ss(),
- r = i.domBuilder || new us(),
- a = i.errorHandler,
- s = i.locator,
- o = i.xmlns || {},
- u = /\/x?html?$/.test(t),
- t = u ? ja.HTML_ENTITIES : ja.XML_ENTITIES
- return (
- s && r.setDocumentLocator(s),
- (n.errorHandler = (function (n, e, r) {
- if (!n) {
- if (e instanceof us) return e
- n = e
- }
- var a = {},
- s = n instanceof Function
- function t(t) {
- var i = n[t]
- !i &&
- s &&
- (i =
- 2 == n.length
- ? function (e) {
- n(t, e)
- }
- : n),
- (a[t] = i
- ? function (e) {
- i('[xmldom ' + t + ']\t' + e + cs(r))
- }
- : function () {})
- }
- return (r = r || {}), t('warning'), t('error'), t('fatalError'), a
- })(a, r, s)),
- (n.domBuilder = i.domBuilder || r),
- u && (o[''] = rs.HTML),
- (o.xml = o.xml || rs.XML),
- e && 'string' == typeof e ? n.parse(e, o, t) : n.errorHandler.error('invalid doc source'),
- r.doc
- )
- }),
- (us.prototype = {
- startDocument: function () {
- ;(this.doc = new ns().createDocument(null, null, null)), this.locator && (this.doc.documentURI = this.locator.systemId)
- },
- startElement: function (e, t, i, n) {
- var r = this.doc,
- a = r.createElementNS(e, i || t),
- s = n.length
- hs(this, a), (this.currentElement = a), this.locator && ls(this.locator, a)
- for (var o = 0; o < s; o++) {
- var e = n.getURI(o),
- u = n.getValue(o),
- i = n.getQName(o),
- l = r.createAttributeNS(e, i)
- this.locator && ls(n.getLocator(o), l), (l.value = l.nodeValue = u), a.setAttributeNode(l)
- }
- },
- endElement: function (e, t, i) {
- var n = this.currentElement
- n.tagName, (this.currentElement = n.parentNode)
- },
- startPrefixMapping: function (e, t) {},
- endPrefixMapping: function (e) {},
- processingInstruction: function (e, t) {
- t = this.doc.createProcessingInstruction(e, t)
- this.locator && ls(this.locator, t), hs(this, t)
- },
- ignorableWhitespace: function (e, t, i) {},
- characters: function (e, t, i) {
- var n
- ;(e = ds.apply(this, arguments)) &&
- ((n = this.cdata ? this.doc.createCDATASection(e) : this.doc.createTextNode(e)),
- this.currentElement ? this.currentElement.appendChild(n) : /^\s*$/.test(e) && this.doc.appendChild(n),
- this.locator && ls(this.locator, n))
- },
- skippedEntity: function (e) {},
- endDocument: function () {
- this.doc.normalize()
- },
- setDocumentLocator: function (e) {
- ;(this.locator = e) && (e.lineNumber = 0)
- },
- comment: function (e, t, i) {
- e = ds.apply(this, arguments)
- e = this.doc.createComment(e)
- this.locator && ls(this.locator, e), hs(this, e)
- },
- startCDATA: function () {
- this.cdata = !0
- },
- endCDATA: function () {
- this.cdata = !1
- },
- startDTD: function (e, t, i) {
- var n = this.doc.implementation
- n && n.createDocumentType && ((i = n.createDocumentType(e, t, i)), this.locator && ls(this.locator, i), hs(this, i), (this.doc.doctype = i))
- },
- warning: function (e) {},
- error: function (e) {},
- fatalError: function (e) {
- throw new as(e, this.locator)
- },
- }),
- 'endDTD,startEntity,endEntity,attributeDecl,elementDecl,externalEntityDecl,internalEntityDecl,resolveEntity,getExternalSubset,notationDecl,unparsedEntityDecl'.replace(/\w+/g, function (e) {
- us.prototype[e] = function () {
- return null
- }
- })
- function ps(e) {
- return !!e && 'object' == typeof e
- }
- function fs() {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- return t.reduce(function (t, i) {
- return (
- 'object' != typeof i ||
- Object.keys(i).forEach(function (e) {
- Array.isArray(t[e]) && Array.isArray(i[e]) ? (t[e] = t[e].concat(i[e])) : ps(t[e]) && ps(i[e]) ? (t[e] = fs(t[e], i[e])) : (t[e] = i[e])
- }),
- t
- )
- }, {})
- }
- function ms(t) {
- return Object.keys(t).map(function (e) {
- return t[e]
- })
- }
- function gs(e) {
- return e.reduce(function (e, t) {
- return e.concat(t)
- }, [])
- }
- function ys(e) {
- if (!e.length) return []
- for (var t = [], i = 0; i < e.length; i++) t.push(e[i])
- return t
- }
- function vs(e, t) {
- for (var i = 0; i < e.length; i++) if (t(e[i])) return i
- return -1
- }
- function _s(e) {
- var t = e.baseUrl,
- i = void 0 === (n = e.source) ? '' : n,
- n = void 0 === (n = e.range) ? '' : n,
- e = void 0 === (e = e.indexRange) ? '' : e,
- i = { uri: i, resolvedUri: ir((void 0 === t ? '' : t) || '', i) }
- return (
- (n || e) &&
- ((n = (n || e).split('-')),
- (e = window.BigInt ? window.BigInt(n[0]) : parseInt(n[0], 10)),
- (n = window.BigInt ? window.BigInt(n[1]) : parseInt(n[1], 10)),
- e < Number.MAX_SAFE_INTEGER && 'bigint' == typeof e && (e = Number(e)),
- 'bigint' ==
- typeof (n =
- 'bigint' == typeof (n = n < Number.MAX_SAFE_INTEGER && 'bigint' == typeof n ? Number(n) : n) || 'bigint' == typeof e
- ? window.BigInt(n) - window.BigInt(e) + window.BigInt(1)
- : n - e + 1) &&
- n < Number.MAX_SAFE_INTEGER &&
- (n = Number(n)),
- (i.byterange = { length: n, offset: e })),
- i
- )
- }
- function bs(e) {
- return e && 'number' != typeof e && (e = parseInt(e, 10)), isNaN(e) ? null : e
- }
- function Ts(e) {
- var a,
- t = e.type,
- i = e.duration,
- n = e.timescale,
- r = void 0 === n ? 1 : n,
- s = e.periodDuration,
- o = e.sourceDuration,
- e = (function (e, t) {
- for (var i = [], n = e; n < t; n++) i.push(n)
- return i
- })((n = go[t](e)).start, n.end).map(
- ((a = e),
- function (e) {
- var t = a.duration,
- i = a.timescale,
- n = a.periodStart,
- r = a.startNumber
- return { number: (void 0 === r ? 1 : r) + e, duration: t / (void 0 === i ? 1 : i), timeline: n, time: e * t }
- })
- )
- return 'static' === t && (e[(t = e.length - 1)].duration = ('number' == typeof s ? s : o) - (i / r) * t), e
- }
- function Ss(e) {
- var t = e.baseUrl,
- i = void 0 === (u = e.initialization) ? {} : u,
- n = e.sourceDuration,
- r = void 0 === (o = e.indexRange) ? '' : o,
- a = e.periodStart,
- s = e.presentationTime,
- o = void 0 === (u = e.number) ? 0 : u,
- u = e.duration
- if (!t) throw new Error(po)
- return (
- (i = _s({ baseUrl: t, source: i.sourceURL, range: i.range })),
- ((r = _s({ baseUrl: t, source: t, indexRange: r })).map = i),
- u ? (e = Ts(e)).length && ((r.duration = e[0].duration), (r.timeline = e[0].timeline)) : n && ((r.duration = n), (r.timeline = a)),
- (r.presentationTime = s || a),
- (r.number = o),
- [r]
- )
- }
- function ws(e, t, i) {
- for (
- var n = e.sidx.map || null,
- r = e.sidx.duration,
- a = e.timeline || 0,
- s = (s = e.sidx.byterange).offset + s.length,
- o = t.timescale,
- u = t.references.filter(function (e) {
- return 1 !== e.referenceType
- }),
- l = [],
- c = e.endList ? 'static' : 'dynamic',
- d = e.sidx.timeline,
- h = d,
- p = e.mediaSequence || 0,
- f = 'bigint' == typeof t.firstOffset ? window.BigInt(s) + t.firstOffset : s + t.firstOffset,
- m = 0;
- m < u.length;
- m++
- ) {
- var g = t.references[m],
- y = g.referencedSize,
- v = g.subsegmentDuration,
- g = void 0,
- g = 'bigint' == typeof f ? f + window.BigInt(y) - window.BigInt(1) : f + y - 1,
- g = Ss({ baseUrl: i, timescale: o, timeline: a, periodStart: d, presentationTime: h, number: p, duration: v, sourceDuration: r, indexRange: f + '-' + g, type: c })[0]
- n && (g.map = n), l.push(g), (f += 'bigint' == typeof f ? window.BigInt(y) : y), (h += v / o), p++
- }
- return (e.segments = l), e
- }
- function Es(e) {
- return (
- (i = function (e) {
- return e.timeline
- }),
- ms(
- e.reduce(function (t, e) {
- return (
- e.forEach(function (e) {
- t[i(e)] = e
- }),
- t
- )
- }, {})
- ).sort(function (e, t) {
- return e.timeline > t.timeline ? 1 : -1
- })
- )
- var i
- }
- function ks(e) {
- var r,
- a,
- s = []
- return (
- (r = e),
- (a = function (e, t, i, n) {
- s = s.concat(e.playlists || [])
- }),
- yo.forEach(function (e) {
- for (var t in r.mediaGroups[e])
- for (var i in r.mediaGroups[e][t]) {
- var n = r.mediaGroups[e][t][i]
- a(n, e, t, i)
- }
- }),
- s
- )
- }
- function Cs(e) {
- var i = e.playlist,
- e = e.mediaSequence
- ;(i.mediaSequence = e),
- i.segments.forEach(function (e, t) {
- e.number = i.mediaSequence + t
- })
- }
- function Is(e) {
- var r,
- a,
- t = e.oldManifest,
- i = e.newManifest,
- n = t.playlists.concat(ks(t)),
- e = i.playlists.concat(ks(i))
- return (
- (i.timelineStarts = Es([t.timelineStarts, i.timelineStarts])),
- (n = { oldPlaylists: n, newPlaylists: e, timelineStarts: i.timelineStarts }),
- (r = n.oldPlaylists),
- (e = n.newPlaylists),
- (a = n.timelineStarts),
- e.forEach(function (t) {
- t.discontinuitySequence = vs(a, function (e) {
- return e.timeline === t.timeline
- })
- var e = (function (e, t) {
- for (var i = 0; i < e.length; i++) if (e[i].attributes.NAME === t) return e[i]
- return null
- })(r, t.attributes.NAME)
- if (e && !t.sidx) {
- var i = t.segments[0],
- n = vs(e.segments, function (e) {
- return Math.abs(e.presentationTime - i.presentationTime) < 1 / 60
- })
- if (-1 === n)
- return (
- Cs({ playlist: t, mediaSequence: e.mediaSequence + e.segments.length }),
- (t.segments[0].discontinuity = !0),
- t.discontinuityStarts.unshift(0),
- void (((!e.segments.length && t.timeline > e.timeline) || (e.segments.length && t.timeline > e.segments[e.segments.length - 1].timeline)) && t.discontinuitySequence--)
- )
- e.segments[n].discontinuity && !i.discontinuity && ((i.discontinuity = !0), t.discontinuityStarts.unshift(0), t.discontinuitySequence--),
- Cs({ playlist: t, mediaSequence: e.segments[n].number })
- }
- }),
- i
- )
- }
- function xs(e) {
- return (
- e &&
- e.uri +
- '-' +
- ((t = e.byterange),
- (e = 'bigint' == typeof t.offset || 'bigint' == typeof t.length ? window.BigInt(t.offset) + window.BigInt(t.length) - window.BigInt(1) : t.offset + t.length - 1),
- t.offset + '-' + e)
- )
- var t
- }
- function As(e) {
- return ms(
- e.reduce(function (e, t) {
- var i,
- n = t.attributes.id + (t.attributes.lang || '')
- return (
- e[n]
- ? (t.segments && (t.segments[0] && (t.segments[0].discontinuity = !0), (i = e[n].segments).push.apply(i, t.segments)),
- t.attributes.contentProtection && (e[n].attributes.contentProtection = t.attributes.contentProtection))
- : ((e[n] = t), (e[n].attributes.timelineStarts = [])),
- e[n].attributes.timelineStarts.push({ start: t.attributes.periodStart, timeline: t.attributes.periodStart }),
- e
- )
- }, {})
- ).map(function (e) {
- var t, n
- return (
- (e.discontinuityStarts =
- ((t = e.segments || []),
- (n = 'discontinuity'),
- t.reduce(function (e, t, i) {
- return t[n] && e.push(i), e
- }, []))),
- e
- )
- })
- }
- function Ps(e, t) {
- var i = xs(e.sidx)
- return (i = i && t[i] && t[i].sidx) && ws(e, i, e.sidx.resolvedUri), e
- }
- function Ls(e, h, p) {
- var f
- return (
- void 0 === h && (h = {}),
- void 0 === p && (p = !1),
- (e = e.reduce(function (e, t) {
- var i = (t.attributes.role && t.attributes.role.value) || '',
- n = t.attributes.lang || '',
- r = t.attributes.label || 'main'
- e[(r = n && !t.attributes.label ? t.attributes.lang + (i ? ' (' + i + ')' : '') : r)] || (e[r] = { language: n, autoselect: !0, default: 'main' === i, playlists: [], uri: '' })
- var a,
- s,
- o,
- u,
- l,
- c,
- d,
- u = Ps(
- ((s = p),
- (o = (a = t).attributes),
- (u = a.segments),
- (l = a.sidx),
- (c = a.mediaSequence),
- (d = a.discontinuitySequence),
- (n = a.discontinuityStarts),
- (u = {
- attributes: (((a = { NAME: o.id, BANDWIDTH: o.bandwidth, CODECS: o.codecs })['PROGRAM-ID'] = 1), a),
- uri: '',
- endList: 'static' === o.type,
- timeline: o.periodStart,
- resolvedUri: '',
- targetDuration: o.duration,
- discontinuitySequence: d,
- discontinuityStarts: n,
- timelineStarts: o.timelineStarts,
- mediaSequence: c,
- segments: u,
- }),
- o.contentProtection && (u.contentProtection = o.contentProtection),
- l && (u.sidx = l),
- s && ((u.attributes.AUDIO = 'audio'), (u.attributes.SUBTITLES = 'subs')),
- u),
- h
- )
- return e[r].playlists.push(u), 'undefined' == typeof f && 'main' === i && ((f = t).default = !0), e
- }, {})),
- f || (e[Object.keys(e)[0]].default = !0),
- e
- )
- }
- function Ds(e) {
- var t = e.attributes,
- i = e.segments,
- n = e.sidx,
- r = e.discontinuityStarts,
- i = {
- attributes:
- (((e = { NAME: t.id, AUDIO: 'audio', SUBTITLES: 'subs', RESOLUTION: { width: t.width, height: t.height }, CODECS: t.codecs, BANDWIDTH: t.bandwidth })['PROGRAM-ID'] = 1), e),
- uri: '',
- endList: 'static' === t.type,
- timeline: t.periodStart,
- resolvedUri: '',
- targetDuration: t.duration,
- discontinuityStarts: r,
- timelineStarts: t.timelineStarts,
- segments: i,
- }
- return t.contentProtection && (i.contentProtection = t.contentProtection), n && (i.sidx = n), i
- }
- function Os(e) {
- return 'video/mp4' === (e = e.attributes).mimeType || 'video/webm' === e.mimeType || 'video' === e.contentType
- }
- function Ms(e) {
- return 'audio/mp4' === (e = e.attributes).mimeType || 'audio/webm' === e.mimeType || 'audio' === e.contentType
- }
- function Rs(e) {
- return 'text/vtt' === (e = e.attributes).mimeType || 'text' === e.contentType
- }
- function Ns(i) {
- return i
- ? Object.keys(i).reduce(function (e, t) {
- t = i[t]
- return e.concat(t.playlists)
- }, [])
- : []
- }
- function Us(e) {
- var t = e.dashPlaylists,
- i = e.locations,
- n = void 0 === (c = e.sidxMapping) ? {} : c,
- r = e.previousManifest
- if (!t.length) return {}
- var a = (d = t[0].attributes).sourceDuration,
- s = d.type,
- o = d.suggestedPresentationDelay,
- u = d.minimumUpdatePeriod,
- l = As(t.filter(Os)).map(Ds),
- c = As(t.filter(Ms)),
- e = As(t.filter(Rs)),
- d = t
- .map(function (e) {
- return e.attributes.captionServices
- })
- .filter(Boolean),
- a = {
- allowCache: !0,
- discontinuityStarts: [],
- segments: [],
- endList: !0,
- mediaGroups: (((t = { AUDIO: {}, VIDEO: {} })['CLOSED-CAPTIONS'] = {}), (t.SUBTITLES = {}), t),
- uri: '',
- duration: a,
- playlists: (function (e, t) {
- if ((void 0 === t && (t = {}), !Object.keys(t).length)) return e
- for (var i in e) e[i] = Ps(e[i], t)
- return e
- })(l, n),
- }
- 0 <= u && (a.minimumUpdatePeriod = 1e3 * u), i && (a.locations = i), 'dynamic' === s && (a.suggestedPresentationDelay = o)
- var h,
- p,
- o = 0 === a.playlists.length,
- o = c.length ? Ls(c, n, o) : null,
- n = e.length
- ? (void 0 === (h = n) && (h = {}),
- e.reduce(function (e, t) {
- var i = t.attributes.lang || 'text'
- return (
- e[i] || (e[i] = { language: i, default: !1, autoselect: !1, playlists: [], uri: '' }),
- e[i].playlists.push(
- Ps(
- (function (e) {
- var t = e.attributes,
- i = e.segments,
- n = e.mediaSequence,
- r = e.discontinuityStarts,
- a = e.discontinuitySequence
- 'undefined' == typeof i &&
- ((i = [{ uri: t.baseUrl, timeline: t.periodStart, resolvedUri: t.baseUrl || '', duration: t.sourceDuration, number: 0 }]), (t.duration = t.sourceDuration))
- ;(e = { NAME: t.id, BANDWIDTH: t.bandwidth })['PROGRAM-ID'] = 1
- return (
- t.codecs && (e.CODECS = t.codecs),
- {
- attributes: e,
- uri: '',
- endList: 'static' === t.type,
- timeline: t.periodStart,
- resolvedUri: t.baseUrl || '',
- targetDuration: t.duration,
- timelineStarts: t.timelineStarts,
- discontinuityStarts: r,
- discontinuitySequence: a,
- mediaSequence: n,
- segments: i,
- }
- )
- })(t),
- h
- )
- ),
- e
- )
- }, {}))
- : null,
- l = (e = l.concat(Ns(o), Ns(n))).map(function (e) {
- return e.timelineStarts
- })
- return (
- (a.timelineStarts = Es(l)),
- (e = e),
- (p = a.timelineStarts),
- e.forEach(function (t) {
- ;(t.mediaSequence = 0),
- (t.discontinuitySequence = vs(p, function (e) {
- return e.timeline === t.timeline
- })),
- t.segments &&
- t.segments.forEach(function (e, t) {
- e.number = t
- })
- }),
- o && (a.mediaGroups.AUDIO.audio = o),
- n && (a.mediaGroups.SUBTITLES.subs = n),
- d.length &&
- (a.mediaGroups['CLOSED-CAPTIONS'].cc = d.reduce(function (n, e) {
- return (
- e &&
- e.forEach(function (e) {
- var t = e.channel,
- i = e.language
- ;(n[i] = { autoselect: !1, default: !1, instreamId: t, language: i }),
- e.hasOwnProperty('aspectRatio') && (n[i].aspectRatio = e.aspectRatio),
- e.hasOwnProperty('easyReader') && (n[i].easyReader = e.easyReader),
- e.hasOwnProperty('3D') && (n[i]['3D'] = e['3D'])
- }),
- n
- )
- }, {})),
- r ? Is({ oldManifest: r, newManifest: a }) : a
- )
- }
- function Bs(e, t) {
- for (
- var i,
- n,
- r,
- a,
- s,
- o,
- u = e.type,
- l = e.minimumUpdatePeriod,
- c = void 0 === l ? 0 : l,
- d = void 0 === (l = e.media) ? '' : l,
- h = e.sourceDuration,
- p = void 0 === (l = e.timescale) ? 1 : l,
- f = void 0 === (l = e.startNumber) ? 1 : l,
- m = e.periodStart,
- g = [],
- y = -1,
- v = 0;
- v < t.length;
- v++
- ) {
- var _ = t[v],
- b = _.d,
- T = _.r || 0,
- S = _.t || 0
- y < 0 && (y = S), S && y < S && (y = S)
- var w,
- E = void 0
- E =
- T < 0
- ? (w = v + 1) === t.length
- ? 'dynamic' === u && 0 < c && 0 < d.indexOf('$Number$')
- ? ((i = y),
- (n = b),
- (_ = o = s = a = r = void 0),
- (r = (S = e).NOW),
- (a = S.clientOffset),
- (s = S.availabilityStartTime),
- (o = S.timescale),
- (_ = S.periodStart),
- (S = S.minimumUpdatePeriod),
- Math.ceil((((r + a) / 1e3 + (void 0 === S ? 0 : S) - (s + (void 0 === _ ? 0 : _))) * (void 0 === o ? 1 : o) - i) / n))
- : (h * p - y) / b
- : (t[w].t - y) / b
- : T + 1
- for (var k = f + g.length + E, C = f + g.length; C < k; ) g.push({ number: C, duration: b / p, time: y, timeline: m }), (y += b), C++
- }
- return g
- }
- function Fs(e, t) {
- return e.replace(
- vo,
- ((r = t),
- function (e, t, i, n) {
- if ('$$' === e) return '$'
- if ('undefined' == typeof r[t]) return e
- e = '' + r[t]
- return 'RepresentationID' === t || (n = i ? parseInt(n, 10) : 1) <= e.length ? e : new Array(n - e.length + 1).join('0') + e
- })
- )
- var r
- }
- function js(r, e) {
- var a = { RepresentationID: r.id, Bandwidth: r.bandwidth || 0 },
- t = void 0 === (t = r.initialization) ? { sourceURL: '', range: '' } : t,
- s = _s({ baseUrl: r.baseUrl, source: Fs(t.sourceURL, a), range: t.range })
- return ((t = e), (e = r).duration || t ? (e.duration ? Ts(e) : Bs(e, t)) : [{ number: e.startNumber || 1, duration: e.sourceDuration, time: 0, timeline: e.periodStart }]).map(function (e) {
- ;(a.Number = e.number), (a.Time = e.time)
- var t = Fs(r.media || '', a),
- i = r.timescale || 1,
- n = r.presentationTimeOffset || 0,
- i = r.periodStart + (e.time - n) / i
- return { uri: t, timeline: e.timeline, duration: e.duration, resolvedUri: ir(r.baseUrl || '', t), map: s, number: e.number, presentationTime: i }
- })
- }
- function Hs(r, e) {
- var t = r.duration,
- i = void 0 === (i = r.segmentUrls) ? [] : i,
- a = r.periodStart
- if ((!t && !e) || (t && e)) throw new Error(fo)
- var n,
- s = i.map(function (e) {
- return (
- (i = e),
- (e = (t = r).baseUrl),
- (t = t.initialization),
- (t = _s({ baseUrl: e, source: (t = void 0 === t ? {} : t).sourceURL, range: t.range })),
- ((i = _s({ baseUrl: e, source: i.media, range: i.mediaRange })).map = t),
- i
- )
- var t, i
- })
- return (
- t && (n = Ts(r)),
- (n = e ? Bs(r, e) : n)
- .map(function (e, t) {
- if (s[t]) {
- var i = s[t],
- n = r.timescale || 1,
- t = r.presentationTimeOffset || 0
- return (i.timeline = e.timeline), (i.duration = e.duration), (i.number = e.number), (i.presentationTime = a + (e.time - t) / n), i
- }
- })
- .filter(function (e) {
- return e
- })
- )
- }
- function qs(e) {
- var t,
- i = e.attributes,
- n = e.segmentInfo
- n.template ? ((a = js), (t = fs(i, n.template))) : n.base ? ((a = Ss), (t = fs(i, n.base))) : n.list && ((a = Hs), (t = fs(i, n.list)))
- var r = { attributes: i }
- if (!a) return r
- var a,
- e = a(t, n.segmentTimeline)
- return (
- t.duration
- ? ((i = t.duration), (a = t.timescale), (t.duration = i / (void 0 === a ? 1 : a)))
- : e.length
- ? (t.duration = e.reduce(function (e, t) {
- return Math.max(e, Math.ceil(t.duration))
- }, 0))
- : (t.duration = 0),
- (r.attributes = t),
- (r.segments = e),
- n.base && t.indexRange && ((r.sidx = e[0]), (r.segments = [])),
- r
- )
- }
- function Vs(e, t) {
- return ys(e.childNodes).filter(function (e) {
- return e.tagName === t
- })
- }
- function Ws(e) {
- return e.textContent.trim()
- }
- function Gs(e) {
- if (!(r = /P(?:(\d*)Y)?(?:(\d*)M)?(?:(\d*)D)?(?:T(?:(\d*)H)?(?:(\d*)M)?(?:([\d.]*)S)?)?/.exec(e))) return 0
- var t = (a = r.slice(1))[0],
- i = a[1],
- n = a[2],
- e = a[3],
- r = a[4],
- a = a[5]
- return 31536e3 * parseFloat(t || 0) + 2592e3 * parseFloat(i || 0) + 86400 * parseFloat(n || 0) + 3600 * parseFloat(e || 0) + 60 * parseFloat(r || 0) + parseFloat(a || 0)
- }
- function zs(e) {
- return e && e.attributes
- ? ys(e.attributes).reduce(function (e, t) {
- var i = _o[t.name] || _o.DEFAULT
- return (e[t.name] = i(t.value)), e
- }, {})
- : {}
- }
- function Xs(e, i) {
- return i.length
- ? gs(
- e.map(function (t) {
- return i.map(function (e) {
- return ir(t, Ws(e))
- })
- })
- )
- : e
- }
- function Ks(e) {
- var t = Vs(e, 'SegmentTemplate')[0],
- i = Vs(e, 'SegmentList')[0],
- n =
- i &&
- Vs(i, 'SegmentURL').map(function (e) {
- return fs({ tag: 'SegmentURL' }, zs(e))
- }),
- r = Vs(e, 'SegmentBase')[0],
- e = (a = i || t) && Vs(a, 'SegmentTimeline')[0],
- a = (a = i || r || t) && Vs(a, 'Initialization')[0]
- ;(t = t && zs(t)) && a ? (t.initialization = a && zs(a)) : t && t.initialization && (t.initialization = { sourceURL: t.initialization })
- var s = { template: t, segmentTimeline: e && Vs(e, 'S').map(zs), list: i && fs(zs(i), { segmentUrls: n, initialization: zs(a) }), base: r && fs(zs(r), { initialization: zs(a) }) }
- return (
- Object.keys(s).forEach(function (e) {
- s[e] || delete s[e]
- }),
- s
- )
- }
- function Ys(u, l, c) {
- return function (e) {
- var t = zs(e),
- i = Xs(l, Vs(e, 'BaseURL')),
- n = Vs(e, 'Role')[0],
- n = { role: zs(n) },
- t = fs(u, t, n),
- n = Vs(e, 'Accessibility')[0],
- n =
- 'urn:scte:dash:cc:cea-608:2015' === (n = zs(n)).schemeIdUri
- ? ('string' != typeof n.value ? [] : n.value.split(';')).map(function (e) {
- var t, i, n
- return /^CC\d=/.test((n = e)) ? ((i = (t = e.split('='))[0]), (n = t[1])) : /^CC\d$/.test(e) && (i = e), { channel: i, language: n }
- })
- : 'urn:scte:dash:cc:cea-708:2015' === n.schemeIdUri
- ? ('string' != typeof n.value ? [] : n.value.split(';')).map(function (e) {
- var t,
- i,
- n = { channel: void 0, language: void 0, aspectRatio: 1, easyReader: 0, '3D': 0 }
- return (
- /=/.test(e)
- ? ((t = (i = e.split('='))[0]),
- (i = void 0 === (i = i[1]) ? '' : i),
- (n.channel = t),
- (n.language = e),
- i.split(',').forEach(function (e) {
- var t = e.split(':'),
- e = t[0],
- t = t[1]
- 'lang' === e ? (n.language = t) : 'er' === e ? (n.easyReader = Number(t)) : 'war' === e ? (n.aspectRatio = Number(t)) : '3D' === e && (n['3D'] = Number(t))
- }))
- : (n.language = e),
- n.channel && (n.channel = 'SERVICE' + n.channel),
- n
- )
- })
- : void 0
- n && (t = fs(t, { captionServices: n }))
- n = Vs(e, 'Label')[0]
- n && n.childNodes.length && ((r = n.childNodes[0].nodeValue.trim()), (t = fs(t, { label: r })))
- var r = Vs(e, 'ContentProtection').reduce(function (e, t) {
- var i = zs(t)
- i.schemeIdUri && (i.schemeIdUri = i.schemeIdUri.toLowerCase())
- var n = bo[i.schemeIdUri]
- return n && ((e[n] = { attributes: i }), (t = Vs(t, 'cenc:pssh')[0]) && ((t = Ws(t)), (e[n].pssh = t && or(t)))), e
- }, {})
- Object.keys(r).length && (t = fs(t, { contentProtection: r }))
- var a,
- s,
- o,
- r = Ks(e),
- e = Vs(e, 'Representation'),
- r = fs(c, r)
- return gs(
- e.map(
- ((a = t),
- (s = i),
- (o = r),
- function (e) {
- var t = Vs(e, 'BaseURL'),
- t = Xs(s, t),
- i = fs(a, zs(e)),
- n = Ks(e)
- return t.map(function (e) {
- return { segmentInfo: fs(o, n), attributes: fs(i, { baseUrl: e }) }
- })
- })
- )
- )
- }
- }
- function Qs(e, t) {
- var i = (t = void 0 === t ? {} : t),
- n = void 0 === (a = i.manifestUri) ? '' : a,
- t = void 0 === (r = i.NOW) ? Date.now() : r,
- r = void 0 === (a = i.clientOffset) ? 0 : a
- if (!(i = Vs(e, 'Period')).length) throw new Error(lo)
- var a = Vs(e, 'Location'),
- s = zs(e),
- e = Xs([n], Vs(e, 'BaseURL'))
- ;(s.type = s.type || 'static'), (s.sourceDuration = s.mediaPresentationDuration || 0), (s.NOW = t), (s.clientOffset = r), a.length && (s.locations = a.map(Ws))
- var o,
- u,
- l = []
- return (
- i.forEach(function (e, t) {
- var i,
- n = zs(e),
- r = l[t - 1]
- ;(n.start =
- ((i = { attributes: n, priorPeriodAttributes: r ? r.attributes : null, mpdType: s.type }),
- (t = i.attributes),
- (r = i.priorPeriodAttributes),
- (i = i.mpdType),
- 'number' == typeof t.start ? t.start : r && 'number' == typeof r.start && 'number' == typeof r.duration ? r.start + r.duration : r || 'static' !== i ? null : 0)),
- l.push({ node: e, attributes: n })
- }),
- {
- locations: s.locations,
- representationInfo: gs(
- l.map(
- ((o = s),
- (u = e),
- function (e, t) {
- var i = Xs(u, Vs(e.node, 'BaseURL')),
- n = fs(o, { periodStart: e.attributes.start })
- 'number' == typeof e.attributes.duration && (n.periodDuration = e.attributes.duration)
- var r = Vs(e.node, 'AdaptationSet'),
- e = Ks(e.node)
- return gs(r.map(Ys(n, i, e)))
- })
- )
- ),
- }
- )
- }
- function $s(e) {
- if ('' === e) throw new Error(co)
- var t,
- i,
- n = new uo()
- try {
- i = (t = n.parseFromString(e, 'application/xml')) && 'MPD' === t.documentElement.tagName ? t.documentElement : null
- } catch (e) {}
- if (!i || (i && 0 < i.getElementsByTagName('parsererror').length)) throw new Error(ho)
- return i
- }
- function Js(e, t) {
- void 0 === t && (t = {})
- var i = Qs($s(e), t),
- e = i.representationInfo.map(qs)
- return Us({ dashPlaylists: e, locations: i.locations, sidxMapping: t.sidxMapping, previousManifest: t.previousManifest })
- }
- function Zs(e) {
- return (function (e) {
- e = Vs(e, 'UTCTiming')[0]
- if (!e) return null
- var t = zs(e)
- switch (t.schemeIdUri) {
- case 'urn:mpeg:dash:utc:http-head:2014':
- case 'urn:mpeg:dash:utc:http-head:2012':
- t.method = 'HEAD'
- break
- case 'urn:mpeg:dash:utc:http-xsdate:2014':
- case 'urn:mpeg:dash:utc:http-iso:2014':
- case 'urn:mpeg:dash:utc:http-xsdate:2012':
- case 'urn:mpeg:dash:utc:http-iso:2012':
- t.method = 'GET'
- break
- case 'urn:mpeg:dash:utc:direct:2014':
- case 'urn:mpeg:dash:utc:direct:2012':
- ;(t.method = 'DIRECT'), (t.value = Date.parse(t.value))
- break
- case 'urn:mpeg:dash:utc:http-ntp:2014':
- case 'urn:mpeg:dash:utc:ntp:2014':
- case 'urn:mpeg:dash:utc:sntp:2014':
- default:
- throw new Error(mo)
- }
- return t
- })($s(e))
- }
- function eo(e, t) {
- return (
- void 0 === t && (t = 0),
- (e = br(e)).length - t < 10 || !wr(e, Eo, { offset: t })
- ? t
- : eo(
- e,
- (t += (function (e, t) {
- void 0 === t && (t = 0)
- var i = (e = br(e))[t + 5],
- t = (e[t + 6] << 21) | (e[t + 7] << 14) | (e[t + 8] << 7) | e[t + 9]
- return (16 & i) >> 4 ? 20 + t : 10 + t
- })(e, t))
- )
- )
- }
- function to(e) {
- return 'string' == typeof e ? Sr(e) : e
- }
- function io(e, t, i) {
- var n
- void 0 === i && (i = !1), (n = t), (t = Array.isArray(n) ? n.map(to) : [to(n)]), (e = br(e))
- var r = []
- if (!t.length) return r
- for (var a = 0; a < e.length; ) {
- var s = ((e[a] << 24) | (e[a + 1] << 16) | (e[a + 2] << 8) | e[a + 3]) >>> 0,
- o = e.subarray(a + 4, a + 8)
- if (0 == s) break
- var u = a + s
- if (u > e.length) {
- if (i) break
- u = e.length
- }
- s = e.subarray(a + 8, u)
- wr(o, t[0]) && (1 === t.length ? r.push(s) : r.push.apply(r, io(s, t.slice(1), i))), (a = u)
- }
- return r
- }
- function no(e, t, i, n) {
- void 0 === i && (i = !0), void 0 === n && (n = !1)
- var r = (function (e) {
- for (var t = 1, i = 0; i < Co.length && !(e & Co[i]); i++) t++
- return t
- })(e[t]),
- a = e.subarray(t, t + r)
- return (
- i && ((a = Array.prototype.slice.call(e, t, t + r))[0] ^= Co[r - 1]),
- {
- length: r,
- value: (function (n, e) {
- var t = void 0 === e ? {} : e,
- e = t.signed,
- e = void 0 !== e && e,
- t = t.le,
- r = void 0 !== t && t
- n = br(n)
- ;(t = r ? 'reduce' : 'reduceRight'),
- (t = (n[t] || Array.prototype[t]).call(
- n,
- function (e, t, i) {
- i = r ? i : Math.abs(i + 1 - n.length)
- return e + Rr(t) * Nr[i]
- },
- Rr(0)
- ))
- return !e || ((e = Nr[n.length] / Rr(2) - Rr(1)) < (t = Rr(t)) && ((t -= e), (t -= e), (t -= Rr(2)))), Number(t)
- })(a, { signed: n }),
- bytes: a,
- }
- )
- }
- function ro(e) {
- return 'string' == typeof e ? e.match(/.{1,2}/g).map(ro) : 'number' == typeof e ? Tr(e) : e
- }
- function ao(e, t, i) {
- if (i >= t.length) return t.length
- var n = no(t, i, !1)
- if (wr(e.bytes, n.bytes)) return i
- var r = no(t, i + n.length)
- return ao(e, t, i + r.length + r.value + n.length)
- }
- function so(e, t) {
- var i
- ;(i = t), (t = Array.isArray(i) ? i.map(ro) : [ro(i)]), (e = br(e))
- var n = []
- if (!t.length) return n
- for (var r = 0; r < e.length; ) {
- var a = no(e, r, !1),
- s = no(e, r + a.length),
- o = r + a.length + s.length
- 127 === s.value && ((s.value = ao(a, e, o)), s.value !== e.length && (s.value -= o))
- var u = o + s.value > e.length ? e.length : o + s.value,
- u = e.subarray(o, u)
- wr(t[0], a.bytes) && (1 === t.length ? n.push(u) : (n = n.concat(so(u, t.slice(1))))), (r += a.length + s.length + u.length)
- }
- return n
- }
- function oo(e, t, i, n) {
- void 0 === n && (n = 1 / 0), (e = br(e)), (i = [].concat(i))
- for (var r, a = 0, s = 0; a < e.length && (s < n || r); ) {
- var o = void 0
- if ((wr(e.subarray(a), Io) ? (o = 4) : wr(e.subarray(a), xo) && (o = 3), o)) {
- if ((s++, r))
- return (function (e) {
- for (var t = [], i = 1; i < e.length - 2; ) wr(e.subarray(i, i + 3), Ao) && (t.push(i + 2), i++), i++
- if (0 === t.length) return e
- for (var n = e.length - t.length, r = new Uint8Array(n), a = 0, i = 0; i < n; a++, i++) a === t[0] && (a++, t.shift()), (r[i] = e[a])
- return r
- })(e.subarray(r, a))
- var u = void 0
- 'h264' === t ? (u = 31 & e[a + o]) : 'h265' === t && (u = (e[a + o] >> 1) & 63), -1 !== i.indexOf(u) && (r = a + o), (a += o + ('h264' === t ? 1 : 2))
- } else a++
- }
- return e.subarray(0, 0)
- }
- var uo = { __DOMHandler: us, DOMParser: os, DOMImplementation: U.DOMImplementation, XMLSerializer: U.XMLSerializer }.DOMParser,
- lo = 'INVALID_NUMBER_OF_PERIOD',
- co = 'DASH_EMPTY_MANIFEST',
- ho = 'DASH_INVALID_XML',
- po = 'NO_BASE_URL',
- fo = 'SEGMENT_TIME_UNSPECIFIED',
- mo = 'UNSUPPORTED_UTC_TIMING_SCHEME',
- go = {
- static: function (e) {
- var t = e.duration,
- i = e.timescale,
- n = void 0 === i ? 1 : i,
- r = e.sourceDuration,
- i = e.periodDuration,
- e = bs(e.endNumber),
- n = t / n
- return 'number' == typeof e ? { start: 0, end: e } : 'number' == typeof i ? { start: 0, end: i / n } : { start: 0, end: r / n }
- },
- dynamic: function (e) {
- var t = e.NOW,
- i = e.clientOffset,
- n = e.availabilityStartTime,
- r = e.timescale,
- a = void 0 === r ? 1 : r,
- s = e.duration,
- o = e.periodStart,
- u = void 0 === o ? 0 : o,
- r = e.minimumUpdatePeriod,
- o = void 0 === r ? 0 : r,
- r = e.timeShiftBufferDepth,
- r = void 0 === r ? 1 / 0 : r,
- e = bs(e.endNumber),
- i = (t + i) / 1e3,
- u = n + u,
- o = Math.ceil(((i + o - u) * a) / s),
- r = Math.floor(((i - u - r) * a) / s),
- s = Math.floor(((i - u) * a) / s)
- return { start: Math.max(0, r), end: 'number' == typeof e ? e : Math.min(o, s) }
- },
- },
- yo = ['AUDIO', 'SUBTITLES'],
- vo = /\$([A-z]*)(?:(%0)([0-9]+)d)?\$/g,
- _o = {
- mediaPresentationDuration: Gs,
- availabilityStartTime: function (e) {
- return /^\d+-\d+-\d+T\d+:\d+:\d+(\.\d+)?$/.test((e = e)) && (e += 'Z'), Date.parse(e) / 1e3
- },
- minimumUpdatePeriod: Gs,
- suggestedPresentationDelay: Gs,
- type: function (e) {
- return e
- },
- timeShiftBufferDepth: Gs,
- start: Gs,
- width: function (e) {
- return parseInt(e, 10)
- },
- height: function (e) {
- return parseInt(e, 10)
- },
- bandwidth: function (e) {
- return parseInt(e, 10)
- },
- startNumber: function (e) {
- return parseInt(e, 10)
- },
- timescale: function (e) {
- return parseInt(e, 10)
- },
- presentationTimeOffset: function (e) {
- return parseInt(e, 10)
- },
- duration: function (e) {
- var t = parseInt(e, 10)
- return isNaN(t) ? Gs(e) : t
- },
- d: function (e) {
- return parseInt(e, 10)
- },
- t: function (e) {
- return parseInt(e, 10)
- },
- r: function (e) {
- return parseInt(e, 10)
- },
- DEFAULT: function (e) {
- return e
- },
- },
- bo = {
- 'urn:uuid:1077efec-c0b2-4d02-ace3-3c1e52e2fb4b': 'org.w3.clearkey',
- 'urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed': 'com.widevine.alpha',
- 'urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95': 'com.microsoft.playready',
- 'urn:uuid:f239e769-efa3-4850-9c16-a903c6932efb': 'com.adobe.primetime',
- },
- To = Math.pow(2, 32),
- So = function (e) {
- var t = new DataView(e.buffer, e.byteOffset, e.byteLength)
- return t.getBigUint64 ? ((e = t.getBigUint64(0)) < Number.MAX_SAFE_INTEGER ? Number(e) : e) : t.getUint32(0) * To + t.getUint32(4)
- },
- wo = function (e) {
- var t = new DataView(e.buffer, e.byteOffset, e.byteLength),
- i = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), references: [], referenceId: t.getUint32(4), timescale: t.getUint32(8) },
- n = 12
- 0 === i.version
- ? ((i.earliestPresentationTime = t.getUint32(n)), (i.firstOffset = t.getUint32(n + 4)), (n += 8))
- : ((i.earliestPresentationTime = So(e.subarray(n))), (i.firstOffset = So(e.subarray(n + 8))), (n += 16))
- var r = t.getUint16((n += 2))
- for (n += 2; 0 < r; n += 12, r--)
- i.references.push({
- referenceType: (128 & e[n]) >>> 7,
- referencedSize: 2147483647 & t.getUint32(n),
- subsegmentDuration: t.getUint32(n + 4),
- startsWithSap: !!(128 & e[n + 8]),
- sapType: (112 & e[n + 8]) >>> 4,
- sapDeltaTime: 268435455 & t.getUint32(n + 8),
- })
- return i
- },
- Eo = br([73, 68, 51]),
- ko = {
- EBML: br([26, 69, 223, 163]),
- DocType: br([66, 130]),
- Segment: br([24, 83, 128, 103]),
- SegmentInfo: br([21, 73, 169, 102]),
- Tracks: br([22, 84, 174, 107]),
- Track: br([174]),
- TrackNumber: br([215]),
- DefaultDuration: br([35, 227, 131]),
- TrackEntry: br([174]),
- TrackType: br([131]),
- FlagDefault: br([136]),
- CodecID: br([134]),
- CodecPrivate: br([99, 162]),
- VideoTrack: br([224]),
- AudioTrack: br([225]),
- Cluster: br([31, 67, 182, 117]),
- Timestamp: br([231]),
- TimestampScale: br([42, 215, 177]),
- BlockGroup: br([160]),
- BlockDuration: br([155]),
- Block: br([161]),
- SimpleBlock: br([163]),
- },
- Co = [128, 64, 32, 16, 8, 4, 2, 1],
- Io = br([0, 0, 0, 1]),
- xo = br([0, 0, 1]),
- Ao = br([0, 0, 3]),
- Po = {
- webm: br([119, 101, 98, 109]),
- matroska: br([109, 97, 116, 114, 111, 115, 107, 97]),
- flac: br([102, 76, 97, 67]),
- ogg: br([79, 103, 103, 83]),
- ac3: br([11, 119]),
- riff: br([82, 73, 70, 70]),
- avi: br([65, 86, 73]),
- wav: br([87, 65, 86, 69]),
- '3gp': br([102, 116, 121, 112, 51, 103]),
- mp4: br([102, 116, 121, 112]),
- fmp4: br([115, 116, 121, 112]),
- mov: br([102, 116, 121, 112, 113, 116]),
- moov: br([109, 111, 111, 118]),
- moof: br([109, 111, 111, 102]),
- },
- Lo = {
- aac: function (e) {
- var t = eo(e)
- return wr(e, [255, 16], { offset: t, mask: [255, 22] })
- },
- mp3: function (e) {
- var t = eo(e)
- return wr(e, [255, 2], { offset: t, mask: [255, 6] })
- },
- webm: function (e) {
- e = so(e, [ko.EBML, ko.DocType])[0]
- return wr(e, Po.webm)
- },
- mkv: function (e) {
- e = so(e, [ko.EBML, ko.DocType])[0]
- return wr(e, Po.matroska)
- },
- mp4: function (e) {
- return (
- !Lo['3gp'](e) && !Lo.mov(e) && (!(!wr(e, Po.mp4, { offset: 4 }) && !wr(e, Po.fmp4, { offset: 4 })) || !(!wr(e, Po.moof, { offset: 4 }) && !wr(e, Po.moov, { offset: 4 })) || void 0)
- )
- },
- mov: function (e) {
- return wr(e, Po.mov, { offset: 4 })
- },
- '3gp': function (e) {
- return wr(e, Po['3gp'], { offset: 4 })
- },
- ac3: function (e) {
- var t = eo(e)
- return wr(e, Po.ac3, { offset: t })
- },
- ts: function (e) {
- if (e.length < 189 && 1 <= e.length) return 71 === e[0]
- for (var t = 0; t + 188 < e.length && t < 188; ) {
- if (71 === e[t] && 71 === e[t + 188]) return !0
- t += 1
- }
- return !1
- },
- flac: function (e) {
- var t = eo(e)
- return wr(e, Po.flac, { offset: t })
- },
- ogg: function (e) {
- return wr(e, Po.ogg)
- },
- avi: function (e) {
- return wr(e, Po.riff) && wr(e, Po.avi, { offset: 8 })
- },
- wav: function (e) {
- return wr(e, Po.riff) && wr(e, Po.wav, { offset: 8 })
- },
- h264: function (e) {
- return oo(e, 'h264', 7, 3).length
- },
- h265: function (e) {
- return oo(e, 'h265', [32, 33], 3).length
- },
- },
- Do = Object.keys(Lo)
- .filter(function (e) {
- return 'ts' !== e && 'h264' !== e && 'h265' !== e
- })
- .concat(['ts', 'h264', 'h265'])
- Do.forEach(function (e) {
- var t = Lo[e]
- Lo[e] = function (e) {
- return t(br(e))
- }
- })
- function Oo(e) {
- e = br(e)
- for (var t = 0; t < Do.length; t++) {
- var i = Do[t]
- if (dl[i](e)) return i
- }
- return ''
- }
- function Mo(e, t, i) {
- return e && i && i.responseURL && t !== i.responseURL ? i.responseURL : t
- }
- function Ro(e) {
- return tr.log.debug ? tr.log.debug.bind(tr, 'VHS:', e + ' >') : function () {}
- }
- function No(e, t) {
- var i,
- n = []
- if (e && e.length) for (i = 0; i < e.length; i++) t(e.start(i), e.end(i)) && n.push([e.start(i), e.end(i)])
- return tr.createTimeRanges(n)
- }
- function Uo(e, i) {
- return No(e, function (e, t) {
- return e - 0.1 <= i && i <= t + 0.1
- })
- }
- function Bo(e, t) {
- return No(e, function (e) {
- return t <= e - fl
- })
- }
- function Fo(e) {
- var t = []
- if (!e || !e.length) return ''
- for (var i = 0; i < e.length; i++) t.push(e.start(i) + ' => ' + e.end(i))
- return t.join(', ')
- }
- function jo(e) {
- for (var t = [], i = 0; i < e.length; i++) t.push({ start: e.start(i), end: e.end(i) })
- return t
- }
- function Ho(e) {
- if (e && e.length && e.end) return e.end(e.length - 1)
- }
- function qo(e, t) {
- var i = 0
- if (!e || !e.length) return i
- for (var n = 0; n < e.length; n++) {
- var r = e.start(n),
- a = e.end(n)
- a < t || (i += r < t && t <= a ? a - t : a - r)
- }
- return i
- }
- function Vo(t, e) {
- if (!e.preload) return e.duration
- var i = 0
- return (
- (e.parts || []).forEach(function (e) {
- i += e.duration
- }),
- (e.preloadHints || []).forEach(function (e) {
- 'PART' === e.type && (i += t.partTargetDuration)
- }),
- i
- )
- }
- function Wo(e) {
- return (e.segments || []).reduce(function (i, n, r) {
- return (
- n.parts
- ? n.parts.forEach(function (e, t) {
- i.push({ duration: e.duration, segmentIndex: r, partIndex: t, part: e, segment: n })
- })
- : i.push({ duration: n.duration, segmentIndex: r, partIndex: null, segment: n, part: null }),
- i
- )
- }, [])
- }
- function Go(e) {
- return ((e = e.segments && e.segments.length && e.segments[e.segments.length - 1]) && e.parts) || []
- }
- function zo(e) {
- var t = e.preloadSegment
- if (t) {
- ;(e = t.parts),
- (t = (t.preloadHints || []).reduce(function (e, t) {
- return e + ('PART' === t.type ? 1 : 0)
- }, 0))
- return (t += e && e.length ? e.length : 0)
- }
- }
- function Xo(e, t) {
- return t.endList
- ? 0
- : e && e.suggestedPresentationDelay
- ? e.suggestedPresentationDelay
- : (e = 0 < Go(t).length) && t.serverControl && t.serverControl.partHoldBack
- ? t.serverControl.partHoldBack
- : e && t.partTargetDuration
- ? 3 * t.partTargetDuration
- : t.serverControl && t.serverControl.holdBack
- ? t.serverControl.holdBack
- : t.targetDuration
- ? 3 * t.targetDuration
- : 0
- }
- function Ko(e, t, i) {
- if ((t = 'undefined' == typeof t ? e.mediaSequence + e.segments.length : t) < e.mediaSequence) return 0
- var n = (function (e, t) {
- var i = 0,
- n = t - e.mediaSequence,
- r = e.segments[n]
- if (r) {
- if ('undefined' != typeof r.start) return { result: r.start, precise: !0 }
- if ('undefined' != typeof r.end) return { result: r.end - r.duration, precise: !0 }
- }
- for (; n--; ) {
- if ('undefined' != typeof (r = e.segments[n]).end) return { result: i + r.end, precise: !0 }
- if (((i += Vo(e, r)), 'undefined' != typeof r.start)) return { result: i + r.start, precise: !0 }
- }
- return { result: i, precise: !1 }
- })(e, t)
- return n.precise
- ? n.result
- : (t = (function (e, t) {
- for (var i, n = 0, r = t - e.mediaSequence; r < e.segments.length; r++) {
- if ('undefined' != typeof (i = e.segments[r]).start) return { result: i.start - n, precise: !0 }
- if (((n += Vo(e, i)), 'undefined' != typeof i.end)) return { result: i.end - n, precise: !0 }
- }
- return { result: -1, precise: !1 }
- })(e, t)).precise
- ? t.result
- : n.result + i
- }
- function Yo(e, t, i) {
- if (!e) return 0
- if (('number' != typeof i && (i = 0), 'undefined' == typeof t)) {
- if (e.totalDuration) return e.totalDuration
- if (!e.endList) return window.Infinity
- }
- return Ko(e, t, i)
- }
- function Qo(e) {
- var t = e.defaultDuration,
- i = e.durationList,
- n = e.startIndex,
- r = e.endIndex,
- a = 0
- if ((r < n && ((n = (e = [r, n])[0]), (r = e[1])), n < 0)) {
- for (var s = n; s < Math.min(0, r); s++) a += t
- n = 0
- }
- for (var o = n; o < r; o++) a += i[o].duration
- return a
- }
- function $o(e, t, i, n) {
- return e && e.segments
- ? e.endList
- ? Yo(e)
- : null === t
- ? null
- : ((t = Ko(e, e.mediaSequence + e.segments.length, (t = t || 0))), i && (t -= n = 'number' == typeof n ? n : Xo(null, e)), Math.max(0, t))
- : null
- }
- function Jo(e) {
- return e.excludeUntil && e.excludeUntil > Date.now()
- }
- function Zo(e) {
- return e.excludeUntil && e.excludeUntil === 1 / 0
- }
- function eu(e) {
- var t = Jo(e)
- return !e.disabled && !t
- }
- function tu(e, t) {
- return t.attributes && t.attributes[e]
- }
- function iu(e, t) {
- if (1 === e.playlists.length) return !0
- var i = t.attributes.BANDWIDTH || Number.MAX_VALUE
- return (
- 0 ===
- e.playlists.filter(function (e) {
- return !!eu(e) && (e.attributes.BANDWIDTH || 0) < i
- }).length
- )
- }
- function nu(e, t) {
- return (
- !((!e && !t) || (!e && t) || (e && !t)) &&
- (e === t || !(!e.id || !t.id || e.id !== t.id) || !(!e.resolvedUri || !t.resolvedUri || e.resolvedUri !== t.resolvedUri) || !(!e.uri || !t.uri || e.uri !== t.uri))
- )
- }
- function ru(e, t) {
- var i,
- n = (e && e.mediaGroups && e.mediaGroups.AUDIO) || {},
- r = !1
- for (i in n) {
- for (var a in n[i]) if ((r = t(n[i][a]))) break
- if (r) break
- }
- return !!r
- }
- function au(i) {
- if (!i || !i.playlists || !i.playlists.length)
- return ru(i, function (e) {
- return (e.playlists && e.playlists.length) || e.uri
- })
- for (var e = 0; e < i.playlists.length; e++) {
- var t = (function (e) {
- var t = i.playlists[e],
- e = t.attributes && t.attributes.CODECS
- return (e && e.split(',').every(fr)) ||
- ru(i, function (e) {
- return nu(t, e)
- })
- ? 'continue'
- : { v: !1 }
- })(e)
- if ('continue' !== t && 'object' == typeof t) return t.v
- }
- return !0
- }
- function su(e, t) {
- return e + '-' + t
- }
- function ou(r, a) {
- r.mediaGroups &&
- ['AUDIO', 'SUBTITLES'].forEach(function (e) {
- if (r.mediaGroups[e])
- for (var t in r.mediaGroups[e])
- for (var i in r.mediaGroups[e][t]) {
- var n = r.mediaGroups[e][t][i]
- a(n, e, t, i)
- }
- })
- }
- function uu(e) {
- var t = e.playlist,
- i = e.uri,
- e = e.id
- ;(t.id = e), (t.playlistErrors_ = 0), i && (t.uri = i), (t.attributes = t.attributes || {})
- }
- function lu(o, e) {
- o.uri = e
- for (var t = 0; t < o.playlists.length; t++) o.playlists[t].uri || (o.playlists[t].uri = 'placeholder-uri-' + t)
- var i,
- u = au(o)
- ou(o, function (e, t, i, n) {
- var r = 'placeholder-uri-' + t + '-' + i + '-' + n
- if (!e.playlists || !e.playlists.length) {
- if (u && 'AUDIO' === t && !e.uri)
- for (var a = 0; a < o.playlists.length; a++) {
- var s = o.playlists[a]
- if (s.attributes && s.attributes.AUDIO && s.attributes.AUDIO === i) return
- }
- e.playlists = [g({}, e)]
- }
- e.playlists.forEach(function (e, t) {
- var i = su(t, r)
- e.uri ? (e.resolvedUri = e.resolvedUri || pl(o.uri, e.uri)) : ((e.uri = 0 === t ? r : i), (e.resolvedUri = e.uri)),
- (e.id = e.id || i),
- (e.attributes = e.attributes || {}),
- (o.playlists[e.id] = e),
- (o.playlists[e.uri] = e)
- })
- }),
- (function (e) {
- for (var t = e.playlists.length; t--; ) {
- var i = e.playlists[t]
- uu({ playlist: i, id: su(t, i.uri) }),
- (i.resolvedUri = pl(e.uri, i.uri)),
- (e.playlists[i.id] = i),
- (e.playlists[i.uri] = i).attributes.BANDWIDTH || yl.warn('Invalid playlist STREAM-INF detected. Missing BANDWIDTH attribute.')
- }
- })(o),
- ou((i = o), function (e) {
- e.uri && (e.resolvedUri = pl(i.uri, e.uri))
- })
- }
- function cu(e, t, i) {
- var n = e.slice(),
- r = t.slice()
- i = i || 0
- for (var a, s = [], o = 0; o < r.length; o++) {
- var u = n[o + i],
- l = r[o]
- u
- ? ((a = u.map || a),
- s.push(
- (function (e, t) {
- if (!e) return t
- var i = vl(e, t)
- if ((e.preloadHints && !t.preloadHints && delete i.preloadHints, e.parts && !t.parts)) delete i.parts
- else if (e.parts && t.parts) for (var n = 0; n < t.parts.length; n++) e.parts && e.parts[n] && (i.parts[n] = vl(e.parts[n], t.parts[n]))
- return !e.skipped && t.skipped && (i.skipped = !1), e.preload && !t.preload && (i.preload = !1), i
- })(u, l)
- ))
- : (a && !l.map && (l.map = a), s.push(l))
- }
- return s
- }
- function du(e, t) {
- !e.resolvedUri && e.uri && (e.resolvedUri = pl(t, e.uri)),
- e.key && !e.key.resolvedUri && (e.key.resolvedUri = pl(t, e.key.uri)),
- e.map && !e.map.resolvedUri && (e.map.resolvedUri = pl(t, e.map.uri)),
- e.map && e.map.key && !e.map.key.resolvedUri && (e.map.key.resolvedUri = pl(t, e.map.key.uri)),
- e.parts &&
- e.parts.length &&
- e.parts.forEach(function (e) {
- e.resolvedUri || (e.resolvedUri = pl(t, e.uri))
- }),
- e.preloadHints &&
- e.preloadHints.length &&
- e.preloadHints.forEach(function (e) {
- e.resolvedUri || (e.resolvedUri = pl(t, e.uri))
- })
- }
- function hu(e) {
- var t = e.segments || [],
- i = e.preloadSegment
- if (i && i.parts && i.parts.length) {
- if (i.preloadHints) for (var n = 0; n < i.preloadHints.length; n++) if ('MAP' === i.preloadHints[n].type) return t
- ;(i.duration = e.targetDuration), (i.preload = !0), t.push(i)
- }
- return t
- }
- function pu(e, t) {
- return (
- e === t || (e.segments && t.segments && e.segments.length === t.segments.length && e.endList === t.endList && e.mediaSequence === t.mediaSequence && e.preloadSegment === t.preloadSegment)
- )
- }
- function fu(e, a, t) {
- void 0 === t && (t = pu)
- var i = vl(e, {}),
- n = i.playlists[a.id]
- if (!n) return null
- if (t(n, a)) return null
- a.segments = hu(a)
- var s = vl(n, a)
- if ((s.preloadSegment && !a.preloadSegment && delete s.preloadSegment, n.segments)) {
- if (a.skip) {
- a.segments = a.segments || []
- for (var r = 0; r < a.skip.skippedSegments; r++) a.segments.unshift({ skipped: !0 })
- }
- s.segments = cu(n.segments, a.segments, a.mediaSequence - n.mediaSequence)
- }
- s.segments.forEach(function (e) {
- du(e, s.resolvedUri)
- })
- for (var o = 0; o < i.playlists.length; o++) i.playlists[o].id === a.id && (i.playlists[o] = s)
- return (
- (i.playlists[a.id] = s),
- (i.playlists[a.uri] = s),
- ou(e, function (e, t, i, n) {
- if (e.playlists) for (var r = 0; r < e.playlists.length; r++) a.id === e.playlists[r].id && (e.playlists[r] = s)
- }),
- i
- )
- }
- function mu(e, t) {
- var i = e.segments || [],
- n = i[i.length - 1],
- n = ((i = n && n.parts && n.parts[n.parts.length - 1]) && i.duration) || (n && n.duration)
- return t && n ? 1e3 * n : 500 * (e.partTargetDuration || e.targetDuration || 10)
- }
- function gu(e, t, i, n) {
- var r = 'arraybuffer' === e.responseType ? e.response : e.responseText
- !t &&
- r &&
- ((e.responseTime = Date.now()),
- (e.roundTripTime = e.responseTime - e.requestTime),
- (e.bytesReceived = r.byteLength || r.length),
- e.bandwidth || (e.bandwidth = Math.floor((e.bytesReceived / e.roundTripTime) * 8 * 1e3))),
- i.headers && (e.responseHeaders = i.headers),
- t && 'ETIMEDOUT' === t.code && (e.timedout = !0),
- n((t = !t && !e.aborted && 200 !== i.statusCode && 206 !== i.statusCode && 0 !== i.statusCode ? new Error('XHR Failed with a response of: ' + (e && (r || e.responseText))) : t), e)
- }
- function yu() {
- function a(e, i) {
- e = Tl({ timeout: 45e3 }, e)
- var t = a.beforeRequest || tr.Vhs.xhr.beforeRequest
- !t || 'function' != typeof t || ((t = t(e)) && (e = t))
- var n = (!0 === tr.Vhs.xhr.original ? bl : tr.Vhs.xhr)(e, function (e, t) {
- return gu(n, e, t, i)
- }),
- r = n.abort
- return (
- (n.abort = function () {
- return (n.aborted = !0), r.apply(n, arguments)
- }),
- (n.uri = e.uri),
- (n.requestTime = Date.now()),
- n
- )
- }
- return (a.original = !0), a
- }
- function vu(e) {
- var t,
- i = {}
- return (
- e.byterange &&
- (i.Range =
- ((t = e.byterange),
- (e = t.offset),
- (t = 'bigint' == typeof t.offset || 'bigint' == typeof t.length ? window.BigInt(t.offset) + window.BigInt(t.length) - window.BigInt(1) : t.offset + t.length - 1),
- 'bytes=' + e + '-' + t)),
- i
- )
- }
- function _u(e, t) {
- return (e = e.toString(16)), '00'.substring(0, 2 - e.length) + e + (t % 2 ? ' ' : '')
- }
- function bu(e) {
- return 32 <= e && e < 126 ? String.fromCharCode(e) : '.'
- }
- function Tu(i) {
- var n = {}
- return (
- Object.keys(i).forEach(function (e) {
- var t = i[e]
- _r(t) ? (n[e] = { bytes: t.buffer, byteOffset: t.byteOffset, byteLength: t.byteLength }) : (n[e] = t)
- }),
- n
- )
- }
- function Su(e) {
- var t = e.byterange || { length: 1 / 0, offset: 0 }
- return [t.length, t.offset, e.resolvedUri].join(',')
- }
- function wu(e) {
- return e.resolvedUri
- }
- function Eu(e) {
- for (var t = Array.prototype.slice.call(e), i = '', n = 0; n < t.length / 16; n++)
- i +=
- t
- .slice(16 * n, 16 * n + 16)
- .map(_u)
- .join('') +
- ' ' +
- t
- .slice(16 * n, 16 * n + 16)
- .map(bu)
- .join('') +
- '\n'
- return i
- }
- function ku(e) {
- var t = e.playlist,
- i = e.time,
- n = void 0 === i ? void 0 : i
- if (!(i = e.callback)) throw new Error('getProgramTime: callback must be provided')
- return t && void 0 !== n
- ? (e = (function (e, t) {
- if (!t || !t.segments || 0 === t.segments.length) return null
- for (var i, n = 0, r = 0; r < t.segments.length && !(e <= (n = (i = t.segments[r]).videoTimingInfo ? i.videoTimingInfo.transmuxedPresentationEnd : n + i.duration)); r++);
- var a = t.segments[t.segments.length - 1]
- if (a.videoTimingInfo && a.videoTimingInfo.transmuxedPresentationEnd < e) return null
- if (n < e) {
- if (e > n + 0.25 * a.duration) return null
- i = a
- }
- return { segment: i, estimatedStart: i.videoTimingInfo ? i.videoTimingInfo.transmuxedPresentationStart : n - i.duration, type: i.videoTimingInfo ? 'accurate' : 'estimate' }
- })(n, t))
- ? 'estimate' === e.type
- ? i({ message: 'Accurate programTime could not be determined. Please seek to e.seekTime and try again', seekTime: e.estimatedStart })
- : ((t = { mediaSeconds: n }),
- (e = (function (e, t) {
- if (!t.dateTimeObject) return null
- var i = t.videoTimingInfo.transmuxerPrependedSeconds,
- i = e - (t.videoTimingInfo.transmuxedPresentationStart + i)
- return new Date(t.dateTimeObject.getTime() + 1e3 * i)
- })(n, e.segment)) && (t.programDateTime = e.toISOString()),
- i(null, t))
- : i({ message: 'valid programTime was not found' })
- : i({ message: 'getProgramTime: playlist and time must be provided' })
- }
- function Cu(e) {
- var t = e.programTime,
- i = e.playlist,
- n = e.retryCount,
- r = void 0 === n ? 2 : n,
- a = e.seekTo,
- s = e.pauseAfterSeek,
- o = void 0 === s || s,
- u = e.tech,
- l = e.callback
- if (!l) throw new Error('seekToProgramTime: callback must be provided')
- return 'undefined' != typeof t && i && a
- ? i.endList || u.hasStarted_
- ? (function (e) {
- if (!e.segments || 0 === e.segments.length) return !1
- for (var t = 0; t < e.segments.length; t++) if (!e.segments[t].dateTimeObject) return !1
- return !0
- })(i)
- ? (n = (function (e, t) {
- var i
- try {
- i = new Date(e)
- } catch (e) {
- return null
- }
- if (!t || !t.segments || 0 === t.segments.length) return null
- if (i < (r = t.segments[0]).dateTimeObject) return null
- for (var n = 0; n < t.segments.length - 1; n++) {
- var r = t.segments[n]
- if (i < t.segments[n + 1].dateTimeObject) break
- }
- var a,
- s = t.segments[t.segments.length - 1],
- e = s.dateTimeObject,
- a = s.videoTimingInfo ? (a = s.videoTimingInfo).transmuxedPresentationEnd - a.transmuxedPresentationStart - a.transmuxerPrependedSeconds : s.duration + 0.25 * s.duration
- return new Date(e.getTime() + 1e3 * a) < i
- ? null
- : {
- segment: (r = e < i ? s : r),
- estimatedStart: r.videoTimingInfo ? r.videoTimingInfo.transmuxedPresentationStart : gl.duration(t, t.mediaSequence + t.segments.indexOf(r)),
- type: r.videoTimingInfo ? 'accurate' : 'estimate',
- }
- })(t, i))
- ? ((s = n.segment),
- (e = (function (e, t) {
- var i
- try {
- ;(n = new Date(e)), (i = new Date(t))
- } catch (e) {}
- var n = n.getTime()
- return (i.getTime() - n) / 1e3
- })(s.dateTimeObject, t)),
- 'estimate' === n.type
- ? 0 === r
- ? l({ message: t + ' is not buffered yet. Try again' })
- : (a(n.estimatedStart + e),
- void u.one('seeked', function () {
- Cu({ programTime: t, playlist: i, retryCount: r - 1, seekTo: a, pauseAfterSeek: o, tech: u, callback: l })
- }))
- : ((e = s.start + e),
- u.one('seeked', function () {
- return l(null, u.currentTime())
- }),
- o && u.pause(),
- void a(e)))
- : l({ message: t + ' was not found in the stream' })
- : l({ message: 'programDateTime tags must be provided in the manifest ' + i.resolvedUri })
- : l({ message: 'player must be playing a live stream to start buffering' })
- : l({ message: 'seekToProgramTime: programTime, seekTo and playlist must be provided' })
- }
- function Iu(e, t) {
- if (4 === e.readyState) return t()
- }
- function xu(e, t, r) {
- function n(e, t, i, n) {
- return t.abort(), (o = !0), r(e, t, i, n)
- }
- function i(e, t) {
- if (!o) {
- if (e) return n(e, t, '', s)
- var i = t.responseText.substring((s && s.byteLength) || 0, t.responseText.length)
- if (
- ((s = (function () {
- for (var e = arguments.length, t = new Array(e), i = 0; i < e; i++) t[i] = arguments[i]
- if (
- (t = t.filter(function (e) {
- return e && (e.byteLength || e.length) && 'string' != typeof e
- })).length <= 1
- )
- return br(t[0])
- var n = t.reduce(function (e, t, i) {
- return e + (t.byteLength || t.length)
- }, 0),
- r = new Uint8Array(n),
- a = 0
- return (
- t.forEach(function (e) {
- ;(e = br(e)), r.set(e, a), (a += e.byteLength)
- }),
- r
- )
- })(s, Sr(i, !0))),
- (a = a || eo(s)),
- s.length < 10 || (a && s.length < a + 2))
- )
- return Iu(t, function () {
- return n(e, t, '', s)
- })
- i = Oo(s)
- return ('ts' === i && s.length < 188) || (!i && s.length < 376)
- ? Iu(t, function () {
- return n(e, t, '', s)
- })
- : n(null, t, i, s)
- }
- }
- var a,
- s = [],
- o = !1,
- u = t(
- {
- uri: e,
- beforeSend: function (t) {
- t.overrideMimeType('text/plain; charset=x-user-defined'),
- t.addEventListener('progress', function (e) {
- return e.total, e.loaded, gu(t, null, { statusCode: t.status }, i)
- })
- },
- },
- function (e, t) {
- return gu(u, e, t, i)
- }
- )
- return u
- }
- function Au(e, t) {
- if (!pu(e, t)) return !1
- if (e.sidx && t.sidx && (e.sidx.offset !== t.sidx.offset || e.sidx.length !== t.sidx.length)) return !1
- if ((!e.sidx && t.sidx) || (e.sidx && !t.sidx)) return !1
- if ((e.segments && !t.segments) || (!e.segments && t.segments)) return !1
- if (!e.segments && !t.segments) return !0
- for (var i = 0; i < e.segments.length; i++) {
- var n = e.segments[i],
- r = t.segments[i]
- if (n.uri !== r.uri) return !1
- if (n.byterange || r.byterange) {
- ;(n = n.byterange), (r = r.byterange)
- if ((n && !r) || (!n && r)) return !1
- if (n.offset !== r.offset || n.length !== r.length) return !1
- }
- }
- return !0
- }
- function Pu(e, t) {
- var i,
- n = {}
- for (i in e) {
- var r = e[i].sidx
- if (r) {
- var a = xs(r)
- if (!t[a]) break
- var s = t[a].sidxInfo
- ;(s = s),
- (r = r),
- (Boolean(!s.map && !r.map) || Boolean(s.map && r.map && s.map.byterange.offset === r.map.byterange.offset && s.map.byterange.length === r.map.byterange.length)) &&
- s.uri === r.uri &&
- s.byterange.offset === r.byterange.offset &&
- s.byterange.length === r.byterange.length &&
- (n[a] = t[a])
- }
- }
- return n
- }
- function Lu(e) {
- return (e.on = e.addEventListener), (e.off = e.removeEventListener), e
- }
- function Du(i) {
- var n = i.transmuxer,
- e = i.bytes,
- t = i.audioAppendStart,
- r = i.gopsToAlignWith,
- a = i.remux,
- s = i.onData,
- o = i.onTrackInfo,
- u = i.onAudioTimingInfo,
- l = i.onVideoTimingInfo,
- c = i.onVideoSegmentTimingInfo,
- d = i.onAudioSegmentTimingInfo,
- h = i.onId3,
- p = i.onCaptions,
- f = i.onDone,
- m = i.onEndedTimeline,
- g = i.onTransmuxerLog,
- y = i.isEndOfTimeline,
- v = { buffer: [] },
- _ = y
- ;(n.onmessage = function (e) {
- var t
- n.currentTransmux === i &&
- ('data' === e.data.action &&
- (function (e, t, i) {
- var n = e.data.segment,
- r = n.type,
- a = n.initSegment,
- s = n.captions,
- o = n.captionStreams,
- u = n.metadata,
- l = n.videoFrameDtsTime,
- n = n.videoFramePtsTime
- t.buffer.push({ captions: s, captionStreams: o, metadata: u })
- ;(e = e.data.segment.boxes || { data: e.data.segment.data }),
- (a = { type: r, data: new Uint8Array(e.data, e.data.byteOffset, e.data.byteLength), initSegment: new Uint8Array(a.data, a.byteOffset, a.byteLength) })
- 'undefined' != typeof l && (a.videoFrameDtsTime = l), 'undefined' != typeof n && (a.videoFramePtsTime = n), i(a)
- })(e, v, s),
- 'trackinfo' === e.data.action && o(e.data.trackInfo),
- 'gopInfo' === e.data.action && (v.gopInfo = e.data.gopInfo),
- 'audioTimingInfo' === e.data.action && u(e.data.audioTimingInfo),
- 'videoTimingInfo' === e.data.action && l(e.data.videoTimingInfo),
- 'videoSegmentTimingInfo' === e.data.action && c(e.data.videoSegmentTimingInfo),
- 'audioSegmentTimingInfo' === e.data.action && d(e.data.audioSegmentTimingInfo),
- 'id3Frame' === e.data.action && h([e.data.id3Frame], e.data.id3Frame.dispatchType),
- 'caption' === e.data.action && p(e.data.caption),
- 'endedtimeline' === e.data.action && ((_ = !1), m()),
- 'log' === e.data.action && g(e.data.log),
- 'transmuxed' === e.data.type && (_ || ((n.onmessage = null), (e = (t = { transmuxedData: v, callback: f }).transmuxedData), (t = t.callback), (e.buffer = []), t(e), Cl(n))))
- }),
- t && n.postMessage({ action: 'setAudioAppendStart', appendStart: t }),
- Array.isArray(r) && n.postMessage({ action: 'alignGopsWith', gopsToAlignWith: r }),
- 'undefined' != typeof a && n.postMessage({ action: 'setRemux', remux: a }),
- e.byteLength &&
- ((r = e instanceof ArrayBuffer ? e : e.buffer),
- (a = e instanceof ArrayBuffer ? 0 : e.byteOffset),
- n.postMessage({ action: 'push', data: r, byteOffset: a, byteLength: e.byteLength }, [r])),
- y && n.postMessage({ action: 'endTimeline' }),
- n.postMessage({ action: 'flush' })
- }
- function Ou(e, t) {
- e.postMessage({ action: t }), Cl(e)
- }
- function Mu(e, t) {
- if (!t.currentTransmux) return (t.currentTransmux = e), Ou(t, e), 0
- t.transmuxQueue.push(Ou.bind(null, t, e))
- }
- function Ru(e) {
- if (!e.transmuxer.currentTransmux) return (e.transmuxer.currentTransmux = e), void Du(e)
- e.transmuxer.transmuxQueue.push(e)
- }
- function Nu(i) {
- var n = i.transmuxer,
- r = i.endAction || i.action,
- a = i.callback,
- e = g({}, i, { endAction: null, transmuxer: null, callback: null }),
- t = function e(t) {
- t.data.action === r &&
- (n.removeEventListener('message', e),
- t.data.data && ((t.data.data = new Uint8Array(t.data.data, i.byteOffset || 0, i.byteLength || t.data.data.byteLength)), i.data && (i.data = t.data.data)),
- a(t.data))
- }
- n.addEventListener('message', t),
- i.data
- ? ((t = i.data instanceof ArrayBuffer), (e.byteOffset = t ? 0 : i.data.byteOffset), (e.byteLength = i.data.byteLength), (t = [t ? i.data : i.data.buffer]), n.postMessage(e, t))
- : n.postMessage(e)
- }
- function Uu(e) {
- e.forEach(function (e) {
- e.abort()
- })
- }
- function Bu(e, t) {
- return t.timedout
- ? { status: t.status, message: 'HLS request timed-out at URL: ' + t.uri, code: Pl, xhr: t }
- : t.aborted
- ? { status: t.status, message: 'HLS request aborted at URL: ' + t.uri, code: Ll, xhr: t }
- : e
- ? { status: t.status, message: 'HLS request errored at URL: ' + t.uri, code: Al, xhr: t }
- : 'arraybuffer' === t.responseType && 0 === t.response.byteLength
- ? { status: t.status, message: 'Empty HLS response at URL: ' + t.uri, code: Al, xhr: t }
- : null
- }
- function Fu(a, s, o) {
- return function (e, t) {
- var i = t.response,
- e = Bu(e, t)
- if (e) return o(e, a)
- if (16 !== i.byteLength) return o({ status: t.status, message: 'Invalid HLS key at URL: ' + t.uri, code: Al, xhr: t }, a)
- for (var i = new DataView(i), n = new Uint32Array([i.getUint32(0), i.getUint32(4), i.getUint32(8), i.getUint32(12)]), r = 0; r < s.length; r++) s[r].bytes = n
- return o(null, a)
- }
- }
- function ju(i, n) {
- var e = Oo(i.map.bytes)
- if ('mp4' !== e) {
- var t = i.map.resolvedUri || i.map.uri
- return n({ internal: !0, message: 'Found unsupported ' + (e || 'unknown') + ' container for initialization segment at URL: ' + t, code: Al })
- }
- Nu({
- action: 'probeMp4Tracks',
- data: i.map.bytes,
- transmuxer: i.transmuxer,
- callback: function (e) {
- var t = e.tracks,
- e = e.data
- return (
- (i.map.bytes = e),
- t.forEach(function (e) {
- ;(i.map.tracks = i.map.tracks || {}),
- i.map.tracks[e.type] ||
- ('number' == typeof (i.map.tracks[e.type] = e).id && e.timescale && ((i.map.timescales = i.map.timescales || {}), (i.map.timescales[e.id] = e.timescale)))
- }),
- n(null)
- )
- },
- })
- }
- function Hu(e) {
- var i = e.segment,
- n = e.finishProcessingFn,
- r = e.responseType
- return function (e, t) {
- e = Bu(e, t)
- if (e) return n(e, i)
- e =
- 'arraybuffer' !== r && t.responseText
- ? (function (e) {
- for (var t = new Uint8Array(new ArrayBuffer(e.length)), i = 0; i < e.length; i++) t[i] = e.charCodeAt(i)
- return t.buffer
- })(t.responseText.substring(i.lastReachedChar || 0))
- : t.response
- return (
- (i.stats = { bandwidth: (t = t).bandwidth, bytesReceived: t.bytesReceived || 0, roundTripTime: t.roundTripTime || 0 }),
- i.key ? (i.encryptedBytes = new Uint8Array(e)) : (i.bytes = new Uint8Array(e)),
- n(null, i)
- )
- }
- }
- function qu(e) {
- var i = e.segment,
- t = e.bytes,
- n = e.trackInfoFn,
- r = e.timingInfoFn,
- a = e.videoSegmentTimingInfoFn,
- s = e.audioSegmentTimingInfoFn,
- o = e.id3Fn,
- u = e.captionsFn,
- l = e.isEndOfTimeline,
- c = e.endedTimelineFn,
- d = e.dataFn,
- h = e.doneFn,
- p = e.onTransmuxerLog,
- e = (i.map && i.map.tracks) || {},
- f = Boolean(e.audio && e.video),
- m = r.bind(null, i, 'audio', 'start'),
- g = r.bind(null, i, 'audio', 'end'),
- y = r.bind(null, i, 'video', 'start'),
- v = r.bind(null, i, 'video', 'end')
- Nu({
- action: 'probeTs',
- transmuxer: i.transmuxer,
- data: t,
- baseStartTime: i.baseStartTime,
- callback: function (e) {
- i.bytes = t = e.data
- e = e.result
- e && (n(i, { hasAudio: e.hasAudio, hasVideo: e.hasVideo, isMuxed: f }), (n = null), e.hasAudio && !f && m(e.audioStart), e.hasVideo && y(e.videoStart), (y = m = null)),
- Ru({
- bytes: t,
- transmuxer: i.transmuxer,
- audioAppendStart: i.audioAppendStart,
- gopsToAlignWith: i.gopsToAlignWith,
- remux: f,
- onData: function (e) {
- ;(e.type = 'combined' === e.type ? 'video' : e.type), d(i, e)
- },
- onTrackInfo: function (e) {
- n && (f && (e.isMuxed = !0), n(i, e))
- },
- onAudioTimingInfo: function (e) {
- m && 'undefined' != typeof e.start && (m(e.start), (m = null)), g && 'undefined' != typeof e.end && g(e.end)
- },
- onVideoTimingInfo: function (e) {
- y && 'undefined' != typeof e.start && (y(e.start), (y = null)), v && 'undefined' != typeof e.end && v(e.end)
- },
- onVideoSegmentTimingInfo: function (e) {
- a(e)
- },
- onAudioSegmentTimingInfo: function (e) {
- s(e)
- },
- onId3: function (e, t) {
- o(i, e, t)
- },
- onCaptions: function (e) {
- u(i, [e])
- },
- isEndOfTimeline: l,
- onEndedTimeline: function () {
- c()
- },
- onTransmuxerLog: p,
- onDone: function (e) {
- h && ((e.type = 'combined' === e.type ? 'video' : e.type), h(null, i, e))
- },
- })
- },
- })
- }
- function Vu(e) {
- var i = e.segment,
- n = e.bytes,
- t = e.trackInfoFn,
- r = e.timingInfoFn,
- a = e.videoSegmentTimingInfoFn,
- s = e.audioSegmentTimingInfoFn,
- o = e.id3Fn,
- u = e.captionsFn,
- l = e.isEndOfTimeline,
- c = e.endedTimelineFn,
- d = e.dataFn,
- h = e.doneFn,
- p = e.onTransmuxerLog,
- f = new Uint8Array(n)
- if (0 < io(f, ['moof']).length) {
- i.isFmp4 = !0
- var m = i.map.tracks,
- g = { isFmp4: !0, hasVideo: !!m.video, hasAudio: !!m.audio }
- m.audio && m.audio.codec && 'enca' !== m.audio.codec && (g.audioCodec = m.audio.codec),
- m.video && m.video.codec && 'encv' !== m.video.codec && (g.videoCodec = m.video.codec),
- m.video && m.audio && (g.isMuxed = !0),
- t(i, g)
- var y = function (e) {
- d(i, { data: f, type: g.hasAudio && !g.isMuxed ? 'audio' : 'video' }), e && e.length && u(i, e), h(null, i, {})
- }
- Nu({
- action: 'probeMp4StartTime',
- timescales: i.map.timescales,
- data: f,
- transmuxer: i.transmuxer,
- callback: function (e) {
- var t = e.data,
- e = e.startTime
- ;(n = t.buffer),
- (i.bytes = f = t),
- g.hasAudio && !g.isMuxed && r(i, 'audio', 'start', e),
- g.hasVideo && r(i, 'video', 'start', e),
- m.video && t.byteLength && i.transmuxer
- ? Nu({
- action: 'pushMp4Captions',
- endAction: 'mp4Captions',
- transmuxer: i.transmuxer,
- data: f,
- timescales: i.map.timescales,
- trackIds: [m.video.id],
- callback: function (e) {
- ;(n = e.data.buffer),
- (i.bytes = f = e.data),
- e.logs.forEach(function (e) {
- p(tr.mergeOptions(e, { stream: 'mp4CaptionParser' }))
- }),
- y(e.captions)
- },
- })
- : y()
- },
- })
- } else if (i.transmuxer) {
- if (('undefined' == typeof i.container && (i.container = Oo(f)), 'ts' !== i.container && 'aac' !== i.container)) return t(i, { hasAudio: !1, hasVideo: !1 }), h(null, i, {}), 0
- qu({
- segment: i,
- bytes: n,
- trackInfoFn: t,
- timingInfoFn: r,
- videoSegmentTimingInfoFn: a,
- audioSegmentTimingInfoFn: s,
- id3Fn: o,
- captionsFn: u,
- isEndOfTimeline: l,
- endedTimelineFn: c,
- dataFn: d,
- doneFn: h,
- onTransmuxerLog: p,
- })
- } else h(null, i, {})
- }
- function Wu(e, i) {
- var n = e.id,
- t = e.key,
- r = e.encryptedBytes,
- a = e.decryptionWorker,
- e = function e(t) {
- t.data.source === n && (a.removeEventListener('message', e), (t = t.data.decrypted), i(new Uint8Array(t.bytes, t.byteOffset, t.byteLength)))
- }
- a.addEventListener('message', e),
- (e = t.bytes.slice ? t.bytes.slice() : new Uint32Array(Array.prototype.slice.call(t.bytes))),
- a.postMessage(Tu({ source: n, encrypted: r, key: e, iv: t.iv }), [r.buffer, e.buffer])
- }
- function Gu(e) {
- var i = e.activeXhrs,
- m = e.decryptionWorker,
- g = e.trackInfoFn,
- y = e.timingInfoFn,
- v = e.videoSegmentTimingInfoFn,
- _ = e.audioSegmentTimingInfoFn,
- b = e.id3Fn,
- T = e.captionsFn,
- S = e.isEndOfTimeline,
- w = e.endedTimelineFn,
- E = e.dataFn,
- k = e.doneFn,
- C = e.onTransmuxerLog,
- n = 0,
- r = !1
- return function (e, f) {
- if (!r) {
- if (e) return (r = !0), Uu(i), k(e, f)
- if ((n += 1) === i.length) {
- var t = function () {
- if (f.encryptedBytes)
- return (
- (t = (e = {
- decryptionWorker: m,
- segment: f,
- trackInfoFn: g,
- timingInfoFn: y,
- videoSegmentTimingInfoFn: v,
- audioSegmentTimingInfoFn: _,
- id3Fn: b,
- captionsFn: T,
- isEndOfTimeline: S,
- endedTimelineFn: w,
- dataFn: E,
- doneFn: k,
- onTransmuxerLog: C,
- }).decryptionWorker),
- (i = e.segment),
- (n = e.trackInfoFn),
- (r = e.timingInfoFn),
- (a = e.videoSegmentTimingInfoFn),
- (s = e.audioSegmentTimingInfoFn),
- (o = e.id3Fn),
- (u = e.captionsFn),
- (l = e.isEndOfTimeline),
- (c = e.endedTimelineFn),
- (d = e.dataFn),
- (h = e.doneFn),
- (p = e.onTransmuxerLog),
- void Wu({ id: i.requestId, key: i.key, encryptedBytes: i.encryptedBytes, decryptionWorker: t }, function (e) {
- ;(i.bytes = e),
- Vu({
- segment: i,
- bytes: i.bytes,
- trackInfoFn: n,
- timingInfoFn: r,
- videoSegmentTimingInfoFn: a,
- audioSegmentTimingInfoFn: s,
- id3Fn: o,
- captionsFn: u,
- isEndOfTimeline: l,
- endedTimelineFn: c,
- dataFn: d,
- doneFn: h,
- onTransmuxerLog: p,
- })
- })
- )
- var e, t, i, n, r, a, s, o, u, l, c, d, h, p
- Vu({
- segment: f,
- bytes: f.bytes,
- trackInfoFn: g,
- timingInfoFn: y,
- videoSegmentTimingInfoFn: v,
- audioSegmentTimingInfoFn: _,
- id3Fn: b,
- captionsFn: T,
- isEndOfTimeline: S,
- endedTimelineFn: w,
- dataFn: E,
- doneFn: k,
- onTransmuxerLog: C,
- })
- }
- if (((f.endOfAllRequests = Date.now()), f.map && f.map.encryptedBytes && !f.map.bytes))
- return Wu({ decryptionWorker: m, id: f.requestId + '-init', encryptedBytes: f.map.encryptedBytes, key: f.map.key }, function (e) {
- ;(f.map.bytes = e),
- ju(f, function (e) {
- return e ? (Uu(i), k(e, f)) : void t()
- })
- })
- t()
- }
- }
- }
- }
- function zu(e) {
- var n = e.segment,
- r = e.progressFn
- return (
- e.trackInfoFn,
- e.timingInfoFn,
- e.videoSegmentTimingInfoFn,
- e.audioSegmentTimingInfoFn,
- e.id3Fn,
- e.captionsFn,
- e.isEndOfTimeline,
- e.endedTimelineFn,
- e.dataFn,
- function (e) {
- var t,
- i = e.target
- if (!i.aborted)
- return (
- (n.stats = tr.mergeOptions(
- n.stats,
- ((i = (t = e).target),
- ((i = { bandwidth: 1 / 0, bytesReceived: 0, roundTripTime: Date.now() - i.requestTime || 0 }).bytesReceived = t.loaded),
- (i.bandwidth = Math.floor((i.bytesReceived / i.roundTripTime) * 8 * 1e3)),
- i)
- )),
- !n.stats.firstBytesReceivedAt && n.stats.bytesReceived && (n.stats.firstBytesReceivedAt = Date.now()),
- r(e, n)
- )
- }
- )
- }
- function Xu(e) {
- var t,
- i,
- n,
- r = e.xhr,
- a = e.xhrOptions,
- s = e.decryptionWorker,
- o = e.segment,
- u = e.abortFn,
- l = e.progressFn,
- c = e.trackInfoFn,
- d = e.timingInfoFn,
- h = e.videoSegmentTimingInfoFn,
- p = e.audioSegmentTimingInfoFn,
- f = e.id3Fn,
- m = e.captionsFn,
- g = e.isEndOfTimeline,
- y = e.endedTimelineFn,
- v = e.dataFn,
- _ = e.doneFn,
- e = e.onTransmuxerLog,
- b = [],
- _ = Gu({
- activeXhrs: b,
- decryptionWorker: s,
- trackInfoFn: c,
- timingInfoFn: d,
- videoSegmentTimingInfoFn: h,
- audioSegmentTimingInfoFn: p,
- id3Fn: f,
- captionsFn: m,
- isEndOfTimeline: g,
- endedTimelineFn: y,
- dataFn: v,
- doneFn: _,
- onTransmuxerLog: e,
- })
- o.key &&
- !o.key.bytes &&
- ((e = [o.key]),
- o.map && !o.map.bytes && o.map.key && o.map.key.resolvedUri === o.key.resolvedUri && e.push(o.map.key),
- (e = r(tr.mergeOptions(a, { uri: o.key.resolvedUri, responseType: 'arraybuffer' }), Fu(o, e, _))),
- b.push(e)),
- o.map &&
- !o.map.bytes &&
- (!o.map.key ||
- (o.key && o.key.resolvedUri === o.map.key.resolvedUri) ||
- ((t = r(tr.mergeOptions(a, { uri: o.map.key.resolvedUri, responseType: 'arraybuffer' }), Fu(o, [o.map.key], _))), b.push(t)),
- (t = r(
- tr.mergeOptions(a, { uri: o.map.resolvedUri, responseType: 'arraybuffer', headers: vu(o.map) }),
- ((i = (t = { segment: o, finishProcessingFn: _ }).segment),
- (n = t.finishProcessingFn),
- function (e, t) {
- e = Bu(e, t)
- if (e) return n(e, i)
- e = new Uint8Array(t.response)
- if (i.map.key) return (i.map.encryptedBytes = e), n(null, i)
- ;(i.map.bytes = e),
- ju(i, function (e) {
- return e ? ((e.xhr = t), (e.status = t.status), n(e, i)) : void n(null, i)
- })
- })
- )),
- b.push(t)),
- (a = tr.mergeOptions(a, { uri: (o.part && o.part.resolvedUri) || o.resolvedUri, responseType: 'arraybuffer', headers: vu(o) })),
- (a = r(a, Hu({ segment: o, finishProcessingFn: _, responseType: a.responseType }))).addEventListener(
- 'progress',
- zu({
- segment: o,
- progressFn: l,
- trackInfoFn: c,
- timingInfoFn: d,
- videoSegmentTimingInfoFn: h,
- audioSegmentTimingInfoFn: p,
- id3Fn: f,
- captionsFn: m,
- isEndOfTimeline: g,
- endedTimelineFn: y,
- dataFn: v,
- })
- ),
- b.push(a)
- var T = {}
- return (
- b.forEach(function (e) {
- var t, i
- e.addEventListener(
- 'loadend',
- ((t = (e = { loadendState: T, abortFn: u }).loadendState),
- (i = e.abortFn),
- function (e) {
- e.target.aborted && i && !t.calledAbortFn && (i(), (t.calledAbortFn = !0))
- })
- )
- }),
- function () {
- return Uu(b)
- }
- )
- }
- function Ku(e, t) {
- return (t = t.attributes || {}), e && e.mediaGroups && e.mediaGroups.AUDIO && t.AUDIO && e.mediaGroups.AUDIO[t.AUDIO]
- }
- function Yu(e) {
- var n = {}
- return (
- e.forEach(function (e) {
- var t = e.mediaType,
- i = e.type,
- e = e.details
- ;(n[t] = n[t] || []), n[t].push(hr('' + i + e))
- }),
- Object.keys(n).forEach(function (e) {
- return 1 < n[e].length
- ? (Dl('multiple ' + e + ' codecs found as attributes: ' + n[e].join(', ') + '. Setting playlist codecs to null so that we wait for mux.js to probe segments for real codecs.'),
- void (n[e] = null))
- : void (n[e] = n[e][0])
- }),
- n
- )
- }
- function Qu(e) {
- var t = 0
- return e.audio && t++, e.video && t++, t
- }
- function $u(e, t) {
- var i,
- n = t.attributes || {},
- r = Yu(
- (function (e) {
- e = e.attributes || {}
- if (e.CODECS) return pr(e.CODECS)
- })(t) || []
- )
- return (
- Ku(e, t) &&
- !r.audio &&
- !(function (e, t) {
- if (!Ku(e, t)) return !0
- var i,
- t = t.attributes || {},
- n = e.mediaGroups.AUDIO[t.AUDIO]
- for (i in n) if (!n[i].uri && !n[i].playlists) return !0
- return !1
- })(e, t) &&
- (i = Yu(
- (function (e, t) {
- if (!e.mediaGroups.AUDIO || !t) return null
- var i,
- n = e.mediaGroups.AUDIO[t]
- if (!n) return null
- for (i in n) {
- var r = n[i]
- if (r.default && r.playlists) return pr(r.playlists[0].attributes.CODECS)
- }
- return null
- })(e, n.AUDIO) || []
- )).audio &&
- (r.audio = i.audio),
- r
- )
- }
- function Ju(e) {
- if (e && e.playlist) {
- var t = e.playlist
- return JSON.stringify({ id: t.id, bandwidth: e.bandwidth, width: e.width, height: e.height, codecs: (t.attributes && t.attributes.CODECS) || '' })
- }
- }
- function Zu(e, t) {
- return (e = e && window.getComputedStyle(e)) ? e[t] : ''
- }
- function el(e, n) {
- var r = e.slice()
- e.sort(function (e, t) {
- var i = n(e, t)
- return 0 === i ? r.indexOf(e) - r.indexOf(t) : i
- })
- }
- function tl(e, t) {
- var i, n
- return (i = (i = e.attributes.BANDWIDTH ? e.attributes.BANDWIDTH : i) || window.Number.MAX_VALUE) - (n = (n = t.attributes.BANDWIDTH ? t.attributes.BANDWIDTH : n) || window.Number.MAX_VALUE)
- }
- function il(e, t, i, n, r, a) {
- if (e) {
- var s = { bandwidth: t, width: i, height: n, limitRenditionByPlayerDimensions: r },
- o = e.playlists
- gl.isAudioOnly(e) && ((o = a.getAudioTrackPlaylists_()), (s.audioOnly = !0))
- var u = o.map(function (e) {
- var t = e.attributes && e.attributes.RESOLUTION && e.attributes.RESOLUTION.width,
- i = e.attributes && e.attributes.RESOLUTION && e.attributes.RESOLUTION.height,
- n = e.attributes && e.attributes.BANDWIDTH
- return { bandwidth: n || window.Number.MAX_VALUE, width: t, height: i, playlist: e }
- })
- el(u, function (e, t) {
- return e.bandwidth - t.bandwidth
- })
- var l = (u = u.filter(function (e) {
- return !gl.isIncompatible(e.playlist)
- })).filter(function (e) {
- return gl.isEnabled(e.playlist)
- }),
- e = (l = !l.length
- ? u.filter(function (e) {
- return !gl.isDisabled(e.playlist)
- })
- : l).filter(function (e) {
- return e.bandwidth * El.BANDWIDTH_VARIANCE < t
- }),
- c = e[e.length - 1],
- o = e.filter(function (e) {
- return e.bandwidth === c.bandwidth
- })[0]
- if (!1 === r) {
- var d = o || l[0] || u[0]
- if (d && d.playlist) {
- r = o ? 'bandwidthBestRep' : 'sortedPlaylistReps'
- return l[0] && (r = 'enabledPlaylistReps'), Ol('choosing ' + Ju(d) + ' using ' + r + ' with options', s), d.playlist
- }
- return Ol('could not choose a playlist with options', s), null
- }
- d = e.filter(function (e) {
- return e.width && e.height
- })
- el(d, function (e, t) {
- return e.width - t.width
- })
- var h,
- p,
- f,
- e = d.filter(function (e) {
- return e.width === i && e.height === n
- }),
- c = e[e.length - 1],
- e = e.filter(function (e) {
- return e.bandwidth === c.bandwidth
- })[0]
- e ||
- ((p = (h = d.filter(function (e) {
- return e.width > i || e.height > n
- })).filter(function (e) {
- return e.width === h[0].width && e.height === h[0].height
- })),
- (c = p[p.length - 1]),
- (p = p.filter(function (e) {
- return e.bandwidth === c.bandwidth
- })[0])),
- a.experimentalLeastPixelDiffSelector &&
- ((m = d.map(function (e) {
- return (e.pixelDiff = Math.abs(e.width - i) + Math.abs(e.height - n)), e
- })),
- el(m, function (e, t) {
- return e.pixelDiff === t.pixelDiff ? t.bandwidth - e.bandwidth : e.pixelDiff - t.pixelDiff
- }),
- (f = m[0]))
- var m = f || p || e || o || l[0] || u[0]
- if (m && m.playlist) {
- u = 'sortedPlaylistReps'
- return (
- f ? (u = 'leastPixelDiffRep') : p ? (u = 'resolutionPlusOneRep') : e ? (u = 'resolutionBestRep') : o ? (u = 'bandwidthBestRep') : l[0] && (u = 'enabledPlaylistReps'),
- Ol('choosing ' + Ju(m) + ' using ' + u + ' with options', s),
- m.playlist
- )
- }
- return Ol('could not choose a playlist with options', s), null
- }
- }
- function nl(e) {
- var t = e.inbandTextTracks,
- i = e.metadataArray,
- r = e.timestampOffset,
- n = e.videoDuration
- if (i) {
- var a = window.WebKitDataCue || window.VTTCue,
- s = t.metadataTrack_
- if (
- s &&
- (i.forEach(function (e) {
- var n = e.cueTime + r
- !('number' != typeof n || window.isNaN(n) || n < 0) &&
- n < 1 / 0 &&
- e.frames.forEach(function (e) {
- var t,
- i = new a(n, n, e.value || e.url || e.data || '')
- ;(i.frame = e),
- (i.value = e),
- (t = i),
- Object.defineProperties(t.frame, {
- id: {
- get: function () {
- return tr.log.warn('cue.frame.id is deprecated. Use cue.value.key instead.'), t.value.key
- },
- },
- value: {
- get: function () {
- return tr.log.warn('cue.frame.value is deprecated. Use cue.value.data instead.'), t.value.data
- },
- },
- privateData: {
- get: function () {
- return tr.log.warn('cue.frame.privateData is deprecated. Use cue.value.data instead.'), t.value.data
- },
- },
- }),
- s.addCue(i)
- })
- }),
- s.cues && s.cues.length)
- ) {
- for (var o = s.cues, u = [], l = 0; l < o.length; l++) o[l] && u.push(o[l])
- var c = u.reduce(function (e, t) {
- var i = e[t.startTime] || []
- return i.push(t), (e[t.startTime] = i), e
- }, {}),
- d = Object.keys(c).sort(function (e, t) {
- return Number(e) - Number(t)
- })
- d.forEach(function (e, t) {
- var e = c[e],
- i = Number(d[t + 1]) || n
- e.forEach(function (e) {
- e.endTime = i
- })
- })
- }
- }
- }
- function rl(e, t, i) {
- var n, r
- if (i && i.cues) for (n = i.cues.length; n--; ) (r = i.cues[n]).startTime >= e && r.endTime <= t && i.removeCue(r)
- }
- function al(e) {
- return 'number' == typeof e && isFinite(e)
- }
- function sl(e) {
- var t = e.startOfSegment,
- i = e.duration,
- n = e.segment,
- r = e.part,
- a = e.playlist,
- s = a.mediaSequence,
- o = a.id,
- u = a.segments,
- l = e.mediaIndex,
- c = e.partIndex,
- d = e.timeline,
- h = (void 0 === u ? [] : u).length - 1,
- p = 'mediaIndex/partIndex increment'
- return (
- e.getMediaInfoForTime ? (p = 'getMediaInfoForTime (' + e.getMediaInfoForTime + ')') : e.isSyncRequest && (p = 'getSyncSegmentCandidate (isSyncRequest)'),
- e.independent && (p += ' with independent ' + e.independent),
- (a = 'number' == typeof c),
- (u = e.segment.uri ? 'segment' : 'pre-segment'),
- (e = a ? zo({ preloadSegment: n }) - 1 : 0),
- u +
- ' [' +
- (s + l) +
- '/' +
- (s + h) +
- ']' +
- (a ? ' part [' + c + '/' + e + ']' : '') +
- ' segment start/end [' +
- n.start +
- ' => ' +
- n.end +
- ']' +
- (a ? ' part start/end [' + r.start + ' => ' + r.end + ']' : '') +
- ' startOfSegment [' +
- t +
- '] duration [' +
- i +
- '] timeline [' +
- d +
- '] selected by [' +
- p +
- '] playlist [' +
- o +
- ']'
- )
- }
- function ol(e) {
- return e + 'TimingInfo'
- }
- function ul(e) {
- var t = e.timelineChangeController,
- i = e.currentTimeline,
- n = e.segmentTimeline,
- r = e.loaderType,
- e = e.audioDisabled
- if (i !== n) {
- if ('audio' === r) {
- i = t.lastTimelineChange({ type: 'main' })
- return !i || i.to !== n
- }
- if ('main' === r && e) {
- t = t.pendingTimelineChange({ type: 'audio' })
- return t && t.to === n ? !1 : !0
- }
- }
- }
- function ll(e) {
- var t = e.segmentDuration,
- e = e.maxDuration
- return !!t && Math.round(t) > e + fl
- }
- function cl(e, t) {
- if ('hls' !== t) return null
- var n,
- r,
- i =
- ((n = { audioTimingInfo: e.audioTimingInfo, videoTimingInfo: e.videoTimingInfo }),
- (r = 0),
- ['video', 'audio'].forEach(function (e) {
- var t,
- i = n[e + 'TimingInfo']
- i &&
- ((e = i.start),
- (i = i.end),
- 'bigint' == typeof e || 'bigint' == typeof i ? (t = window.BigInt(i) - window.BigInt(e)) : 'number' == typeof e && 'number' == typeof i && (t = i - e),
- 'undefined' != typeof t && r < t && (r = t))
- }),
- (r = 'bigint' == typeof r && r < Number.MAX_SAFE_INTEGER ? Number(r) : r))
- if (!i) return null
- var a = e.playlist.targetDuration,
- s = ll({ segmentDuration: i, maxDuration: 2 * a }),
- t = ll({ segmentDuration: i, maxDuration: a }),
- a =
- 'Segment with index ' +
- e.mediaIndex +
- ' from playlist ' +
- e.playlist.id +
- ' has a duration of ' +
- i +
- ' when the reported duration is ' +
- e.duration +
- ' and the target duration is ' +
- a +
- '. For HLS content, a duration in excess of the target duration may result in playback issues. See the HLS specification section on EXT-X-TARGETDURATION for more details: https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-4.3.3.1'
- return s || t ? { severity: s ? 'warn' : 'info', message: a } : null
- }
- var dl = Lo,
- hl = 9e4,
- pl = ir,
- fl = 1 / 30,
- ml = tr.createTimeRange,
- gl = {
- liveEdgeDelay: Xo,
- duration: Yo,
- seekable: function (e, t, i) {
- var n = t || 0,
- i = $o(e, t, !0, i)
- return null === i ? ml() : ml(n, i)
- },
- getMediaInfoForTime: function (e) {
- for (
- var t = e.playlist,
- i = e.currentTime,
- n = e.startingSegmentIndex,
- r = e.startingPartIndex,
- a = e.startTime,
- s = e.experimentalExactManifestTimings,
- o = i - a,
- u = Wo(t),
- l = 0,
- c = 0;
- c < u.length;
- c++
- ) {
- var d = u[c]
- if (n === d.segmentIndex && ('number' != typeof r || 'number' != typeof d.partIndex || r === d.partIndex)) {
- l = c
- break
- }
- }
- if (o < 0) {
- if (0 < l)
- for (var h = l - 1; 0 <= h; h--) {
- var p = u[h]
- if (((o += p.duration), s)) {
- if (o < 0) continue
- } else if (o + fl <= 0) continue
- return { partIndex: p.partIndex, segmentIndex: p.segmentIndex, startTime: a - Qo({ defaultDuration: t.targetDuration, durationList: u, startIndex: l, endIndex: h }) }
- }
- return { partIndex: (u[0] && u[0].partIndex) || null, segmentIndex: (u[0] && u[0].segmentIndex) || 0, startTime: i }
- }
- if (l < 0) {
- for (var f = l; f < 0; f++) if ((o -= t.targetDuration) < 0) return { partIndex: (u[0] && u[0].partIndex) || null, segmentIndex: (u[0] && u[0].segmentIndex) || 0, startTime: i }
- l = 0
- }
- for (var m = l; m < u.length; m++) {
- var g = u[m]
- if (((o -= g.duration), s)) {
- if (0 < o) continue
- } else if (0 <= o - fl) continue
- return { partIndex: g.partIndex, segmentIndex: g.segmentIndex, startTime: a + Qo({ defaultDuration: t.targetDuration, durationList: u, startIndex: l, endIndex: m }) }
- }
- return { segmentIndex: u[u.length - 1].segmentIndex, partIndex: u[u.length - 1].partIndex, startTime: i }
- },
- isEnabled: eu,
- isDisabled: function (e) {
- return e.disabled
- },
- isBlacklisted: Jo,
- isIncompatible: Zo,
- playlistEnd: $o,
- isAes: function (e) {
- for (var t = 0; t < e.segments.length; t++) if (e.segments[t].key) return !0
- return !1
- },
- hasAttribute: tu,
- estimateSegmentRequestTime: function (e, t, i, n) {
- return tu('BANDWIDTH', i) ? (e * i.attributes.BANDWIDTH - 8 * (n = void 0 === n ? 0 : n)) / t : NaN
- },
- isLowestEnabledRendition: iu,
- isAudioOnly: au,
- playlistMatch: nu,
- segmentDurationWithParts: Vo,
- },
- yl = tr.log,
- vl = tr.mergeOptions,
- W = tr.EventTarget,
- _l = (function (a) {
- function e(e, t, i) {
- var n
- if ((void 0 === i && (i = {}), (n = a.call(this) || this), !e)) throw new Error('A non-empty playlist URL or object is required')
- n.logger_ = Ro('PlaylistLoader')
- var r = i.withCredentials,
- r = void 0 !== r && r,
- i = i.handleManifestRedirects,
- i = void 0 !== i && i
- ;(n.src = e), (n.vhs_ = t), (n.withCredentials = r), (n.handleManifestRedirects = i)
- t = t.options_
- return (
- (n.customTagParsers = (t && t.customTagParsers) || []),
- (n.customTagMappers = (t && t.customTagMappers) || []),
- (n.experimentalLLHLS = (t && t.experimentalLLHLS) || !1),
- tr.browser.IE_VERSION && (n.experimentalLLHLS = !1),
- (n.state = 'HAVE_NOTHING'),
- (n.handleMediaupdatetimeout_ = n.handleMediaupdatetimeout_.bind(ft(n))),
- n.on('mediaupdatetimeout', n.handleMediaupdatetimeout_),
- n
- )
- }
- mt(e, a)
- var t = e.prototype
- return (
- (t.handleMediaupdatetimeout_ = function () {
- var e,
- t,
- i = this
- 'HAVE_METADATA' === this.state &&
- ((e = this.media()),
- (t = pl(this.master.uri, e.uri)),
- this.experimentalLLHLS &&
- (t = (function (e, t) {
- if (t.endList || !t.serverControl) return e
- var i,
- n,
- r,
- a,
- s = {}
- return (
- t.serverControl.canBlockReload &&
- ((r = t.preloadSegment),
- (i = t.mediaSequence + t.segments.length),
- r && ((n = r.parts || []), -1 < (r = zo(t) - 1) && r != n.length - 1 && (s._HLS_part = r), (-1 < r || n.length) && i--),
- (s._HLS_msn = i)),
- t.serverControl && t.serverControl.canSkipUntil && (s._HLS_skip = t.serverControl.canSkipDateranges ? 'v2' : 'YES'),
- Object.keys(s).length &&
- ((a = new window.URL(e)),
- ['_HLS_skip', '_HLS_msn', '_HLS_part'].forEach(function (e) {
- s.hasOwnProperty(e) && a.searchParams.set(e, s[e])
- }),
- (e = a.toString())),
- e
- )
- })(t, e)),
- (this.state = 'HAVE_CURRENT_METADATA'),
- (this.request = this.vhs_.xhr({ uri: t, withCredentials: this.withCredentials }, function (e, t) {
- if (i.request)
- return e
- ? i.playlistRequestError(i.request, i.media(), 'HAVE_METADATA')
- : void i.haveMetadata({ playlistString: i.request.responseText, url: i.media().uri, id: i.media().id })
- })))
- }),
- (t.playlistRequestError = function (e, t, i) {
- var n = t.uri,
- t = t.id
- ;(this.request = null),
- i && (this.state = i),
- (this.error = {
- playlist: this.master.playlists[t],
- status: e.status,
- message: 'HLS playlist request error at URL: ' + n + '.',
- responseText: e.responseText,
- code: 500 <= e.status ? 4 : 2,
- }),
- this.trigger('error')
- }),
- (t.parseManifest_ = function (e) {
- var t = this,
- i = e.url
- return (function (e) {
- var t = e.onwarn,
- i = e.oninfo,
- n = e.manifestString,
- r = e.customTagParsers,
- a = void 0 === r ? [] : r,
- r = e.customTagMappers,
- r = void 0 === r ? [] : r,
- e = e.experimentalLLHLS,
- s = new Ir()
- t && s.on('warn', t),
- i && s.on('info', i),
- a.forEach(function (e) {
- return s.addParser(e)
- }),
- r.forEach(function (e) {
- return s.addTagMapper(e)
- }),
- s.push(n),
- s.end()
- var o = s.manifest
- e ||
- (['preloadSegment', 'skip', 'serverControl', 'renditionReports', 'partInf', 'partTargetDuration'].forEach(function (e) {
- o.hasOwnProperty(e) && delete o[e]
- }),
- o.segments &&
- o.segments.forEach(function (t) {
- ;['parts', 'preloadHints'].forEach(function (e) {
- t.hasOwnProperty(e) && delete t[e]
- })
- })),
- o.targetDuration ||
- ((u = 10),
- o.segments &&
- o.segments.length &&
- (u = o.segments.reduce(function (e, t) {
- return Math.max(e, t.duration)
- }, 0)),
- t && t('manifest has no targetDuration defaulting to ' + u),
- (o.targetDuration = u))
- var u = Go(o)
- return (
- u.length &&
- !o.partTargetDuration &&
- ((u = u.reduce(function (e, t) {
- return Math.max(e, t.duration)
- }, 0)),
- t &&
- (t('manifest has no partTargetDuration defaulting to ' + u),
- yl.error(
- 'LL-HLS manifest has parts but lacks required #EXT-X-PART-INF:PART-TARGET value. See https://datatracker.ietf.org/doc/html/draft-pantos-hls-rfc8216bis-09#section-4.4.3.7. Playback is not guaranteed.'
- )),
- (o.partTargetDuration = u)),
- o
- )
- })({
- onwarn: function (e) {
- e = e.message
- return t.logger_('m3u8-parser warn for ' + i + ': ' + e)
- },
- oninfo: function (e) {
- e = e.message
- return t.logger_('m3u8-parser info for ' + i + ': ' + e)
- },
- manifestString: e.manifestString,
- customTagParsers: this.customTagParsers,
- customTagMappers: this.customTagMappers,
- experimentalLLHLS: this.experimentalLLHLS,
- })
- }),
- (t.haveMetadata = function (e) {
- var t = e.playlistString,
- i = e.playlistObject,
- n = e.url,
- e = e.id
- ;(this.request = null), (this.state = 'HAVE_METADATA')
- t = i || this.parseManifest_({ url: n, manifestString: t })
- ;(t.lastRequest = Date.now()), uu({ playlist: t, uri: n, id: e })
- n = fu(this.master, t)
- ;(this.targetDuration = t.partTargetDuration || t.targetDuration),
- (this.pendingMedia_ = null),
- n ? ((this.master = n), (this.media_ = this.master.playlists[e])) : this.trigger('playlistunchanged'),
- this.updateMediaUpdateTimeout_(mu(this.media(), !!n)),
- this.trigger('loadedplaylist')
- }),
- (t.dispose = function () {
- this.trigger('dispose'), this.stopRequest(), window.clearTimeout(this.mediaUpdateTimeout), window.clearTimeout(this.finalRenditionTimeout), this.off()
- }),
- (t.stopRequest = function () {
- var e
- this.request && ((e = this.request), (this.request = null), (e.onreadystatechange = null), e.abort())
- }),
- (t.media = function (i, e) {
- var n = this
- if (!i) return this.media_
- if ('HAVE_NOTHING' === this.state) throw new Error('Cannot switch media playlist from ' + this.state)
- if ('string' == typeof i) {
- if (!this.master.playlists[i]) throw new Error('Unknown playlist URI: ' + i)
- i = this.master.playlists[i]
- }
- if ((window.clearTimeout(this.finalRenditionTimeout), e)) {
- var t = ((i.partTargetDuration || i.targetDuration) / 2) * 1e3 || 5e3
- this.finalRenditionTimeout = window.setTimeout(this.media.bind(this, i, !1), t)
- } else {
- var r = this.state,
- e = !this.media_ || i.id !== this.media_.id,
- t = this.master.playlists[i.id]
- if ((t && t.endList) || (i.endList && i.segments.length))
- return (
- this.request && ((this.request.onreadystatechange = null), this.request.abort(), (this.request = null)),
- (this.state = 'HAVE_METADATA'),
- (this.media_ = i),
- void (e && (this.trigger('mediachanging'), 'HAVE_MASTER' === r ? this.trigger('loadedmetadata') : this.trigger('mediachange')))
- )
- if ((this.updateMediaUpdateTimeout_(mu(i, !0)), e)) {
- if (((this.state = 'SWITCHING_MEDIA'), this.request)) {
- if (i.resolvedUri === this.request.url) return
- ;(this.request.onreadystatechange = null), this.request.abort(), (this.request = null)
- }
- this.media_ && this.trigger('mediachanging'),
- (this.pendingMedia_ = i),
- (this.request = this.vhs_.xhr({ uri: i.resolvedUri, withCredentials: this.withCredentials }, function (e, t) {
- if (n.request) {
- if (((i.lastRequest = Date.now()), (i.resolvedUri = Mo(n.handleManifestRedirects, i.resolvedUri, t)), e)) return n.playlistRequestError(n.request, i, r)
- n.haveMetadata({ playlistString: t.responseText, url: i.uri, id: i.id }), 'HAVE_MASTER' === r ? n.trigger('loadedmetadata') : n.trigger('mediachange')
- }
- }))
- }
- }
- }),
- (t.pause = function () {
- this.mediaUpdateTimeout && (window.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = null)),
- this.stopRequest(),
- 'HAVE_NOTHING' === this.state && (this.started = !1),
- 'SWITCHING_MEDIA' === this.state
- ? this.media_
- ? (this.state = 'HAVE_METADATA')
- : (this.state = 'HAVE_MASTER')
- : 'HAVE_CURRENT_METADATA' === this.state && (this.state = 'HAVE_METADATA')
- }),
- (t.load = function (e) {
- var t = this
- this.mediaUpdateTimeout && (window.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = null))
- var i = this.media()
- e
- ? ((e = i ? ((i.partTargetDuration || i.targetDuration) / 2) * 1e3 : 5e3),
- (this.mediaUpdateTimeout = window.setTimeout(function () {
- ;(t.mediaUpdateTimeout = null), t.load()
- }, e)))
- : this.started
- ? i && !i.endList
- ? this.trigger('mediaupdatetimeout')
- : this.trigger('loadedplaylist')
- : this.start()
- }),
- (t.updateMediaUpdateTimeout_ = function (e) {
- var t = this
- this.mediaUpdateTimeout && (window.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = null)),
- this.media() &&
- !this.media().endList &&
- (this.mediaUpdateTimeout = window.setTimeout(function () {
- ;(t.mediaUpdateTimeout = null), t.trigger('mediaupdatetimeout'), t.updateMediaUpdateTimeout_(e)
- }, e))
- }),
- (t.start = function () {
- var i = this
- if (((this.started = !0), 'object' == typeof this.src))
- return (
- this.src.uri || (this.src.uri = window.location.href),
- (this.src.resolvedUri = this.src.uri),
- void setTimeout(function () {
- i.setupInitialPlaylist(i.src)
- }, 0)
- )
- this.request = this.vhs_.xhr({ uri: this.src, withCredentials: this.withCredentials }, function (e, t) {
- if (i.request) {
- if (((i.request = null), e))
- return (
- (i.error = { status: t.status, message: 'HLS playlist request error at URL: ' + i.src + '.', responseText: t.responseText, code: 2 }),
- 'HAVE_NOTHING' === i.state && (i.started = !1),
- i.trigger('error')
- )
- i.src = Mo(i.handleManifestRedirects, i.src, t)
- t = i.parseManifest_({ manifestString: t.responseText, url: i.src })
- i.setupInitialPlaylist(t)
- }
- })
- }),
- (t.srcUri = function () {
- return 'string' == typeof this.src ? this.src : this.src.uri
- }),
- (t.setupInitialPlaylist = function (e) {
- if (((this.state = 'HAVE_MASTER'), e.playlists))
- return (
- (this.master = e),
- lu(this.master, this.srcUri()),
- e.playlists.forEach(function (t) {
- ;(t.segments = hu(t)),
- t.segments.forEach(function (e) {
- du(e, t.resolvedUri)
- })
- }),
- this.trigger('loadedplaylist'),
- void (this.request || this.media(this.master.playlists[0]))
- )
- var t,
- i,
- n,
- r = this.srcUri() || window.location.href
- ;(this.master =
- ((i = su(0, (t = r))),
- ((n = {
- mediaGroups: { AUDIO: {}, VIDEO: {}, 'CLOSED-CAPTIONS': {}, SUBTITLES: {} },
- uri: window.location.href,
- resolvedUri: window.location.href,
- playlists: [{ uri: t, id: i, resolvedUri: t, attributes: {} }],
- }).playlists[i] = n.playlists[0]),
- (n.playlists[t] = n.playlists[0]),
- n)),
- this.haveMetadata({ playlistObject: e, url: r, id: this.master.playlists[0].id }),
- this.trigger('loadedmetadata')
- }),
- e
- )
- })(W),
- bl = tr.xhr,
- Tl = tr.mergeOptions,
- zt = Object.freeze({
- __proto__: null,
- createTransferableMessage: Tu,
- initSegmentId: Su,
- segmentKeyId: wu,
- hexDump: Eu,
- tagDump: function (e) {
- e = e.bytes
- return Eu(e)
- },
- textRanges: function (e) {
- for (var t, i, n = '', r = 0; r < e.length; r++) n += ((i = r), (t = e).start(i) + '-' + t.end(i) + ' ')
- return n
- },
- }),
- ar = tr.EventTarget,
- Sl = tr.mergeOptions,
- wl = (function (a) {
- function e(e, t, i, n) {
- var r
- void 0 === i && (i = {}), ((r = a.call(this) || this).masterPlaylistLoader_ = n || ft(r)), n || (r.isMaster_ = !0)
- ;(n = i.withCredentials), (n = void 0 !== n && n), (i = i.handleManifestRedirects), (i = void 0 !== i && i)
- if (((r.vhs_ = t), (r.withCredentials = n), (r.handleManifestRedirects = i), !e)) throw new Error('A non-empty playlist URL or object is required')
- return (
- r.on('minimumUpdatePeriod', function () {
- r.refreshXml_()
- }),
- r.on('mediaupdatetimeout', function () {
- r.refreshMedia_(r.media().id)
- }),
- (r.state = 'HAVE_NOTHING'),
- (r.loadedPlaylists_ = {}),
- (r.logger_ = Ro('DashPlaylistLoader')),
- r.isMaster_ ? ((r.masterPlaylistLoader_.srcUrl = e), (r.masterPlaylistLoader_.sidxMapping_ = {})) : (r.childPlaylist_ = e),
- r
- )
- }
- mt(e, a)
- var t = e.prototype
- return (
- (t.requestErrored_ = function (e, t, i) {
- return (
- !this.request ||
- ((this.request = null),
- e
- ? ((this.error = 'object' != typeof e || e instanceof Error ? { status: t.status, message: 'DASH request error at URL: ' + t.uri, response: t.response, code: 2 } : e),
- i && (this.state = i),
- this.trigger('error'),
- !0)
- : void 0)
- )
- }),
- (t.addSidxSegments_ = function (a, n, r) {
- var s,
- o,
- u = this,
- l = a.sidx && xs(a.sidx)
- a.sidx && l && !this.masterPlaylistLoader_.sidxMapping_[l]
- ? ((s = Mo(this.handleManifestRedirects, a.sidx.resolvedUri)),
- (o = function (e, t) {
- if (!u.requestErrored_(e, t, n)) {
- var i,
- e = u.masterPlaylistLoader_.sidxMapping_
- try {
- i = wo(br(t.response).subarray(8))
- } catch (e) {
- return void u.requestErrored_(e, t, n)
- }
- return (e[l] = { sidxInfo: a.sidx, sidx: i }), ws(a, i, a.sidx.resolvedUri), r(!0)
- }
- }),
- (this.request = xu(s, this.vhs_.xhr, function (e, t, i, n) {
- if (e) return o(e, t)
- if (!i || 'mp4' !== i)
- return o(
- {
- status: t.status,
- message: 'Unsupported ' + (i || 'unknown') + ' container type for sidx segment at URL: ' + s,
- response: '',
- playlist: a,
- internal: !0,
- blacklistDuration: 1 / 0,
- code: 2,
- },
- t
- )
- var r = a.sidx.byterange,
- i = r.offset,
- r = r.length
- if (n.length >= r + i) return o(e, { response: n.subarray(i, i + r), status: t.status, uri: t.uri })
- u.request = u.vhs_.xhr({ uri: s, responseType: 'arraybuffer', headers: vu({ byterange: a.sidx.byterange }) }, o)
- })))
- : (this.mediaRequest_ = window.setTimeout(function () {
- return r(!1)
- }, 0))
- }),
- (t.dispose = function () {
- this.trigger('dispose'),
- this.stopRequest(),
- (this.loadedPlaylists_ = {}),
- window.clearTimeout(this.minimumUpdatePeriodTimeout_),
- window.clearTimeout(this.mediaRequest_),
- window.clearTimeout(this.mediaUpdateTimeout),
- (this.mediaUpdateTimeout = null),
- (this.mediaRequest_ = null),
- (this.minimumUpdatePeriodTimeout_ = null),
- this.masterPlaylistLoader_.createMupOnMedia_ &&
- (this.off('loadedmetadata', this.masterPlaylistLoader_.createMupOnMedia_), (this.masterPlaylistLoader_.createMupOnMedia_ = null)),
- this.off()
- }),
- (t.hasPendingRequest = function () {
- return this.request || this.mediaRequest_
- }),
- (t.stopRequest = function () {
- var e
- this.request && ((e = this.request), (this.request = null), (e.onreadystatechange = null), e.abort())
- }),
- (t.media = function (t) {
- var i = this
- if (!t) return this.media_
- if ('HAVE_NOTHING' === this.state) throw new Error('Cannot switch media playlist from ' + this.state)
- var n = this.state
- if ('string' == typeof t) {
- if (!this.masterPlaylistLoader_.master.playlists[t]) throw new Error('Unknown playlist URI: ' + t)
- t = this.masterPlaylistLoader_.master.playlists[t]
- }
- var e = !this.media_ || t.id !== this.media_.id
- if (e && this.loadedPlaylists_[t.id] && this.loadedPlaylists_[t.id].endList)
- return (this.state = 'HAVE_METADATA'), (this.media_ = t), void (e && (this.trigger('mediachanging'), this.trigger('mediachange')))
- e &&
- (this.media_ && this.trigger('mediachanging'),
- this.addSidxSegments_(t, n, function (e) {
- i.haveMetadata({ startingState: n, playlist: t })
- }))
- }),
- (t.haveMetadata = function (e) {
- var t = e.startingState,
- e = e.playlist
- ;(this.state = 'HAVE_METADATA'),
- (this.loadedPlaylists_[e.id] = e),
- (this.mediaRequest_ = null),
- this.refreshMedia_(e.id),
- 'HAVE_MASTER' === t ? this.trigger('loadedmetadata') : this.trigger('mediachange')
- }),
- (t.pause = function () {
- this.masterPlaylistLoader_.createMupOnMedia_ && (this.off('loadedmetadata', this.masterPlaylistLoader_.createMupOnMedia_), (this.masterPlaylistLoader_.createMupOnMedia_ = null)),
- this.stopRequest(),
- window.clearTimeout(this.mediaUpdateTimeout),
- (this.mediaUpdateTimeout = null),
- this.isMaster_ && (window.clearTimeout(this.masterPlaylistLoader_.minimumUpdatePeriodTimeout_), (this.masterPlaylistLoader_.minimumUpdatePeriodTimeout_ = null)),
- 'HAVE_NOTHING' === this.state && (this.started = !1)
- }),
- (t.load = function (e) {
- var t = this
- window.clearTimeout(this.mediaUpdateTimeout), (this.mediaUpdateTimeout = null)
- var i = this.media()
- e
- ? ((e = i ? (i.targetDuration / 2) * 1e3 : 5e3),
- (this.mediaUpdateTimeout = window.setTimeout(function () {
- return t.load()
- }, e)))
- : this.started
- ? i && !i.endList
- ? (this.isMaster_ && !this.minimumUpdatePeriodTimeout_ && (this.trigger('minimumUpdatePeriod'), this.updateMinimumUpdatePeriodTimeout_()),
- this.trigger('mediaupdatetimeout'))
- : this.trigger('loadedplaylist')
- : this.start()
- }),
- (t.start = function () {
- var i = this
- ;(this.started = !0),
- this.isMaster_
- ? this.requestMaster_(function (e, t) {
- i.haveMaster_(), i.hasPendingRequest() || i.media_ || i.media(i.masterPlaylistLoader_.master.playlists[0])
- })
- : (this.mediaRequest_ = window.setTimeout(function () {
- return i.haveMaster_()
- }, 0))
- }),
- (t.requestMaster_ = function (n) {
- var r = this
- this.request = this.vhs_.xhr({ uri: this.masterPlaylistLoader_.srcUrl, withCredentials: this.withCredentials }, function (e, t) {
- if (!r.requestErrored_(e, t)) {
- var i = t.responseText !== r.masterPlaylistLoader_.masterXml_
- return (
- (r.masterPlaylistLoader_.masterXml_ = t.responseText),
- t.responseHeaders && t.responseHeaders.date ? (r.masterLoaded_ = Date.parse(t.responseHeaders.date)) : (r.masterLoaded_ = Date.now()),
- (r.masterPlaylistLoader_.srcUrl = Mo(r.handleManifestRedirects, r.masterPlaylistLoader_.srcUrl, t)),
- i
- ? (r.handleMaster_(),
- void r.syncClientServerClock_(function () {
- return n(t, i)
- }))
- : n(t, i)
- )
- }
- 'HAVE_NOTHING' === r.state && (r.started = !1)
- })
- }),
- (t.syncClientServerClock_ = function (i) {
- var n = this,
- r = Zs(this.masterPlaylistLoader_.masterXml_)
- return null === r
- ? ((this.masterPlaylistLoader_.clientOffset_ = this.masterLoaded_ - Date.now()), i())
- : 'DIRECT' === r.method
- ? ((this.masterPlaylistLoader_.clientOffset_ = r.value - Date.now()), i())
- : void (this.request = this.vhs_.xhr({ uri: pl(this.masterPlaylistLoader_.srcUrl, r.value), method: r.method, withCredentials: this.withCredentials }, function (e, t) {
- if (n.request) {
- if (e) return (n.masterPlaylistLoader_.clientOffset_ = n.masterLoaded_ - Date.now()), i()
- t = 'HEAD' === r.method ? (t.responseHeaders && t.responseHeaders.date ? Date.parse(t.responseHeaders.date) : n.masterLoaded_) : Date.parse(t.responseText)
- ;(n.masterPlaylistLoader_.clientOffset_ = t - Date.now()), i()
- }
- }))
- }),
- (t.haveMaster_ = function () {
- ;(this.state = 'HAVE_MASTER'), this.isMaster_ ? this.trigger('loadedplaylist') : this.media_ || this.media(this.childPlaylist_)
- }),
- (t.handleMaster_ = function () {
- this.mediaRequest_ = null
- var e,
- t,
- i,
- n,
- r = this.masterPlaylistLoader_.master,
- t =
- ((a = {
- masterXml: this.masterPlaylistLoader_.masterXml_,
- srcUrl: this.masterPlaylistLoader_.srcUrl,
- clientOffset: this.masterPlaylistLoader_.clientOffset_,
- sidxMapping: this.masterPlaylistLoader_.sidxMapping_,
- previousManifest: r,
- }),
- (e = a.masterXml),
- (t = a.srcUrl),
- (i = a.clientOffset),
- (n = a.sidxMapping),
- (a = a.previousManifest),
- (a = Js(e, { manifestUri: t, clientOffset: i, sidxMapping: n, previousManifest: a })),
- lu(a, t),
- a)
- r &&
- (t = (function (e, t, i) {
- for (var a = !0, s = Sl(e, { duration: t.duration, minimumUpdatePeriod: t.minimumUpdatePeriod, timelineStarts: t.timelineStarts }), n = 0; n < t.playlists.length; n++) {
- var r,
- o = t.playlists[n]
- o.sidx && ((r = xs(o.sidx)), i && i[r] && i[r].sidx && ws(o, i[r].sidx, o.sidx.resolvedUri))
- o = fu(s, o, Au)
- o && ((s = o), (a = !1))
- }
- return (
- ou(t, function (e, t, i, n) {
- var r
- e.playlists &&
- e.playlists.length &&
- ((r = e.playlists[0].id), (e = fu(s, e.playlists[0], Au)) && (((s = e).mediaGroups[t][i][n].playlists[0] = s.playlists[r]), (a = !1)))
- }),
- (a = t.minimumUpdatePeriod === e.minimumUpdatePeriod && a) ? null : s
- )
- })(r, t, this.masterPlaylistLoader_.sidxMapping_)),
- (this.masterPlaylistLoader_.master = t || r)
- var a = this.masterPlaylistLoader_.master.locations && this.masterPlaylistLoader_.master.locations[0]
- return (
- a && a !== this.masterPlaylistLoader_.srcUrl && (this.masterPlaylistLoader_.srcUrl = a),
- (!r || (t && t.minimumUpdatePeriod !== r.minimumUpdatePeriod)) && this.updateMinimumUpdatePeriodTimeout_(),
- Boolean(t)
- )
- }),
- (t.updateMinimumUpdatePeriodTimeout_ = function () {
- var e = this.masterPlaylistLoader_
- e.createMupOnMedia_ && (e.off('loadedmetadata', e.createMupOnMedia_), (e.createMupOnMedia_ = null)),
- e.minimumUpdatePeriodTimeout_ && (window.clearTimeout(e.minimumUpdatePeriodTimeout_), (e.minimumUpdatePeriodTimeout_ = null))
- var t = e.master && e.master.minimumUpdatePeriod
- 0 === t && (e.media() ? (t = 1e3 * e.media().targetDuration) : ((e.createMupOnMedia_ = e.updateMinimumUpdatePeriodTimeout_), e.one('loadedmetadata', e.createMupOnMedia_))),
- 'number' != typeof t || t <= 0 ? t < 0 && this.logger_('found invalid minimumUpdatePeriod of ' + t + ', not setting a timeout') : this.createMUPTimeout_(t)
- }),
- (t.createMUPTimeout_ = function (e) {
- var t = this.masterPlaylistLoader_
- t.minimumUpdatePeriodTimeout_ = window.setTimeout(function () {
- ;(t.minimumUpdatePeriodTimeout_ = null), t.trigger('minimumUpdatePeriod'), t.createMUPTimeout_(e)
- }, e)
- }),
- (t.refreshXml_ = function () {
- var i = this
- this.requestMaster_(function (e, t) {
- var r, a
- t &&
- (i.media_ && (i.media_ = i.masterPlaylistLoader_.master.playlists[i.media_.id]),
- (i.masterPlaylistLoader_.sidxMapping_ =
- ((t = i.masterPlaylistLoader_.master),
- (r = i.masterPlaylistLoader_.sidxMapping_),
- (a = Pu(t.playlists, r)),
- ou(t, function (e, t, i, n) {
- e.playlists && e.playlists.length && ((e = e.playlists), (a = Sl(a, Pu(e, r))))
- }),
- a)),
- i.addSidxSegments_(i.media(), i.state, function (e) {
- i.refreshMedia_(i.media().id)
- }))
- })
- }),
- (t.refreshMedia_ = function (e) {
- var t = this
- if (!e) throw new Error('refreshMedia_ must take a media id')
- this.media_ && this.isMaster_ && this.handleMaster_()
- var i = this.masterPlaylistLoader_.master.playlists,
- n = !this.media_ || this.media_ !== i[e]
- n ? (this.media_ = i[e]) : this.trigger('playlistunchanged'),
- this.mediaUpdateTimeout ||
- (function e() {
- t.media().endList ||
- (t.mediaUpdateTimeout = window.setTimeout(function () {
- t.trigger('mediaupdatetimeout'), e()
- }, mu(t.media(), Boolean(n))))
- })(),
- this.trigger('loadedplaylist')
- }),
- e
- )
- })(ar),
- El = {
- GOAL_BUFFER_LENGTH: 30,
- MAX_GOAL_BUFFER_LENGTH: 60,
- BACK_BUFFER_LENGTH: 30,
- GOAL_BUFFER_LENGTH_RATE: 1,
- INITIAL_BANDWIDTH: 4194304,
- BANDWIDTH_VARIANCE: 1.2,
- BUFFER_LOW_WATER_LINE: 0,
- MAX_BUFFER_LOW_WATER_LINE: 30,
- EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE: 16,
- BUFFER_LOW_WATER_LINE_RATE: 1,
- BUFFER_HIGH_WATER_LINE: 30,
- },
- x = function (n) {
- return function () {
- var e = (function (t) {
- try {
- return URL.createObjectURL(new Blob([t], { type: 'application/javascript' }))
- } catch (e) {
- var i = new BlobBuilder()
- return i.append(t), URL.createObjectURL(i.getBlob())
- }
- })(n),
- t = Lu(new Worker(e))
- t.objURL = e
- var i = t.terminate
- return (
- (t.on = t.addEventListener),
- (t.off = t.removeEventListener),
- (t.terminate = function () {
- return URL.revokeObjectURL(e), i.call(this)
- }),
- t
- )
- }
- },
- U = function (e) {
- return 'var browserWorkerPolyFill = ' + Lu.toString() + ';\nbrowserWorkerPolyFill(self);\n' + e
- },
- W = function (e) {
- return e
- .toString()
- .replace(/^function.+?{/, '')
- .slice(0, -1)
- },
- kl = x(
- U(
- W(function () {
- var e = function () {
- this.init = function () {
- var a = {}
- ;(this.on = function (e, t) {
- a[e] || (a[e] = []), (a[e] = a[e].concat(t))
- }),
- (this.off = function (e, t) {
- return !!a[e] && ((t = a[e].indexOf(t)), (a[e] = a[e].slice()), a[e].splice(t, 1), -1 < t)
- }),
- (this.trigger = function (e) {
- var t,
- i,
- n,
- r = a[e]
- if (r)
- if (2 === arguments.length) for (i = r.length, t = 0; t < i; ++t) r[t].call(this, arguments[1])
- else {
- for (n = [], t = arguments.length, t = 1; t < arguments.length; ++t) n.push(arguments[t])
- for (i = r.length, t = 0; t < i; ++t) r[t].apply(this, n)
- }
- }),
- (this.dispose = function () {
- a = {}
- })
- }
- }
- ;(e.prototype.pipe = function (t) {
- return (
- this.on('data', function (e) {
- t.push(e)
- }),
- this.on('done', function (e) {
- t.flush(e)
- }),
- this.on('partialdone', function (e) {
- t.partialFlush(e)
- }),
- this.on('endedtimeline', function (e) {
- t.endTimeline(e)
- }),
- this.on('reset', function (e) {
- t.reset(e)
- }),
- t
- )
- }),
- (e.prototype.push = function (e) {
- this.trigger('data', e)
- }),
- (e.prototype.flush = function (e) {
- this.trigger('done', e)
- }),
- (e.prototype.partialFlush = function (e) {
- this.trigger('partialdone', e)
- }),
- (e.prototype.endTimeline = function (e) {
- this.trigger('endedtimeline', e)
- }),
- (e.prototype.reset = function (e) {
- this.trigger('reset', e)
- })
- var u,
- t,
- i,
- n,
- r,
- a,
- s,
- o,
- l,
- c,
- d,
- h,
- p,
- f,
- m,
- g,
- y,
- v,
- _,
- b,
- T,
- S,
- w,
- E,
- k,
- C,
- I,
- x,
- A,
- P,
- L,
- D,
- O,
- M,
- R,
- N,
- U,
- B,
- F,
- j = e,
- H = Math.pow(2, 32),
- q = {
- getUint64: function (e) {
- var t = new DataView(e.buffer, e.byteOffset, e.byteLength)
- return t.getBigUint64 ? ((e = t.getBigUint64(0)) < Number.MAX_SAFE_INTEGER ? Number(e) : e) : t.getUint32(0) * H + t.getUint32(4)
- },
- MAX_UINT32: H,
- },
- V = q.MAX_UINT32
- !(function () {
- if (
- ((T = {
- avc1: [],
- avcC: [],
- btrt: [],
- dinf: [],
- dref: [],
- esds: [],
- ftyp: [],
- hdlr: [],
- mdat: [],
- mdhd: [],
- mdia: [],
- mfhd: [],
- minf: [],
- moof: [],
- moov: [],
- mp4a: [],
- mvex: [],
- mvhd: [],
- pasp: [],
- sdtp: [],
- smhd: [],
- stbl: [],
- stco: [],
- stsc: [],
- stsd: [],
- stsz: [],
- stts: [],
- styp: [],
- tfdt: [],
- tfhd: [],
- traf: [],
- trak: [],
- trun: [],
- trex: [],
- tkhd: [],
- vmhd: [],
- }),
- 'undefined' != typeof Uint8Array)
- ) {
- for (var e in T) T.hasOwnProperty(e) && (T[e] = [e.charCodeAt(0), e.charCodeAt(1), e.charCodeAt(2), e.charCodeAt(3)])
- ;(S = new Uint8Array(['i'.charCodeAt(0), 's'.charCodeAt(0), 'o'.charCodeAt(0), 'm'.charCodeAt(0)])),
- (E = new Uint8Array(['a'.charCodeAt(0), 'v'.charCodeAt(0), 'c'.charCodeAt(0), '1'.charCodeAt(0)])),
- (w = new Uint8Array([0, 0, 0, 1])),
- (k = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 118, 105, 100, 101, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 86, 105, 100, 101, 111, 72, 97, 110, 100, 108, 101, 114, 0])),
- (C = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 115, 111, 117, 110, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 83, 111, 117, 110, 100, 72, 97, 110, 100, 108, 101, 114, 0])),
- (I = { video: k, audio: C }),
- (P = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 12, 117, 114, 108, 32, 0, 0, 0, 1])),
- (A = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])),
- (L = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0])),
- (D = L),
- (O = new Uint8Array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])),
- (M = L),
- (x = new Uint8Array([0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0]))
- }
- })(),
- (u = function (e) {
- for (var t, i = [], n = 0, r = 1; r < arguments.length; r++) i.push(arguments[r])
- for (r = i.length; r--; ) n += i[r].byteLength
- for (t = new Uint8Array(n + 8), new DataView(t.buffer, t.byteOffset, t.byteLength).setUint32(0, t.byteLength), t.set(e, 4), r = 0, n = 8; r < i.length; r++)
- t.set(i[r], n), (n += i[r].byteLength)
- return t
- }),
- (t = function () {
- return u(T.dinf, u(T.dref, P))
- }),
- (i = function (e) {
- return u(
- T.esds,
- new Uint8Array([
- 0,
- 0,
- 0,
- 0,
- 3,
- 25,
- 0,
- 0,
- 0,
- 4,
- 17,
- 64,
- 21,
- 0,
- 6,
- 0,
- 0,
- 0,
- 218,
- 192,
- 0,
- 0,
- 218,
- 192,
- 5,
- 2,
- (e.audioobjecttype << 3) | (e.samplingfrequencyindex >>> 1),
- (e.samplingfrequencyindex << 7) | (e.channelcount << 3),
- 6,
- 1,
- 2,
- ])
- )
- }),
- (f = function (e) {
- return u(T.hdlr, I[e])
- }),
- (p = function (e) {
- var t = new Uint8Array([
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 2,
- 0,
- 0,
- 0,
- 3,
- 0,
- 1,
- 95,
- 144,
- (e.duration >>> 24) & 255,
- (e.duration >>> 16) & 255,
- (e.duration >>> 8) & 255,
- 255 & e.duration,
- 85,
- 196,
- 0,
- 0,
- ])
- return (
- e.samplerate && ((t[12] = (e.samplerate >>> 24) & 255), (t[13] = (e.samplerate >>> 16) & 255), (t[14] = (e.samplerate >>> 8) & 255), (t[15] = 255 & e.samplerate)),
- u(T.mdhd, t)
- )
- }),
- (h = function (e) {
- return u(T.mdia, p(e), f(e.type), a(e))
- }),
- (r = function (e) {
- return u(T.mfhd, new Uint8Array([0, 0, 0, 0, (4278190080 & e) >> 24, (16711680 & e) >> 16, (65280 & e) >> 8, 255 & e]))
- }),
- (a = function (e) {
- return u(T.minf, 'video' === e.type ? u(T.vmhd, x) : u(T.smhd, A), t(), g(e))
- }),
- (We = function (e, t) {
- for (var i = [], n = t.length; n--; ) i[n] = v(t[n])
- return u.apply(null, [T.moof, r(e)].concat(i))
- }),
- (s = function (e) {
- for (var t = e.length, i = []; t--; ) i[t] = c(e[t])
- return u.apply(null, [T.moov, l(4294967295)].concat(i).concat(o(e)))
- }),
- (o = function (e) {
- for (var t = e.length, i = []; t--; ) i[t] = _(e[t])
- return u.apply(null, [T.mvex].concat(i))
- }),
- (l = function (e) {
- e = new Uint8Array([
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 2,
- 0,
- 1,
- 95,
- 144,
- (4278190080 & e) >> 24,
- (16711680 & e) >> 16,
- (65280 & e) >> 8,
- 255 & e,
- 0,
- 1,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 64,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 255,
- 255,
- 255,
- 255,
- ])
- return u(T.mvhd, e)
- }),
- (m = function (e) {
- for (var t, i = e.samples || [], n = new Uint8Array(4 + i.length), r = 0; r < i.length; r++)
- (t = i[r].flags), (n[r + 4] = (t.dependsOn << 4) | (t.isDependedOn << 2) | t.hasRedundancy)
- return u(T.sdtp, n)
- }),
- (g = function (e) {
- return u(T.stbl, y(e), u(T.stts, M), u(T.stsc, D), u(T.stsz, O), u(T.stco, L))
- }),
- (y = function (e) {
- return u(T.stsd, new Uint8Array([0, 0, 0, 0, 0, 0, 0, 1]), ('video' === e.type ? R : N)(e))
- }),
- (R = function (e) {
- for (var t, i, n = e.sps || [], r = e.pps || [], a = [], s = [], o = 0; o < n.length; o++)
- a.push((65280 & n[o].byteLength) >>> 8), a.push(255 & n[o].byteLength), (a = a.concat(Array.prototype.slice.call(n[o])))
- for (o = 0; o < r.length; o++) s.push((65280 & r[o].byteLength) >>> 8), s.push(255 & r[o].byteLength), (s = s.concat(Array.prototype.slice.call(r[o])))
- return (
- (t = [
- T.avc1,
- new Uint8Array([
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- (65280 & e.width) >> 8,
- 255 & e.width,
- (65280 & e.height) >> 8,
- 255 & e.height,
- 0,
- 72,
- 0,
- 0,
- 0,
- 72,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 19,
- 118,
- 105,
- 100,
- 101,
- 111,
- 106,
- 115,
- 45,
- 99,
- 111,
- 110,
- 116,
- 114,
- 105,
- 98,
- 45,
- 104,
- 108,
- 115,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 24,
- 17,
- 17,
- ]),
- u(T.avcC, new Uint8Array([1, e.profileIdc, e.profileCompatibility, e.levelIdc, 255].concat([n.length], a, [r.length], s))),
- u(T.btrt, new Uint8Array([0, 28, 156, 128, 0, 45, 198, 192, 0, 45, 198, 192])),
- ]),
- e.sarRatio &&
- ((i = e.sarRatio[0]),
- (e = e.sarRatio[1]),
- t.push(
- u(
- T.pasp,
- new Uint8Array([
- (4278190080 & i) >> 24,
- (16711680 & i) >> 16,
- (65280 & i) >> 8,
- 255 & i,
- (4278190080 & e) >> 24,
- (16711680 & e) >> 16,
- (65280 & e) >> 8,
- 255 & e,
- ])
- )
- )),
- u.apply(null, t)
- )
- }),
- (N = function (e) {
- return u(
- T.mp4a,
- new Uint8Array([
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- (65280 & e.channelcount) >> 8,
- 255 & e.channelcount,
- (65280 & e.samplesize) >> 8,
- 255 & e.samplesize,
- 0,
- 0,
- 0,
- 0,
- (65280 & e.samplerate) >> 8,
- 255 & e.samplerate,
- 0,
- 0,
- ]),
- i(e)
- )
- }),
- (d = function (e) {
- e = new Uint8Array([
- 0,
- 0,
- 0,
- 7,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- (4278190080 & e.id) >> 24,
- (16711680 & e.id) >> 16,
- (65280 & e.id) >> 8,
- 255 & e.id,
- 0,
- 0,
- 0,
- 0,
- (4278190080 & e.duration) >> 24,
- (16711680 & e.duration) >> 16,
- (65280 & e.duration) >> 8,
- 255 & e.duration,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 1,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 64,
- 0,
- 0,
- 0,
- (65280 & e.width) >> 8,
- 255 & e.width,
- 0,
- 0,
- (65280 & e.height) >> 8,
- 255 & e.height,
- 0,
- 0,
- ])
- return u(T.tkhd, e)
- }),
- (v = function (e) {
- var t,
- i = u(
- T.tfhd,
- new Uint8Array([0, 0, 0, 58, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
- ),
- n = Math.floor(e.baseMediaDecodeTime / V),
- r = Math.floor(e.baseMediaDecodeTime % V),
- n = u(T.tfdt, new Uint8Array([1, 0, 0, 0, (n >>> 24) & 255, (n >>> 16) & 255, (n >>> 8) & 255, 255 & n, (r >>> 24) & 255, (r >>> 16) & 255, (r >>> 8) & 255, 255 & r]))
- return 'audio' === e.type ? ((t = b(e, 92)), u(T.traf, i, n, t)) : ((r = m(e)), (t = b(e, r.length + 92)), u(T.traf, i, n, t, r))
- }),
- (c = function (e) {
- return (e.duration = e.duration || 4294967295), u(T.trak, d(e), h(e))
- }),
- (_ = function (e) {
- var t = new Uint8Array([0, 0, 0, 0, (4278190080 & e.id) >> 24, (16711680 & e.id) >> 16, (65280 & e.id) >> 8, 255 & e.id, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1])
- return 'video' !== e.type && (t[t.length - 1] = 0), u(T.trex, t)
- }),
- (U = function (e, t) {
- var i = 0,
- n = 0,
- r = 0,
- a = 0
- return (
- e.length && (void 0 !== e[0].duration && (i = 1), void 0 !== e[0].size && (n = 2), void 0 !== e[0].flags && (r = 4), void 0 !== e[0].compositionTimeOffset && (a = 8)),
- [
- 0,
- 0,
- i | n | r | a,
- 1,
- (4278190080 & e.length) >>> 24,
- (16711680 & e.length) >>> 16,
- (65280 & e.length) >>> 8,
- 255 & e.length,
- (4278190080 & t) >>> 24,
- (16711680 & t) >>> 16,
- (65280 & t) >>> 8,
- 255 & t,
- ]
- )
- }),
- (B = function (e, t) {
- var i,
- n,
- r,
- a,
- s = e.samples || []
- for (t += 20 + 16 * s.length, t = U(s, t), (n = new Uint8Array(t.length + 16 * s.length)).set(t), i = t.length, a = 0; a < s.length; a++)
- (r = s[a]),
- (n[i++] = (4278190080 & r.duration) >>> 24),
- (n[i++] = (16711680 & r.duration) >>> 16),
- (n[i++] = (65280 & r.duration) >>> 8),
- (n[i++] = 255 & r.duration),
- (n[i++] = (4278190080 & r.size) >>> 24),
- (n[i++] = (16711680 & r.size) >>> 16),
- (n[i++] = (65280 & r.size) >>> 8),
- (n[i++] = 255 & r.size),
- (n[i++] = (r.flags.isLeading << 2) | r.flags.dependsOn),
- (n[i++] = (r.flags.isDependedOn << 6) | (r.flags.hasRedundancy << 4) | (r.flags.paddingValue << 1) | r.flags.isNonSyncSample),
- (n[i++] = 61440 & r.flags.degradationPriority),
- (n[i++] = 15 & r.flags.degradationPriority),
- (n[i++] = (4278190080 & r.compositionTimeOffset) >>> 24),
- (n[i++] = (16711680 & r.compositionTimeOffset) >>> 16),
- (n[i++] = (65280 & r.compositionTimeOffset) >>> 8),
- (n[i++] = 255 & r.compositionTimeOffset)
- return u(T.trun, n)
- }),
- (F = function (e, t) {
- var i,
- n,
- r,
- a,
- s = e.samples || []
- for (t += 20 + 8 * s.length, t = U(s, t), (i = new Uint8Array(t.length + 8 * s.length)).set(t), n = t.length, a = 0; a < s.length; a++)
- (r = s[a]),
- (i[n++] = (4278190080 & r.duration) >>> 24),
- (i[n++] = (16711680 & r.duration) >>> 16),
- (i[n++] = (65280 & r.duration) >>> 8),
- (i[n++] = 255 & r.duration),
- (i[n++] = (4278190080 & r.size) >>> 24),
- (i[n++] = (16711680 & r.size) >>> 16),
- (i[n++] = (65280 & r.size) >>> 8),
- (i[n++] = 255 & r.size)
- return u(T.trun, i)
- }),
- (b = function (e, t) {
- return ('audio' === e.type ? F : B)(e, t)
- })
- n = function () {
- return u(T.ftyp, S, w, S, E)
- }
- function W(e, t) {
- var i = { size: 0, flags: { isLeading: 0, dependsOn: 1, isDependedOn: 0, hasRedundancy: 0, degradationPriority: 0, isNonSyncSample: 1 } }
- return (
- (i.dataOffset = t),
- (i.compositionTimeOffset = e.pts - e.dts),
- (i.duration = e.duration),
- (i.size = 4 * e.length),
- (i.size += e.byteLength),
- e.keyFrame && ((i.flags.dependsOn = 2), (i.flags.isNonSyncSample = 0)),
- i
- )
- }
- function G(e) {
- for (var t = []; e--; ) t.push(0)
- return t
- }
- function z() {
- var e, i
- return (
- X ||
- ((e = {
- 96e3: [ie, [227, 64], G(154), [56]],
- 88200: [ie, [231], G(170), [56]],
- 64e3: [ie, [248, 192], G(240), [56]],
- 48e3: [ie, [255, 192], G(268), [55, 148, 128], G(54), [112]],
- 44100: [ie, [255, 192], G(268), [55, 163, 128], G(84), [112]],
- 32e3: [ie, [255, 192], G(268), [55, 234], G(226), [112]],
- 24e3: [ie, [255, 192], G(268), [55, 255, 128], G(268), [111, 112], G(126), [224]],
- 16e3: [ie, [255, 192], G(268), [55, 255, 128], G(268), [111, 255], G(269), [223, 108], G(195), [1, 192]],
- 12e3: [ne, G(268), [3, 127, 248], G(268), [6, 255, 240], G(268), [13, 255, 224], G(268), [27, 253, 128], G(259), [56]],
- 11025: [ne, G(268), [3, 127, 248], G(268), [6, 255, 240], G(268), [13, 255, 224], G(268), [27, 255, 192], G(268), [55, 175, 128], G(108), [112]],
- 8e3: [ne, G(268), [3, 121, 16], G(47), [7]],
- }),
- (i = e),
- (X = Object.keys(i).reduce(function (e, t) {
- return (
- (e[t] = new Uint8Array(
- i[t].reduce(function (e, t) {
- return e.concat(t)
- }, [])
- )),
- e
- )
- }, {}))),
- X
- )
- }
- var X,
- K = function (e) {
- return u(T.mdat, e)
- },
- Y = We,
- Q = function (e) {
- var t = n(),
- i = s(e),
- e = new Uint8Array(t.byteLength + i.byteLength)
- return e.set(t), e.set(i, t.byteLength), e
- },
- $ = function (e) {
- var t,
- i,
- n = [],
- r = []
- for (r.byteLength = 0, r.nalCount = 0, r.duration = 0, t = n.byteLength = 0; t < e.length; t++)
- 'access_unit_delimiter_rbsp' === (i = e[t]).nalUnitType
- ? (n.length && ((n.duration = i.dts - n.dts), (r.byteLength += n.byteLength), (r.nalCount += n.length), (r.duration += n.duration), r.push(n)),
- ((n = [i]).byteLength = i.data.byteLength),
- (n.pts = i.pts),
- (n.dts = i.dts))
- : ('slice_layer_without_partitioning_rbsp_idr' === i.nalUnitType && (n.keyFrame = !0), (n.duration = i.dts - n.dts), (n.byteLength += i.data.byteLength), n.push(i))
- return (
- r.length && (!n.duration || n.duration <= 0) && (n.duration = r[r.length - 1].duration),
- (r.byteLength += n.byteLength),
- (r.nalCount += n.length),
- (r.duration += n.duration),
- r.push(n),
- r
- )
- },
- J = function (e) {
- var t,
- i,
- n = [],
- r = []
- for (
- n.byteLength = 0,
- n.nalCount = 0,
- n.duration = 0,
- n.pts = e[0].pts,
- n.dts = e[0].dts,
- r.byteLength = 0,
- r.nalCount = 0,
- r.duration = 0,
- r.pts = e[0].pts,
- r.dts = e[0].dts,
- t = 0;
- t < e.length;
- t++
- )
- (i = e[t]).keyFrame
- ? (n.length && (r.push(n), (r.byteLength += n.byteLength), (r.nalCount += n.nalCount), (r.duration += n.duration)),
- ((n = [i]).nalCount = i.length),
- (n.byteLength = i.byteLength),
- (n.pts = i.pts),
- (n.dts = i.dts),
- (n.duration = i.duration))
- : ((n.duration += i.duration), (n.nalCount += i.length), (n.byteLength += i.byteLength), n.push(i))
- return (
- r.length && n.duration <= 0 && (n.duration = r[r.length - 1].duration),
- (r.byteLength += n.byteLength),
- (r.nalCount += n.nalCount),
- (r.duration += n.duration),
- r.push(n),
- r
- )
- },
- Z = function (e) {
- var t
- return (
- !e[0][0].keyFrame &&
- 1 < e.length &&
- ((t = e.shift()), (e.byteLength -= t.byteLength), (e.nalCount -= t.nalCount), (e[0][0].dts = t.dts), (e[0][0].pts = t.pts), (e[0][0].duration += t.duration)),
- e
- )
- },
- ee = function (e, t) {
- for (var i, n, r, a = t || 0, s = [], o = 0; o < e.length; o++) for (n = e[o], i = 0; i < n.length; i++) (r = n[i]), (a += (r = W(r, a)).size), s.push(r)
- return s
- },
- te = function (e) {
- for (var t, i, n, r, a, s = 0, o = e.byteLength, u = e.nalCount, l = new Uint8Array(o + 4 * u), c = new DataView(l.buffer), d = 0; d < e.length; d++)
- for (n = e[d], t = 0; t < n.length; t++)
- for (r = n[t], i = 0; i < r.length; i++) (a = r[i]), c.setUint32(s, a.data.byteLength), l.set(a.data, (s += 4)), (s += a.data.byteLength)
- return l
- },
- ie = [33, 16, 5, 32, 164, 27],
- ne = [33, 65, 108, 84, 1, 2, 4, 8, 168, 2, 4, 8, 17, 191, 252],
- re = function (e) {
- return 9e4 * e
- },
- ae = function (e, t) {
- return e * t
- },
- se = function (e) {
- return e / 9e4
- },
- oe = function (e, t) {
- return e / t
- },
- ue = 9e4,
- le = re,
- ce = se,
- de = function (e, t) {
- return re(oe(e, t))
- },
- he = function (e, t) {
- return ae(se(e), t)
- },
- pe = function (e, t, i) {
- return se(i ? e : e - t)
- },
- fe = function (e, t, i, n) {
- var r,
- a,
- s,
- o,
- u,
- l,
- c = 0,
- d = 0
- if (
- t.length &&
- ((r = de(e.baseMediaDecodeTime, e.samplerate)),
- (a = Math.ceil(ue / (e.samplerate / 1024))),
- i && n && ((s = r - Math.max(i, n)), (d = (c = Math.floor(s / a)) * a)),
- !(c < 1 || ue / 2 < d))
- ) {
- for (o = (o = z()[e.samplerate]) || t[0].data, u = 0; u < c; u++) (l = t[0]), t.splice(0, 0, { data: o, dts: l.dts - a, pts: l.pts - a })
- return (e.baseMediaDecodeTime -= Math.floor(he(d, e.samplerate))), d
- }
- },
- me = function (e, t, i) {
- return t.minSegmentDts >= i
- ? e
- : ((t.minSegmentDts = 1 / 0),
- e.filter(function (e) {
- return e.dts >= i && ((t.minSegmentDts = Math.min(t.minSegmentDts, e.dts)), (t.minSegmentPts = t.minSegmentDts), !0)
- }))
- },
- ge = function (e) {
- for (var t, i = [], n = 0; n < e.length; n++) (t = e[n]), i.push({ size: t.data.byteLength, duration: 1024 })
- return i
- },
- ye = function (e) {
- for (
- var t,
- i = 0,
- n = new Uint8Array(
- (function (e) {
- for (var t = 0, i = 0; i < e.length; i++) t += e[i].data.byteLength
- return t
- })(e)
- ),
- r = 0;
- r < e.length;
- r++
- )
- (t = e[r]), n.set(t.data, i), (i += t.data.byteLength)
- return n
- },
- ve = ue,
- _e = function (e) {
- delete e.minSegmentDts, delete e.maxSegmentDts, delete e.minSegmentPts, delete e.maxSegmentPts
- },
- be = function (e, t) {
- var i = e.minSegmentDts
- return (
- t || (i -= e.timelineStartInfo.dts),
- (t = e.timelineStartInfo.baseMediaDecodeTime),
- (t += i),
- (t = Math.max(0, t)),
- 'audio' === e.type && ((t *= e.samplerate / ve), (t = Math.floor(t))),
- t
- )
- },
- Te = function (e, t) {
- 'number' == typeof t.pts &&
- (void 0 === e.timelineStartInfo.pts && (e.timelineStartInfo.pts = t.pts),
- void 0 === e.minSegmentPts ? (e.minSegmentPts = t.pts) : (e.minSegmentPts = Math.min(e.minSegmentPts, t.pts)),
- void 0 === e.maxSegmentPts ? (e.maxSegmentPts = t.pts) : (e.maxSegmentPts = Math.max(e.maxSegmentPts, t.pts))),
- 'number' == typeof t.dts &&
- (void 0 === e.timelineStartInfo.dts && (e.timelineStartInfo.dts = t.dts),
- void 0 === e.minSegmentDts ? (e.minSegmentDts = t.dts) : (e.minSegmentDts = Math.min(e.minSegmentDts, t.dts)),
- void 0 === e.maxSegmentDts ? (e.maxSegmentDts = t.dts) : (e.maxSegmentDts = Math.max(e.maxSegmentDts, t.dts)))
- },
- Se = function (e) {
- for (var t = 0, i = { payloadType: -1, payloadSize: 0 }, n = 0, r = 0; t < e.byteLength && 128 !== e[t]; ) {
- for (; 255 === e[t]; ) (n += 255), t++
- for (n += e[t++]; 255 === e[t]; ) (r += 255), t++
- if (((r += e[t++]), !i.payload && 4 === n)) {
- if ('GA94' === String.fromCharCode(e[t + 3], e[t + 4], e[t + 5], e[t + 6])) {
- ;(i.payloadType = n), (i.payloadSize = r), (i.payload = e.subarray(t, t + r))
- break
- }
- i.payload = void 0
- }
- ;(t += r), (r = n = 0)
- }
- return i
- },
- we = function (e) {
- return 181 !== e.payload[0] ||
- 49 != ((e.payload[1] << 8) | e.payload[2]) ||
- 'GA94' !== String.fromCharCode(e.payload[3], e.payload[4], e.payload[5], e.payload[6]) ||
- 3 !== e.payload[7]
- ? null
- : e.payload.subarray(8, e.payload.length - 1)
- },
- Ee = function (e, t) {
- var i,
- n,
- r,
- a,
- s = []
- if (!(64 & t[0])) return s
- for (n = 31 & t[0], i = 0; i < n; i++) (a = { type: 3 & t[2 + (r = 3 * i)], pts: e }), 4 & t[2 + r] && ((a.ccData = (t[3 + r] << 8) | t[4 + r]), s.push(a))
- return s
- },
- ke = function (e) {
- for (var t = e.byteLength, i = [], n = 1; n < t - 2; ) 0 === e[n] && 0 === e[n + 1] && 3 === e[n + 2] ? (i.push(n + 2), (n += 2)) : n++
- if (0 === i.length) return e
- for (var r = t - i.length, a = new Uint8Array(r), s = 0, n = 0; n < r; s++, n++) s === i[0] && (s++, i.shift()), (a[n] = e[s])
- return a
- },
- Ce = 4,
- Ie = function e(t) {
- ;(t = t || {}),
- e.prototype.init.call(this),
- (this.parse708captions_ = 'boolean' != typeof t.parse708captions || t.parse708captions),
- (this.captionPackets_ = []),
- (this.ccStreams_ = [new Ue(0, 0), new Ue(0, 1), new Ue(1, 0), new Ue(1, 1)]),
- this.parse708captions_ && (this.cc708Stream_ = new De({ captionServices: t.captionServices })),
- this.reset(),
- this.ccStreams_.forEach(function (e) {
- e.on('data', this.trigger.bind(this, 'data')), e.on('partialdone', this.trigger.bind(this, 'partialdone')), e.on('done', this.trigger.bind(this, 'done'))
- }, this),
- this.parse708captions_ &&
- (this.cc708Stream_.on('data', this.trigger.bind(this, 'data')),
- this.cc708Stream_.on('partialdone', this.trigger.bind(this, 'partialdone')),
- this.cc708Stream_.on('done', this.trigger.bind(this, 'done')))
- }
- ;((Ie.prototype = new j()).push = function (e) {
- var t, i
- if ('sei_rbsp' === e.nalUnitType && (t = Se(e.escapedRBSP)).payload && t.payloadType === Ce && (i = we(t)))
- if (e.dts < this.latestDts_) this.ignoreNextEqualDts_ = !0
- else {
- if (e.dts === this.latestDts_ && this.ignoreNextEqualDts_) return this.numSameDts_--, void (this.numSameDts_ || (this.ignoreNextEqualDts_ = !1))
- ;(i = Ee(e.pts, i)),
- (this.captionPackets_ = this.captionPackets_.concat(i)),
- this.latestDts_ !== e.dts && (this.numSameDts_ = 0),
- this.numSameDts_++,
- (this.latestDts_ = e.dts)
- }
- }),
- (Ie.prototype.flushCCStreams = function (t) {
- this.ccStreams_.forEach(function (e) {
- return 'flush' === t ? e.flush() : e.partialFlush()
- }, this)
- }),
- (Ie.prototype.flushStream = function (e) {
- this.captionPackets_.length &&
- (this.captionPackets_.forEach(function (e, t) {
- e.presortIndex = t
- }),
- this.captionPackets_.sort(function (e, t) {
- return e.pts === t.pts ? e.presortIndex - t.presortIndex : e.pts - t.pts
- }),
- this.captionPackets_.forEach(function (e) {
- e.type < 2 ? this.dispatchCea608Packet(e) : this.dispatchCea708Packet(e)
- }, this),
- (this.captionPackets_.length = 0)),
- this.flushCCStreams(e)
- }),
- (Ie.prototype.flush = function () {
- return this.flushStream('flush')
- }),
- (Ie.prototype.partialFlush = function () {
- return this.flushStream('partialFlush')
- }),
- (Ie.prototype.reset = function () {
- ;(this.latestDts_ = null),
- (this.ignoreNextEqualDts_ = !1),
- (this.numSameDts_ = 0),
- (this.activeCea608Channel_ = [null, null]),
- this.ccStreams_.forEach(function (e) {
- e.reset()
- })
- }),
- (Ie.prototype.dispatchCea608Packet = function (e) {
- this.setsTextOrXDSActive(e)
- ? (this.activeCea608Channel_[e.type] = null)
- : this.setsChannel1Active(e)
- ? (this.activeCea608Channel_[e.type] = 0)
- : this.setsChannel2Active(e) && (this.activeCea608Channel_[e.type] = 1),
- null !== this.activeCea608Channel_[e.type] && this.ccStreams_[(e.type << 1) + this.activeCea608Channel_[e.type]].push(e)
- }),
- (Ie.prototype.setsChannel1Active = function (e) {
- return 4096 == (30720 & e.ccData)
- }),
- (Ie.prototype.setsChannel2Active = function (e) {
- return 6144 == (30720 & e.ccData)
- }),
- (Ie.prototype.setsTextOrXDSActive = function (e) {
- return 256 == (28928 & e.ccData) || 4138 == (30974 & e.ccData) || 6186 == (30974 & e.ccData)
- }),
- (Ie.prototype.dispatchCea708Packet = function (e) {
- this.parse708captions_ && this.cc708Stream_.push(e)
- })
- function xe(e) {
- return (32 <= e && e <= 127) || (160 <= e && e <= 255)
- }
- function Ae(e) {
- ;(this.windowNum = e), this.reset()
- }
- var Pe = {
- 127: 9834,
- 4128: 32,
- 4129: 160,
- 4133: 8230,
- 4138: 352,
- 4140: 338,
- 4144: 9608,
- 4145: 8216,
- 4146: 8217,
- 4147: 8220,
- 4148: 8221,
- 4149: 8226,
- 4153: 8482,
- 4154: 353,
- 4156: 339,
- 4157: 8480,
- 4159: 376,
- 4214: 8539,
- 4215: 8540,
- 4216: 8541,
- 4217: 8542,
- 4218: 9168,
- 4219: 9124,
- 4220: 9123,
- 4221: 9135,
- 4222: 9126,
- 4223: 9121,
- 4256: 12600,
- }
- ;(Ae.prototype.reset = function () {
- this.clearText(),
- (this.pendingNewLine = !1),
- (this.winAttr = {}),
- (this.penAttr = {}),
- (this.penLoc = {}),
- (this.penColor = {}),
- (this.visible = 0),
- (this.rowLock = 0),
- (this.columnLock = 0),
- (this.priority = 0),
- (this.relativePositioning = 0),
- (this.anchorVertical = 0),
- (this.anchorHorizontal = 0),
- (this.anchorPoint = 0),
- (this.rowCount = 1),
- (this.virtualRowCount = this.rowCount + 1),
- (this.columnCount = 41),
- (this.windowStyle = 0),
- (this.penStyle = 0)
- }),
- (Ae.prototype.getText = function () {
- return this.rows.join('\n')
- }),
- (Ae.prototype.clearText = function () {
- ;(this.rows = ['']), (this.rowIdx = 0)
- }),
- (Ae.prototype.newLine = function (e) {
- for (
- this.rows.length >= this.virtualRowCount && 'function' == typeof this.beforeRowOverflow && this.beforeRowOverflow(e),
- 0 < this.rows.length && (this.rows.push(''), this.rowIdx++);
- this.rows.length > this.virtualRowCount;
- )
- this.rows.shift(), this.rowIdx--
- }),
- (Ae.prototype.isEmpty = function () {
- return 0 === this.rows.length || (1 === this.rows.length && '' === this.rows[0])
- }),
- (Ae.prototype.addText = function (e) {
- this.rows[this.rowIdx] += e
- }),
- (Ae.prototype.backspace = function () {
- var e
- this.isEmpty() || ((e = this.rows[this.rowIdx]), (this.rows[this.rowIdx] = e.substr(0, e.length - 1)))
- })
- function Le(e, t, i) {
- ;(this.serviceNum = e), (this.text = ''), (this.currentWindow = new Ae(-1)), (this.windows = []), (this.stream = i), 'string' == typeof t && this.createTextDecoder(t)
- }
- ;(Le.prototype.init = function (e, t) {
- this.startPts = e
- for (var i = 0; i < 8; i++) (this.windows[i] = new Ae(i)), 'function' == typeof t && (this.windows[i].beforeRowOverflow = t)
- }),
- (Le.prototype.setCurrentWindow = function (e) {
- this.currentWindow = this.windows[e]
- }),
- (Le.prototype.createTextDecoder = function (t) {
- if ('undefined' == typeof TextDecoder) this.stream.trigger('log', { level: 'warn', message: 'The `encoding` option is unsupported without TextDecoder support' })
- else
- try {
- this.textDecoder_ = new TextDecoder(t)
- } catch (e) {
- this.stream.trigger('log', { level: 'warn', message: 'TextDecoder could not be created with ' + t + ' encoding. ' + e })
- }
- })
- var De = function e(t) {
- ;(t = t || {}), e.prototype.init.call(this)
- var i,
- n = this,
- r = t.captionServices || {},
- a = {}
- Object.keys(r).forEach(function (e) {
- ;(i = r[e]), /^SERVICE/.test(e) && (a[e] = i.encoding)
- }),
- (this.serviceEncodings = a),
- (this.current708Packet = null),
- (this.services = {}),
- (this.push = function (e) {
- ;(3 === e.type || null === n.current708Packet) && n.new708Packet(), n.add708Bytes(e)
- })
- }
- ;(De.prototype = new j()),
- (De.prototype.new708Packet = function () {
- null !== this.current708Packet && this.push708Packet(), (this.current708Packet = { data: [], ptsVals: [] })
- }),
- (De.prototype.add708Bytes = function (e) {
- var t = e.ccData,
- i = t >>> 8,
- t = 255 & t
- this.current708Packet.ptsVals.push(e.pts), this.current708Packet.data.push(i), this.current708Packet.data.push(t)
- }),
- (De.prototype.push708Packet = function () {
- var e,
- t = this.current708Packet,
- i = t.data,
- n = null,
- r = 0,
- a = i[r++]
- for (t.seq = a >> 6, t.sizeCode = 63 & a; r < i.length; r++)
- (e = 31 & (a = i[r++])), 7 === (n = a >> 5) && 0 < e && (n = i[r++]), this.pushServiceBlock(n, r, e), 0 < e && (r += e - 1)
- }),
- (De.prototype.pushServiceBlock = function (e, t, i) {
- for (var n, r = t, a = this.current708Packet.data, s = (s = this.services[e]) || this.initService(e, r); r < t + i && r < a.length; r++)
- (n = a[r]),
- xe(n)
- ? (r = this.handleText(r, s))
- : 24 === n
- ? (r = this.multiByteCharacter(r, s))
- : 16 === n
- ? (r = this.extendedCommands(r, s))
- : 128 <= n && n <= 135
- ? (r = this.setCurrentWindow(r, s))
- : 152 <= n && n <= 159
- ? (r = this.defineWindow(r, s))
- : 136 === n
- ? (r = this.clearWindows(r, s))
- : 140 === n
- ? (r = this.deleteWindows(r, s))
- : 137 === n
- ? (r = this.displayWindows(r, s))
- : 138 === n
- ? (r = this.hideWindows(r, s))
- : 139 === n
- ? (r = this.toggleWindows(r, s))
- : 151 === n
- ? (r = this.setWindowAttributes(r, s))
- : 144 === n
- ? (r = this.setPenAttributes(r, s))
- : 145 === n
- ? (r = this.setPenColor(r, s))
- : 146 === n
- ? (r = this.setPenLocation(r, s))
- : 143 === n
- ? (s = this.reset(r, s))
- : 8 === n
- ? s.currentWindow.backspace()
- : 12 === n
- ? s.currentWindow.clearText()
- : 13 === n
- ? (s.currentWindow.pendingNewLine = !0)
- : 14 === n
- ? s.currentWindow.clearText()
- : 141 === n && r++
- }),
- (De.prototype.extendedCommands = function (e, t) {
- var i = this.current708Packet.data[++e]
- return (e = xe(i) ? this.handleText(e, t, { isExtended: !0 }) : e)
- }),
- (De.prototype.getPts = function (e) {
- return this.current708Packet.ptsVals[Math.floor(e / 2)]
- }),
- (De.prototype.initService = function (t, e) {
- var i,
- n = 'SERVICE' + t,
- r = this
- return (
- n in this.serviceEncodings && (i = this.serviceEncodings[n]),
- (this.services[t] = new Le(t, i, r)),
- this.services[t].init(this.getPts(e), function (e) {
- r.flushDisplayed(e, r.services[t])
- }),
- this.services[t]
- )
- }),
- (De.prototype.handleText = function (e, t, i) {
- var n,
- r = i && i.isExtended,
- a = i && i.isMultiByte,
- s = this.current708Packet.data,
- o = r ? 4096 : 0,
- u = s[e],
- i = s[e + 1],
- s = t.currentWindow,
- l =
- t.textDecoder_ && !r
- ? (a ? ((n = [u, i]), e++) : (n = [u]), t.textDecoder_.decode(new Uint8Array(n)))
- : ((l = Pe[(u = o | u)] || u), 4096 & u && u === l ? '' : String.fromCharCode(l))
- return s.pendingNewLine && !s.isEmpty() && s.newLine(this.getPts(e)), (s.pendingNewLine = !1), s.addText(l), e
- }),
- (De.prototype.multiByteCharacter = function (e, t) {
- var i = this.current708Packet.data,
- n = i[e + 1],
- i = i[e + 2]
- return (e = xe(n) && xe(i) ? this.handleText(++e, t, { isMultiByte: !0 }) : e)
- }),
- (De.prototype.setCurrentWindow = function (e, t) {
- var i = this.current708Packet.data[e]
- return t.setCurrentWindow(7 & i), e
- }),
- (De.prototype.defineWindow = function (e, t) {
- var i = this.current708Packet.data,
- n = i[e]
- t.setCurrentWindow(7 & n)
- ;(t = t.currentWindow), (n = i[++e])
- return (
- (t.visible = (32 & n) >> 5),
- (t.rowLock = (16 & n) >> 4),
- (t.columnLock = (8 & n) >> 3),
- (t.priority = 7 & n),
- (n = i[++e]),
- (t.relativePositioning = (128 & n) >> 7),
- (t.anchorVertical = 127 & n),
- (n = i[++e]),
- (t.anchorHorizontal = n),
- (n = i[++e]),
- (t.anchorPoint = (240 & n) >> 4),
- (t.rowCount = 15 & n),
- (n = i[++e]),
- (t.columnCount = 63 & n),
- (n = i[++e]),
- (t.windowStyle = (56 & n) >> 3),
- (t.penStyle = 7 & n),
- (t.virtualRowCount = t.rowCount + 1),
- e
- )
- }),
- (De.prototype.setWindowAttributes = function (e, t) {
- var i = this.current708Packet.data,
- n = i[e],
- t = t.currentWindow.winAttr,
- n = i[++e]
- return (
- (t.fillOpacity = (192 & n) >> 6),
- (t.fillRed = (48 & n) >> 4),
- (t.fillGreen = (12 & n) >> 2),
- (t.fillBlue = 3 & n),
- (n = i[++e]),
- (t.borderType = (192 & n) >> 6),
- (t.borderRed = (48 & n) >> 4),
- (t.borderGreen = (12 & n) >> 2),
- (t.borderBlue = 3 & n),
- (n = i[++e]),
- (t.borderType += (128 & n) >> 5),
- (t.wordWrap = (64 & n) >> 6),
- (t.printDirection = (48 & n) >> 4),
- (t.scrollDirection = (12 & n) >> 2),
- (t.justify = 3 & n),
- (n = i[++e]),
- (t.effectSpeed = (240 & n) >> 4),
- (t.effectDirection = (12 & n) >> 2),
- (t.displayEffect = 3 & n),
- e
- )
- }),
- (De.prototype.flushDisplayed = function (e, t) {
- for (var i = [], n = 0; n < 8; n++) t.windows[n].visible && !t.windows[n].isEmpty() && i.push(t.windows[n].getText())
- ;(t.endPts = e), (t.text = i.join('\n\n')), this.pushCaption(t), (t.startPts = e)
- }),
- (De.prototype.pushCaption = function (e) {
- '' !== e.text && (this.trigger('data', { startPts: e.startPts, endPts: e.endPts, text: e.text, stream: 'cc708_' + e.serviceNum }), (e.text = ''), (e.startPts = e.endPts))
- }),
- (De.prototype.displayWindows = function (e, t) {
- var i = this.current708Packet.data[++e],
- n = this.getPts(e)
- this.flushDisplayed(n, t)
- for (var r = 0; r < 8; r++) i & (1 << r) && (t.windows[r].visible = 1)
- return e
- }),
- (De.prototype.hideWindows = function (e, t) {
- var i = this.current708Packet.data[++e],
- n = this.getPts(e)
- this.flushDisplayed(n, t)
- for (var r = 0; r < 8; r++) i & (1 << r) && (t.windows[r].visible = 0)
- return e
- }),
- (De.prototype.toggleWindows = function (e, t) {
- var i = this.current708Packet.data[++e],
- n = this.getPts(e)
- this.flushDisplayed(n, t)
- for (var r = 0; r < 8; r++) i & (1 << r) && (t.windows[r].visible ^= 1)
- return e
- }),
- (De.prototype.clearWindows = function (e, t) {
- var i = this.current708Packet.data[++e],
- n = this.getPts(e)
- this.flushDisplayed(n, t)
- for (var r = 0; r < 8; r++) i & (1 << r) && t.windows[r].clearText()
- return e
- }),
- (De.prototype.deleteWindows = function (e, t) {
- var i = this.current708Packet.data[++e],
- n = this.getPts(e)
- this.flushDisplayed(n, t)
- for (var r = 0; r < 8; r++) i & (1 << r) && t.windows[r].reset()
- return e
- }),
- (De.prototype.setPenAttributes = function (e, t) {
- var i = this.current708Packet.data,
- n = i[e],
- t = t.currentWindow.penAttr,
- n = i[++e]
- return (
- (t.textTag = (240 & n) >> 4),
- (t.offset = (12 & n) >> 2),
- (t.penSize = 3 & n),
- (n = i[++e]),
- (t.italics = (128 & n) >> 7),
- (t.underline = (64 & n) >> 6),
- (t.edgeType = (56 & n) >> 3),
- (t.fontStyle = 7 & n),
- e
- )
- }),
- (De.prototype.setPenColor = function (e, t) {
- var i = this.current708Packet.data,
- n = i[e],
- t = t.currentWindow.penColor,
- n = i[++e]
- return (
- (t.fgOpacity = (192 & n) >> 6),
- (t.fgRed = (48 & n) >> 4),
- (t.fgGreen = (12 & n) >> 2),
- (t.fgBlue = 3 & n),
- (n = i[++e]),
- (t.bgOpacity = (192 & n) >> 6),
- (t.bgRed = (48 & n) >> 4),
- (t.bgGreen = (12 & n) >> 2),
- (t.bgBlue = 3 & n),
- (n = i[++e]),
- (t.edgeRed = (48 & n) >> 4),
- (t.edgeGreen = (12 & n) >> 2),
- (t.edgeBlue = 3 & n),
- e
- )
- }),
- (De.prototype.setPenLocation = function (e, t) {
- var i = this.current708Packet.data,
- n = i[e],
- r = t.currentWindow.penLoc
- return (t.currentWindow.pendingNewLine = !0), (n = i[++e]), (r.row = 15 & n), (n = i[++e]), (r.column = 63 & n), e
- }),
- (De.prototype.reset = function (e, t) {
- var i = this.getPts(e)
- return this.flushDisplayed(i, t), this.initService(t.serviceNum, e)
- })
- function Oe(e) {
- return null === e ? '' : ((e = Re[e] || e), String.fromCharCode(e))
- }
- function Me() {
- for (var e = [], t = 15; t--; ) e.push('')
- return e
- }
- var Re = {
- 42: 225,
- 92: 233,
- 94: 237,
- 95: 243,
- 96: 250,
- 123: 231,
- 124: 247,
- 125: 209,
- 126: 241,
- 127: 9608,
- 304: 174,
- 305: 176,
- 306: 189,
- 307: 191,
- 308: 8482,
- 309: 162,
- 310: 163,
- 311: 9834,
- 312: 224,
- 313: 160,
- 314: 232,
- 315: 226,
- 316: 234,
- 317: 238,
- 318: 244,
- 319: 251,
- 544: 193,
- 545: 201,
- 546: 211,
- 547: 218,
- 548: 220,
- 549: 252,
- 550: 8216,
- 551: 161,
- 552: 42,
- 553: 39,
- 554: 8212,
- 555: 169,
- 556: 8480,
- 557: 8226,
- 558: 8220,
- 559: 8221,
- 560: 192,
- 561: 194,
- 562: 199,
- 563: 200,
- 564: 202,
- 565: 203,
- 566: 235,
- 567: 206,
- 568: 207,
- 569: 239,
- 570: 212,
- 571: 217,
- 572: 249,
- 573: 219,
- 574: 171,
- 575: 187,
- 800: 195,
- 801: 227,
- 802: 205,
- 803: 204,
- 804: 236,
- 805: 210,
- 806: 242,
- 807: 213,
- 808: 245,
- 809: 123,
- 810: 125,
- 811: 92,
- 812: 94,
- 813: 95,
- 814: 124,
- 815: 126,
- 816: 196,
- 817: 228,
- 818: 214,
- 819: 246,
- 820: 223,
- 821: 165,
- 822: 164,
- 823: 9474,
- 824: 197,
- 825: 229,
- 826: 216,
- 827: 248,
- 828: 9484,
- 829: 9488,
- 830: 9492,
- 831: 9496,
- },
- Ne = [4352, 4384, 4608, 4640, 5376, 5408, 5632, 5664, 5888, 5920, 4096, 4864, 4896, 5120, 5152],
- Ue = function e(t, i) {
- e.prototype.init.call(this),
- (this.field_ = t || 0),
- (this.dataChannel_ = i || 0),
- (this.name_ = 'CC' + (1 + ((this.field_ << 1) | this.dataChannel_))),
- this.setConstants(),
- this.reset(),
- (this.push = function (e) {
- var t,
- i,
- n,
- r,
- a = 32639 & e.ccData
- a !== this.lastControlCode_
- ? (4096 == (61440 & a) ? (this.lastControlCode_ = a) : a !== this.PADDING_ && (this.lastControlCode_ = null),
- (t = a >>> 8),
- (i = 255 & a),
- a === this.PADDING_ ||
- (a === this.RESUME_CAPTION_LOADING_
- ? (this.mode_ = 'popOn')
- : a === this.END_OF_CAPTION_
- ? ((this.mode_ = 'popOn'),
- this.clearFormatting(e.pts),
- this.flushDisplayed(e.pts),
- (r = this.displayed_),
- (this.displayed_ = this.nonDisplayed_),
- (this.nonDisplayed_ = r),
- (this.startPts_ = e.pts))
- : a === this.ROLL_UP_2_ROWS_
- ? ((this.rollUpRows_ = 2), this.setRollUp(e.pts))
- : a === this.ROLL_UP_3_ROWS_
- ? ((this.rollUpRows_ = 3), this.setRollUp(e.pts))
- : a === this.ROLL_UP_4_ROWS_
- ? ((this.rollUpRows_ = 4), this.setRollUp(e.pts))
- : a === this.CARRIAGE_RETURN_
- ? (this.clearFormatting(e.pts), this.flushDisplayed(e.pts), this.shiftRowsUp_(), (this.startPts_ = e.pts))
- : a === this.BACKSPACE_
- ? 'popOn' === this.mode_
- ? (this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1))
- : (this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1))
- : a === this.ERASE_DISPLAYED_MEMORY_
- ? (this.flushDisplayed(e.pts), (this.displayed_ = Me()))
- : a === this.ERASE_NON_DISPLAYED_MEMORY_
- ? (this.nonDisplayed_ = Me())
- : a === this.RESUME_DIRECT_CAPTIONING_
- ? ('paintOn' !== this.mode_ && (this.flushDisplayed(e.pts), (this.displayed_ = Me())), (this.mode_ = 'paintOn'), (this.startPts_ = e.pts))
- : this.isSpecialCharacter(t, i)
- ? ((n = Oe((t = (3 & t) << 8) | i)), this[this.mode_](e.pts, n), this.column_++)
- : this.isExtCharacter(t, i)
- ? ('popOn' === this.mode_
- ? (this.nonDisplayed_[this.row_] = this.nonDisplayed_[this.row_].slice(0, -1))
- : (this.displayed_[this.row_] = this.displayed_[this.row_].slice(0, -1)),
- (n = Oe((t = (3 & t) << 8) | i)),
- this[this.mode_](e.pts, n),
- this.column_++)
- : this.isMidRowCode(t, i)
- ? (this.clearFormatting(e.pts),
- this[this.mode_](e.pts, ' '),
- this.column_++,
- 14 == (14 & i) && this.addFormatting(e.pts, ['i']),
- 1 == (1 & i) && this.addFormatting(e.pts, ['u']))
- : this.isOffsetControlCode(t, i)
- ? (this.column_ += 3 & i)
- : this.isPAC(t, i)
- ? ((r = Ne.indexOf(7968 & a)),
- 'rollUp' === this.mode_ && (r - this.rollUpRows_ + 1 < 0 && (r = this.rollUpRows_ - 1), this.setRollUp(e.pts, r)),
- r !== this.row_ && (this.clearFormatting(e.pts), (this.row_ = r)),
- 1 & i && -1 === this.formatting_.indexOf('u') && this.addFormatting(e.pts, ['u']),
- 16 == (16 & a) && (this.column_ = 4 * ((14 & a) >> 1)),
- this.isColorPAC(i) && 14 == (14 & i) && this.addFormatting(e.pts, ['i']))
- : this.isNormalChar(t) && (0 === i && (i = null), (n = Oe(t)), (n += Oe(i)), this[this.mode_](e.pts, n), (this.column_ += n.length))))
- : (this.lastControlCode_ = null)
- })
- }
- ;(Ue.prototype = new j()),
- (Ue.prototype.flushDisplayed = function (e) {
- var t = this.displayed_
- .map(function (e, t) {
- try {
- return e.trim()
- } catch (e) {
- return this.trigger('log', { level: 'warn', message: 'Skipping a malformed 608 caption at index ' + t + '.' }), ''
- }
- }, this)
- .join('\n')
- .replace(/^\n+|\n+$/g, '')
- t.length && this.trigger('data', { startPts: this.startPts_, endPts: e, text: t, stream: this.name_ })
- }),
- (Ue.prototype.reset = function () {
- ;(this.mode_ = 'popOn'),
- (this.topRow_ = 0),
- (this.startPts_ = 0),
- (this.displayed_ = Me()),
- (this.nonDisplayed_ = Me()),
- (this.lastControlCode_ = null),
- (this.column_ = 0),
- (this.row_ = 14),
- (this.rollUpRows_ = 2),
- (this.formatting_ = [])
- }),
- (Ue.prototype.setConstants = function () {
- 0 === this.dataChannel_
- ? ((this.BASE_ = 16), (this.EXT_ = 17), (this.CONTROL_ = (20 | this.field_) << 8), (this.OFFSET_ = 23))
- : 1 === this.dataChannel_ && ((this.BASE_ = 24), (this.EXT_ = 25), (this.CONTROL_ = (28 | this.field_) << 8), (this.OFFSET_ = 31)),
- (this.PADDING_ = 0),
- (this.RESUME_CAPTION_LOADING_ = 32 | this.CONTROL_),
- (this.END_OF_CAPTION_ = 47 | this.CONTROL_),
- (this.ROLL_UP_2_ROWS_ = 37 | this.CONTROL_),
- (this.ROLL_UP_3_ROWS_ = 38 | this.CONTROL_),
- (this.ROLL_UP_4_ROWS_ = 39 | this.CONTROL_),
- (this.CARRIAGE_RETURN_ = 45 | this.CONTROL_),
- (this.RESUME_DIRECT_CAPTIONING_ = 41 | this.CONTROL_),
- (this.BACKSPACE_ = 33 | this.CONTROL_),
- (this.ERASE_DISPLAYED_MEMORY_ = 44 | this.CONTROL_),
- (this.ERASE_NON_DISPLAYED_MEMORY_ = 46 | this.CONTROL_)
- }),
- (Ue.prototype.isSpecialCharacter = function (e, t) {
- return e === this.EXT_ && 48 <= t && t <= 63
- }),
- (Ue.prototype.isExtCharacter = function (e, t) {
- return (e === this.EXT_ + 1 || e === this.EXT_ + 2) && 32 <= t && t <= 63
- }),
- (Ue.prototype.isMidRowCode = function (e, t) {
- return e === this.EXT_ && 32 <= t && t <= 47
- }),
- (Ue.prototype.isOffsetControlCode = function (e, t) {
- return e === this.OFFSET_ && 33 <= t && t <= 35
- }),
- (Ue.prototype.isPAC = function (e, t) {
- return e >= this.BASE_ && e < this.BASE_ + 8 && 64 <= t && t <= 127
- }),
- (Ue.prototype.isColorPAC = function (e) {
- return (64 <= e && e <= 79) || (96 <= e && e <= 127)
- }),
- (Ue.prototype.isNormalChar = function (e) {
- return 32 <= e && e <= 127
- }),
- (Ue.prototype.setRollUp = function (e, t) {
- if (
- ('rollUp' !== this.mode_ && ((this.row_ = 14), (this.mode_ = 'rollUp'), this.flushDisplayed(e), (this.nonDisplayed_ = Me()), (this.displayed_ = Me())),
- void 0 !== t && t !== this.row_)
- )
- for (var i = 0; i < this.rollUpRows_; i++) (this.displayed_[t - i] = this.displayed_[this.row_ - i]), (this.displayed_[this.row_ - i] = '')
- void 0 === t && (t = this.row_), (this.topRow_ = t - this.rollUpRows_ + 1)
- }),
- (Ue.prototype.addFormatting = function (e, t) {
- this.formatting_ = this.formatting_.concat(t)
- t = t.reduce(function (e, t) {
- return e + '<' + t + '>'
- }, '')
- this[this.mode_](e, t)
- }),
- (Ue.prototype.clearFormatting = function (e) {
- var t
- this.formatting_.length &&
- ((t = this.formatting_.reverse().reduce(function (e, t) {
- return e + '</' + t + '>'
- }, '')),
- (this.formatting_ = []),
- this[this.mode_](e, t))
- }),
- (Ue.prototype.popOn = function (e, t) {
- var i = this.nonDisplayed_[this.row_]
- this.nonDisplayed_[this.row_] = i += t
- }),
- (Ue.prototype.rollUp = function (e, t) {
- var i = this.displayed_[this.row_]
- this.displayed_[this.row_] = i += t
- }),
- (Ue.prototype.shiftRowsUp_ = function () {
- for (var e = 0; e < this.topRow_; e++) this.displayed_[e] = ''
- for (e = this.row_ + 1; e < 15; e++) this.displayed_[e] = ''
- for (e = this.topRow_; e < this.row_; e++) this.displayed_[e] = this.displayed_[e + 1]
- this.displayed_[this.row_] = ''
- }),
- (Ue.prototype.paintOn = function (e, t) {
- var i = this.displayed_[this.row_]
- this.displayed_[this.row_] = i += t
- })
- function Be(e, t) {
- var i = 1
- for (t < e && (i = -1); 4294967296 < Math.abs(t - e); ) e += 8589934592 * i
- return e
- }
- var Fe = { CaptionStream: Ie, Cea608Stream: Ue, Cea708Stream: De },
- je = { H264_STREAM_TYPE: 27, ADTS_STREAM_TYPE: 15, METADATA_STREAM_TYPE: 21 },
- e = function e(t) {
- var i, n
- e.prototype.init.call(this),
- (this.type_ = t || 'shared'),
- (this.push = function (e) {
- ;('shared' !== this.type_ && e.type !== this.type_) ||
- (void 0 === n && (n = e.dts), (e.dts = Be(e.dts, n)), (e.pts = Be(e.pts, n)), (i = e.dts), this.trigger('data', e))
- }),
- (this.flush = function () {
- ;(n = i), this.trigger('done')
- }),
- (this.endTimeline = function () {
- this.flush(), this.trigger('endedtimeline')
- }),
- (this.discontinuity = function () {
- i = n = void 0
- }),
- (this.reset = function () {
- this.discontinuity(), this.trigger('reset')
- })
- }
- e.prototype = new j()
- function He(e, t, i) {
- for (var n = '', r = t; r < i; r++) n += '%' + ('00' + e[r].toString(16)).slice(-2)
- return n
- }
- function qe(e, t, i) {
- return decodeURIComponent(He(e, t, i))
- }
- function Ve(e) {
- return (e[0] << 21) | (e[1] << 14) | (e[2] << 7) | e[3]
- }
- var We = e,
- Ie = Be,
- Ge = {
- TXXX: function (e) {
- var t
- if (3 === e.data[0]) {
- for (t = 1; t < e.data.length; t++)
- if (0 === e.data[t]) {
- ;(e.description = qe(e.data, 1, t)), (e.value = qe(e.data, t + 1, e.data.length).replace(/\0*$/, ''))
- break
- }
- e.data = e.value
- }
- },
- WXXX: function (e) {
- var t
- if (3 === e.data[0])
- for (t = 1; t < e.data.length; t++)
- if (0 === e.data[t]) {
- ;(e.description = qe(e.data, 1, t)), (e.url = qe(e.data, t + 1, e.data.length))
- break
- }
- },
- PRIV: function (e) {
- for (var t, i = 0; i < e.data.length; i++)
- if (0 === e.data[i]) {
- e.owner = ((t = e.data), unescape(He(t, 0, i)))
- break
- }
- ;(e.privateData = e.data.subarray(i + 1)), (e.data = e.privateData)
- },
- },
- ze = function (e) {
- var t,
- i = { descriptor: e && e.descriptor },
- u = 0,
- l = [],
- c = 0
- if ((ze.prototype.init.call(this), (this.dispatchType = je.METADATA_STREAM_TYPE.toString(16)), i.descriptor))
- for (t = 0; t < i.descriptor.length; t++) this.dispatchType += ('00' + i.descriptor[t].toString(16)).slice(-2)
- this.push = function (e) {
- var t, i, n, r, a, s, o
- if ('timed-metadata' === e.type)
- if (
- (e.dataAlignmentIndicator && ((c = 0), (l.length = 0)),
- 0 === l.length && (e.data.length < 10 || e.data[0] !== 'I'.charCodeAt(0) || e.data[1] !== 'D'.charCodeAt(0) || e.data[2] !== '3'.charCodeAt(0)))
- )
- this.trigger('log', { level: 'warn', message: 'Skipping unrecognized metadata packet' })
- else if ((l.push(e), (c += e.data.byteLength), 1 === l.length && ((u = Ve(e.data.subarray(6, 10))), (u += 10)), !(c < u))) {
- for (t = { data: new Uint8Array(u), frames: [], pts: l[0].pts, dts: l[0].dts }, r = 0; r < u; )
- t.data.set(l[0].data.subarray(0, u - r), r), (r += l[0].data.byteLength), (c -= l[0].data.byteLength), l.shift()
- ;(i = 10), 64 & t.data[5] && ((i += 4), (i += Ve(t.data.subarray(10, 14))), (u -= Ve(t.data.subarray(16, 20))))
- do {
- if ((n = Ve(t.data.subarray(i + 4, i + 8))) < 1)
- return void this.trigger('log', { level: 'warn', message: 'Malformed ID3 frame encountered. Skipping metadata parsing.' })
- } while (
- (((o = { id: String.fromCharCode(t.data[i], t.data[i + 1], t.data[i + 2], t.data[i + 3]), data: t.data.subarray(i + 10, i + n + 10) }).key = o.id),
- Ge[o.id] &&
- (Ge[o.id](o),
- 'com.apple.streaming.transportStreamTimestamp' === o.owner &&
- ((s = ((1 & (a = o.data)[3]) << 30) | (a[4] << 22) | (a[5] << 14) | (a[6] << 6) | (a[7] >>> 2)),
- (s *= 4),
- (s += 3 & a[7]),
- (o.timeStamp = s),
- void 0 === t.pts && void 0 === t.dts && ((t.pts = o.timeStamp), (t.dts = o.timeStamp)),
- this.trigger('timestamp', o))),
- t.frames.push(o),
- (i += 10),
- (i += n) < u)
- )
- this.trigger('data', t)
- }
- }
- }
- ze.prototype = new j()
- var Xe,
- Ke,
- e = ze,
- We = We,
- Ye = function () {
- var r = new Uint8Array(188),
- a = 0
- Ye.prototype.init.call(this),
- (this.push = function (e) {
- var t,
- i = 0,
- n = 188
- for (a ? ((t = new Uint8Array(e.byteLength + a)).set(r.subarray(0, a)), t.set(e, a), (a = 0)) : (t = e); n < t.byteLength; )
- 71 !== t[i] || 71 !== t[n] ? (i++, n++) : (this.trigger('data', t.subarray(i, n)), (i += 188), (n += 188))
- i < t.byteLength && (r.set(t.subarray(i), 0), (a = t.byteLength - i))
- }),
- (this.flush = function () {
- 188 === a && 71 === r[0] && (this.trigger('data', r), (a = 0)), this.trigger('done')
- }),
- (this.endTimeline = function () {
- this.flush(), this.trigger('endedtimeline')
- }),
- (this.reset = function () {
- ;(a = 0), this.trigger('reset')
- })
- }
- ;(Ye.prototype = new j()),
- ((Xe = function () {
- var n, r, a, s
- Xe.prototype.init.call(this),
- ((s = this).packetsWaitingForPmt = []),
- (this.programMapTable = void 0),
- (n = function (e, t) {
- var i = 0
- t.payloadUnitStartIndicator && (i += e[i] + 1), ('pat' === t.type ? r : a)(e.subarray(i), t)
- }),
- (r = function (e, t) {
- ;(t.section_number = e[7]), (t.last_section_number = e[8]), (s.pmtPid = ((31 & e[10]) << 8) | e[11]), (t.pmtPid = s.pmtPid)
- }),
- (a = function (e, t) {
- var i, n
- if (1 & e[5]) {
- for (
- s.programMapTable = { video: null, audio: null, 'timed-metadata': {} }, i = 3 + (((15 & e[1]) << 8) | e[2]) - 4, n = 12 + (((15 & e[10]) << 8) | e[11]);
- n < i;
- ) {
- var r = e[n],
- a = ((31 & e[n + 1]) << 8) | e[n + 2]
- r === je.H264_STREAM_TYPE && null === s.programMapTable.video
- ? (s.programMapTable.video = a)
- : r === je.ADTS_STREAM_TYPE && null === s.programMapTable.audio
- ? (s.programMapTable.audio = a)
- : r === je.METADATA_STREAM_TYPE && (s.programMapTable['timed-metadata'][a] = r),
- (n += 5 + (((15 & e[n + 3]) << 8) | e[n + 4]))
- }
- t.programMapTable = s.programMapTable
- }
- }),
- (this.push = function (e) {
- var t = {},
- i = 4
- if (((t.payloadUnitStartIndicator = !!(64 & e[1])), (t.pid = 31 & e[1]), (t.pid <<= 8), (t.pid |= e[2]), 1 < (48 & e[3]) >>> 4 && (i += e[i] + 1), 0 === t.pid))
- (t.type = 'pat'), n(e.subarray(i), t), this.trigger('data', t)
- else if (t.pid === this.pmtPid)
- for (t.type = 'pmt', n(e.subarray(i), t), this.trigger('data', t); this.packetsWaitingForPmt.length; )
- this.processPes_.apply(this, this.packetsWaitingForPmt.shift())
- else void 0 === this.programMapTable ? this.packetsWaitingForPmt.push([e, i, t]) : this.processPes_(e, i, t)
- }),
- (this.processPes_ = function (e, t, i) {
- i.pid === this.programMapTable.video
- ? (i.streamType = je.H264_STREAM_TYPE)
- : i.pid === this.programMapTable.audio
- ? (i.streamType = je.ADTS_STREAM_TYPE)
- : (i.streamType = this.programMapTable['timed-metadata'][i.pid]),
- (i.type = 'pes'),
- (i.data = e.subarray(t)),
- this.trigger('data', i)
- })
- }).prototype = new j()),
- (Xe.STREAM_TYPES = { h264: 27, adts: 15 }),
- ((Ke = function () {
- function n(e, t, i) {
- var n,
- r,
- a,
- s,
- o = new Uint8Array(e.size),
- u = { type: t },
- l = 0,
- c = 0
- if (e.data.length && !(e.size < 9)) {
- for (u.trackId = e.data[0].pid, l = 0; l < e.data.length; l++) (n = e.data[l]), o.set(n.data, c), (c += n.data.byteLength)
- ;(a = u),
- (s = ((r = o)[0] << 16) | (r[1] << 8) | r[2]),
- (a.data = new Uint8Array()),
- 1 == s &&
- ((a.packetLength = 6 + ((r[4] << 8) | r[5])),
- (a.dataAlignmentIndicator = 0 != (4 & r[6])),
- 192 & (s = r[7]) &&
- ((a.pts = ((14 & r[9]) << 27) | ((255 & r[10]) << 20) | ((254 & r[11]) << 12) | ((255 & r[12]) << 5) | ((254 & r[13]) >>> 3)),
- (a.pts *= 4),
- (a.pts += (6 & r[13]) >>> 1),
- (a.dts = a.pts),
- 64 & s &&
- ((a.dts = ((14 & r[14]) << 27) | ((255 & r[15]) << 20) | ((254 & r[16]) << 12) | ((255 & r[17]) << 5) | ((254 & r[18]) >>> 3)),
- (a.dts *= 4),
- (a.dts += (6 & r[18]) >>> 1))),
- (a.data = r.subarray(9 + r[8]))),
- (t = 'video' === t || u.packetLength <= e.size),
- (i || t) && ((e.size = 0), (e.data.length = 0)),
- t && d.trigger('data', u)
- }
- }
- var t,
- d = this,
- r = !1,
- a = { data: [], size: 0 },
- s = { data: [], size: 0 },
- o = { data: [], size: 0 }
- Ke.prototype.init.call(this),
- (this.push = function (i) {
- ;({
- pat: function () {},
- pes: function () {
- var e, t
- switch (i.streamType) {
- case je.H264_STREAM_TYPE:
- ;(e = a), (t = 'video')
- break
- case je.ADTS_STREAM_TYPE:
- ;(e = s), (t = 'audio')
- break
- case je.METADATA_STREAM_TYPE:
- ;(e = o), (t = 'timed-metadata')
- break
- default:
- return
- }
- i.payloadUnitStartIndicator && n(e, t, !0), e.data.push(i), (e.size += i.data.byteLength)
- },
- pmt: function () {
- var e = { type: 'metadata', tracks: [] }
- null !== (t = i.programMapTable).video && e.tracks.push({ timelineStartInfo: { baseMediaDecodeTime: 0 }, id: +t.video, codec: 'avc', type: 'video' }),
- null !== t.audio && e.tracks.push({ timelineStartInfo: { baseMediaDecodeTime: 0 }, id: +t.audio, codec: 'adts', type: 'audio' }),
- (r = !0),
- d.trigger('data', e)
- },
- }[i.type]())
- }),
- (this.reset = function () {
- ;(a.size = 0), (a.data.length = 0), (s.size = 0), (s.data.length = 0), this.trigger('reset')
- }),
- (this.flushStreams_ = function () {
- n(a, 'video'), n(s, 'audio'), n(o, 'timed-metadata')
- }),
- (this.flush = function () {
- var e
- !r &&
- t &&
- ((e = { type: 'metadata', tracks: [] }),
- null !== t.video && e.tracks.push({ timelineStartInfo: { baseMediaDecodeTime: 0 }, id: +t.video, codec: 'avc', type: 'video' }),
- null !== t.audio && e.tracks.push({ timelineStartInfo: { baseMediaDecodeTime: 0 }, id: +t.audio, codec: 'adts', type: 'audio' }),
- d.trigger('data', e)),
- (r = !1),
- this.flushStreams_(),
- this.trigger('done')
- })
- }).prototype = new j())
- var Qe,
- $e = {
- PAT_PID: 0,
- MP2T_PACKET_LENGTH: 188,
- TransportPacketStream: Ye,
- TransportParseStream: Xe,
- ElementaryStream: Ke,
- TimestampRolloverStream: We,
- CaptionStream: Fe.CaptionStream,
- Cea608Stream: Fe.Cea608Stream,
- Cea708Stream: Fe.Cea708Stream,
- MetadataStream: e,
- }
- for (Qe in je) je.hasOwnProperty(Qe) && ($e[Qe] = je[Qe])
- var Je = $e,
- Ze = ue,
- et = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350],
- tt = function (u) {
- var l,
- c = 0
- tt.prototype.init.call(this),
- (this.skipWarn_ = function (e, t) {
- this.trigger('log', { level: 'warn', message: 'adts skiping bytes ' + e + ' to ' + t + ' in frame ' + c + ' outside syncword' })
- }),
- (this.push = function (e) {
- var t,
- i,
- n,
- r,
- a,
- s,
- o = 0
- if ((u || (c = 0), 'audio' === e.type)) {
- for (l && l.length ? ((n = l), (l = new Uint8Array(n.byteLength + e.data.byteLength)).set(n), l.set(e.data, n.byteLength)) : (l = e.data); o + 7 < l.length; )
- if (255 === l[o] && 240 == (246 & l[o + 1])) {
- if (
- ('number' == typeof s && (this.skipWarn_(s, o), (s = null)),
- (i = 2 * (1 & ~l[o + 1])),
- (t = ((3 & l[o + 3]) << 11) | (l[o + 4] << 3) | ((224 & l[o + 5]) >> 5)),
- (a = ((r = 1024 * (1 + (3 & l[o + 6]))) * Ze) / et[(60 & l[o + 2]) >>> 2]),
- l.byteLength - o < t)
- )
- break
- this.trigger('data', {
- pts: e.pts + c * a,
- dts: e.dts + c * a,
- sampleCount: r,
- audioobjecttype: 1 + ((l[o + 2] >>> 6) & 3),
- channelcount: ((1 & l[o + 2]) << 2) | ((192 & l[o + 3]) >>> 6),
- samplerate: et[(60 & l[o + 2]) >>> 2],
- samplingfrequencyindex: (60 & l[o + 2]) >>> 2,
- samplesize: 16,
- data: l.subarray(o + 7 + i, o + t),
- }),
- c++,
- (o += t)
- } else 'number' != typeof s && (s = o), o++
- 'number' == typeof s && (this.skipWarn_(s, o), (s = null)), (l = l.subarray(o))
- }
- }),
- (this.flush = function () {
- ;(c = 0), this.trigger('done')
- }),
- (this.reset = function () {
- ;(l = void 0), this.trigger('reset')
- }),
- (this.endTimeline = function () {
- ;(l = void 0), this.trigger('endedtimeline')
- })
- }
- tt.prototype = new j()
- var it,
- nt,
- rt = tt,
- at = function (n) {
- var r = n.byteLength,
- a = 0,
- s = 0
- ;(this.length = function () {
- return 8 * r
- }),
- (this.bitsAvailable = function () {
- return 8 * r + s
- }),
- (this.loadWord = function () {
- var e = n.byteLength - r,
- t = new Uint8Array(4),
- i = Math.min(4, r)
- if (0 === i) throw new Error('no bytes available')
- t.set(n.subarray(e, e + i)), (a = new DataView(t.buffer).getUint32(0)), (s = 8 * i), (r -= i)
- }),
- (this.skipBits = function (e) {
- var t
- e < s || ((e -= s), (e -= 8 * (t = Math.floor(e / 8))), (r -= t), this.loadWord()), (a <<= e), (s -= e)
- }),
- (this.readBits = function (e) {
- var t = Math.min(s, e),
- i = a >>> (32 - t)
- return 0 < (s -= t) ? (a <<= t) : 0 < r && this.loadWord(), 0 < (t = e - t) ? (i << t) | this.readBits(t) : i
- }),
- (this.skipLeadingZeros = function () {
- for (var e = 0; e < s; ++e) if (0 != (a & (2147483648 >>> e))) return (a <<= e), (s -= e), e
- return this.loadWord(), e + this.skipLeadingZeros()
- }),
- (this.skipUnsignedExpGolomb = function () {
- this.skipBits(1 + this.skipLeadingZeros())
- }),
- (this.skipExpGolomb = function () {
- this.skipBits(1 + this.skipLeadingZeros())
- }),
- (this.readUnsignedExpGolomb = function () {
- var e = this.skipLeadingZeros()
- return this.readBits(e + 1) - 1
- }),
- (this.readExpGolomb = function () {
- var e = this.readUnsignedExpGolomb()
- return 1 & e ? (1 + e) >>> 1 : -1 * (e >>> 1)
- }),
- (this.readBoolean = function () {
- return 1 === this.readBits(1)
- }),
- (this.readUnsignedByte = function () {
- return this.readBits(8)
- }),
- this.loadWord()
- },
- st = function () {
- var n,
- r,
- a = 0
- st.prototype.init.call(this),
- (this.push = function (e) {
- for (var t, i = (r = r ? ((t = new Uint8Array(r.byteLength + e.data.byteLength)).set(r), t.set(e.data, r.byteLength), t) : e.data).byteLength; a < i - 3; a++)
- if (1 === r[a + 2]) {
- n = a + 5
- break
- }
- for (; n < i; )
- switch (r[n]) {
- case 0:
- if (0 !== r[n - 1]) {
- n += 2
- break
- }
- if (0 !== r[n - 2]) {
- n++
- break
- }
- for (a + 3 !== n - 2 && this.trigger('data', r.subarray(a + 3, n - 2)); 1 !== r[++n] && n < i; );
- ;(a = n - 2), (n += 3)
- break
- case 1:
- if (0 !== r[n - 1] || 0 !== r[n - 2]) {
- n += 3
- break
- }
- this.trigger('data', r.subarray(a + 3, n - 2)), (a = n - 2), (n += 3)
- break
- default:
- n += 3
- }
- ;(r = r.subarray(a)), (n -= a), (a = 0)
- }),
- (this.reset = function () {
- ;(r = null), (a = 0), this.trigger('reset')
- }),
- (this.flush = function () {
- r && 3 < r.byteLength && this.trigger('data', r.subarray(a + 3)), (r = null), (a = 0), this.trigger('done')
- }),
- (this.endTimeline = function () {
- this.flush(), this.trigger('endedtimeline')
- })
- }
- ;(st.prototype = new j()),
- (nt = { 100: !0, 110: !0, 122: !0, 244: !0, 44: !0, 83: !0, 86: !0, 118: !0, 128: !0, 138: !0, 139: !0, 134: !0 }),
- ((it = function () {
- var i,
- n,
- r,
- a,
- s,
- o,
- m,
- t = new st()
- it.prototype.init.call(this),
- ((i = this).push = function (e) {
- 'video' === e.type && ((n = e.trackId), (r = e.pts), (a = e.dts), t.push(e))
- }),
- t.on('data', function (e) {
- var t = { trackId: n, pts: r, dts: a, data: e, nalUnitTypeCode: 31 & e[0] }
- switch (t.nalUnitTypeCode) {
- case 5:
- t.nalUnitType = 'slice_layer_without_partitioning_rbsp_idr'
- break
- case 6:
- ;(t.nalUnitType = 'sei_rbsp'), (t.escapedRBSP = s(e.subarray(1)))
- break
- case 7:
- ;(t.nalUnitType = 'seq_parameter_set_rbsp'), (t.escapedRBSP = s(e.subarray(1))), (t.config = o(t.escapedRBSP))
- break
- case 8:
- t.nalUnitType = 'pic_parameter_set_rbsp'
- break
- case 9:
- t.nalUnitType = 'access_unit_delimiter_rbsp'
- }
- i.trigger('data', t)
- }),
- t.on('done', function () {
- i.trigger('done')
- }),
- t.on('partialdone', function () {
- i.trigger('partialdone')
- }),
- t.on('reset', function () {
- i.trigger('reset')
- }),
- t.on('endedtimeline', function () {
- i.trigger('endedtimeline')
- }),
- (this.flush = function () {
- t.flush()
- }),
- (this.partialFlush = function () {
- t.partialFlush()
- }),
- (this.reset = function () {
- t.reset()
- }),
- (this.endTimeline = function () {
- t.endTimeline()
- }),
- (m = function (e, t) {
- for (var i = 8, n = 8, r = 0; r < e; r++) i = 0 === (n = 0 !== n ? (i + t.readExpGolomb() + 256) % 256 : n) ? i : n
- }),
- (s = function (e) {
- for (var t = e.byteLength, i = [], n = 1; n < t - 2; ) 0 === e[n] && 0 === e[n + 1] && 3 === e[n + 2] ? (i.push(n + 2), (n += 2)) : n++
- if (0 === i.length) return e
- for (var r = t - i.length, a = new Uint8Array(r), s = 0, n = 0; n < r; s++, n++) s === i[0] && (s++, i.shift()), (a[n] = e[s])
- return a
- }),
- (o = function (e) {
- var t,
- i,
- n,
- r,
- a,
- s = 0,
- o = 0,
- u = 0,
- l = 0,
- c = [1, 1],
- d = new at(e),
- h = d.readUnsignedByte(),
- p = d.readUnsignedByte(),
- f = d.readUnsignedByte()
- if (
- (d.skipUnsignedExpGolomb(),
- nt[h] && (3 === (i = d.readUnsignedExpGolomb()) && d.skipBits(1), d.skipUnsignedExpGolomb(), d.skipUnsignedExpGolomb(), d.skipBits(1), d.readBoolean()))
- )
- for (r = 3 !== i ? 8 : 12, a = 0; a < r; a++) d.readBoolean() && m(a < 6 ? 16 : 64, d)
- if ((d.skipUnsignedExpGolomb(), 0 === (n = d.readUnsignedExpGolomb()))) d.readUnsignedExpGolomb()
- else if (1 === n) for (d.skipBits(1), d.skipExpGolomb(), d.skipExpGolomb(), t = d.readUnsignedExpGolomb(), a = 0; a < t; a++) d.skipExpGolomb()
- if (
- (d.skipUnsignedExpGolomb(),
- d.skipBits(1),
- (e = d.readUnsignedExpGolomb()),
- (i = d.readUnsignedExpGolomb()),
- 0 === (n = d.readBits(1)) && d.skipBits(1),
- d.skipBits(1),
- d.readBoolean() && ((s = d.readUnsignedExpGolomb()), (o = d.readUnsignedExpGolomb()), (u = d.readUnsignedExpGolomb()), (l = d.readUnsignedExpGolomb())),
- d.readBoolean() && d.readBoolean())
- ) {
- switch (d.readUnsignedByte()) {
- case 1:
- c = [1, 1]
- break
- case 2:
- c = [12, 11]
- break
- case 3:
- c = [10, 11]
- break
- case 4:
- c = [16, 11]
- break
- case 5:
- c = [40, 33]
- break
- case 6:
- c = [24, 11]
- break
- case 7:
- c = [20, 11]
- break
- case 8:
- c = [32, 11]
- break
- case 9:
- c = [80, 33]
- break
- case 10:
- c = [18, 11]
- break
- case 11:
- c = [15, 11]
- break
- case 12:
- c = [64, 33]
- break
- case 13:
- c = [160, 99]
- break
- case 14:
- c = [4, 3]
- break
- case 15:
- c = [3, 2]
- break
- case 16:
- c = [2, 1]
- break
- case 255:
- c = [(d.readUnsignedByte() << 8) | d.readUnsignedByte(), (d.readUnsignedByte() << 8) | d.readUnsignedByte()]
- }
- c && (c[0], c[1])
- }
- return { profileIdc: h, levelIdc: f, profileCompatibility: p, width: 16 * (e + 1) - 2 * s - 2 * o, height: (2 - n) * (i + 1) * 16 - 2 * u - 2 * l, sarRatio: c }
- })
- }).prototype = new j())
- function ot(e, t) {
- var i = 0 <= (i = (e[t + 6] << 21) | (e[t + 7] << 14) | (e[t + 8] << 7) | e[t + 9]) ? i : 0
- return (16 & e[t + 5]) >> 4 ? i + 20 : i + 10
- }
- function ut(e, t) {
- return e.length - t < 10 || e[t] !== 'I'.charCodeAt(0) || e[t + 1] !== 'D'.charCodeAt(0) || e[t + 2] !== '3'.charCodeAt(0) ? t : ut(e, (t += ot(e, t)))
- }
- function lt(e) {
- return (e[0] << 21) | (e[1] << 14) | (e[2] << 7) | e[3]
- }
- var e = { H264Stream: it, NalByteStream: st },
- ct = [96e3, 88200, 64e3, 48e3, 44100, 32e3, 24e3, 22050, 16e3, 12e3, 11025, 8e3, 7350],
- dt = {
- isLikelyAacData: function (e) {
- var t = ut(e, 0)
- return e.length >= t + 2 && 255 == (255 & e[t]) && 240 == (240 & e[t + 1]) && 16 == (22 & e[t + 1])
- },
- parseId3TagSize: ot,
- parseAdtsSize: function (e, t) {
- var i = (224 & e[t + 5]) >> 5,
- n = e[t + 4] << 3
- return (6144 & e[t + 3]) | n | i
- },
- parseType: function (e, t) {
- return e[t] === 'I'.charCodeAt(0) && e[t + 1] === 'D'.charCodeAt(0) && e[t + 2] === '3'.charCodeAt(0)
- ? 'timed-metadata'
- : !0 & e[t] && 240 == (240 & e[t + 1])
- ? 'audio'
- : null
- },
- parseSampleRate: function (e) {
- for (var t = 0; t + 5 < e.length; ) {
- if (255 === e[t] && 240 == (246 & e[t + 1])) return ct[(60 & e[t + 2]) >>> 2]
- t++
- }
- return null
- },
- parseAacTimestamp: function (e) {
- var t,
- i = 10
- 64 & e[5] && ((i += 4), (i += lt(e.subarray(10, 14))))
- do {
- if ((t = lt(e.subarray(i + 4, i + 8))) < 1) return null
- if ('PRIV' === String.fromCharCode(e[i], e[i + 1], e[i + 2], e[i + 3]))
- for (var n = e.subarray(i + 10, i + t + 10), r = 0; r < n.byteLength; r++)
- if (0 === n[r]) {
- if (
- 'com.apple.streaming.transportStreamTimestamp' !==
- unescape(
- (function (e, t, i) {
- for (var n = '', r = t; r < i; r++) n += '%' + ('00' + e[r].toString(16)).slice(-2)
- return n
- })(n, 0, r)
- )
- )
- break
- var a = n.subarray(r + 1),
- s = ((1 & a[3]) << 30) | (a[4] << 22) | (a[5] << 14) | (a[6] << 6) | (a[7] >>> 2)
- return (s *= 4), (s += 3 & a[7])
- }
- } while (((i += 10), (i += t) < e.byteLength))
- return null
- },
- },
- ht = function () {
- var a = new Uint8Array(),
- s = 0
- ht.prototype.init.call(this),
- (this.setTimestamp = function (e) {
- s = e
- }),
- (this.push = function (e) {
- var t,
- i,
- n = 0,
- r = 0
- for (a.length ? ((i = a.length), (a = new Uint8Array(e.byteLength + i)).set(a.subarray(0, i)), a.set(e, i)) : (a = e); 3 <= a.length - r; )
- if (a[r] !== 'I'.charCodeAt(0) || a[r + 1] !== 'D'.charCodeAt(0) || a[r + 2] !== '3'.charCodeAt(0))
- if (255 != (255 & a[r]) || 240 != (240 & a[r + 1])) r++
- else {
- if (a.length - r < 7) break
- if (r + (n = dt.parseAdtsSize(a, r)) > a.length) break
- ;(t = { type: 'audio', data: a.subarray(r, r + n), pts: s, dts: s }), this.trigger('data', t), (r += n)
- }
- else {
- if (a.length - r < 10) break
- if (r + (n = dt.parseId3TagSize(a, r)) > a.length) break
- ;(t = { type: 'timed-metadata', data: a.subarray(r, r + n) }), this.trigger('data', t), (r += n)
- }
- ;(e = a.length - r), (a = 0 < e ? a.subarray(r) : new Uint8Array())
- }),
- (this.reset = function () {
- ;(a = new Uint8Array()), this.trigger('reset')
- }),
- (this.endTimeline = function () {
- ;(a = new Uint8Array()), this.trigger('endedtimeline')
- })
- }
- ht.prototype = new j()
- function pt(e, t) {
- ;(t.stream = e), this.trigger('log', t)
- }
- function ft(e, t) {
- for (var i = Object.keys(t), n = 0; n < i.length; n++) {
- var r = i[n]
- 'headOfPipeline' !== r && t[r].on && t[r].on('log', pt.bind(e, r))
- }
- }
- function mt(e, t) {
- var i
- if (e.length === t.length) {
- for (i = 0; i < e.length; i++) if (e[i] !== t[i]) return
- return 1
- }
- }
- function gt(e, t, i, n, r, a) {
- return { start: { dts: e, pts: e + (i - t) }, end: { dts: e + (n - t), pts: e + (r - i) }, prependedContentDuration: a, baseMediaDecodeTime: e }
- }
- var yt,
- vt,
- _t,
- bt = ht,
- Tt = ['audioobjecttype', 'channelcount', 'samplerate', 'samplingfrequencyindex', 'samplesize'],
- St = ['width', 'height', 'profileIdc', 'levelIdc', 'profileCompatibility', 'sarRatio'],
- wt = e.H264Stream,
- Et = dt.isLikelyAacData,
- kt = ue,
- Ct = function (a, s) {
- var o = [],
- u = 0,
- l = 0,
- c = 1 / 0,
- d = (s = s || {}).firstSequenceNumber || 0
- Ct.prototype.init.call(this),
- (this.push = function (t) {
- Te(a, t),
- a &&
- Tt.forEach(function (e) {
- a[e] = t[e]
- }),
- o.push(t)
- }),
- (this.setEarliestDts = function (e) {
- u = e
- }),
- (this.setVideoBaseMediaDecodeTime = function (e) {
- c = e
- }),
- (this.setAudioAppendStart = function (e) {
- l = e
- }),
- (this.flush = function () {
- var e, t, i, n, r
- 0 !== o.length &&
- ((e = me(o, a, u)),
- (a.baseMediaDecodeTime = be(a, s.keepOriginalTimestamps)),
- (r = fe(a, e, l, c)),
- (a.samples = ge(e)),
- (t = K(ye(e))),
- (o = []),
- (n = Y(d, [a])),
- (i = new Uint8Array(n.byteLength + t.byteLength)),
- d++,
- i.set(n),
- i.set(t, n.byteLength),
- _e(a),
- (n = Math.ceil((1024 * kt) / a.samplerate)),
- e.length &&
- ((n = e.length * n),
- this.trigger('segmentTimingInfo', gt(de(a.baseMediaDecodeTime, a.samplerate), e[0].dts, e[0].pts, e[0].dts + n, e[0].pts + n, r || 0)),
- this.trigger('timingInfo', { start: e[0].pts, end: e[0].pts + n })),
- this.trigger('data', { track: a, boxes: i })),
- this.trigger('done', 'AudioSegmentStream')
- }),
- (this.reset = function () {
- _e(a), (o = []), this.trigger('reset')
- })
- }
- ;(Ct.prototype = new j()),
- ((yt = function (s, a) {
- var t,
- i,
- o = [],
- l = [],
- u = (a = a || {}).firstSequenceNumber || 0
- yt.prototype.init.call(this),
- delete s.minPTS,
- (this.gopCache_ = []),
- (this.push = function (e) {
- Te(s, e),
- 'seq_parameter_set_rbsp' !== e.nalUnitType ||
- t ||
- ((t = e.config),
- (s.sps = [e.data]),
- St.forEach(function (e) {
- s[e] = t[e]
- }, this)),
- 'pic_parameter_set_rbsp' !== e.nalUnitType || i || ((i = e.data), (s.pps = [e.data])),
- o.push(e)
- }),
- (this.flush = function () {
- for (var e, t, i, n = 0; o.length && 'access_unit_delimiter_rbsp' !== o[0].nalUnitType; ) o.shift()
- if (0 === o.length) return this.resetStream_(), void this.trigger('done', 'VideoSegmentStream')
- if (
- ((e = $(o)),
- (t = J(e))[0][0].keyFrame ||
- ((i = this.getGopForFusion_(o[0], s))
- ? ((n = i.duration),
- t.unshift(i),
- (t.byteLength += i.byteLength),
- (t.nalCount += i.nalCount),
- (t.pts = i.pts),
- (t.dts = i.dts),
- (t.duration += i.duration))
- : (t = Z(t))),
- l.length)
- ) {
- var r = a.alignGopsAtEnd ? this.alignGopsAtEnd_(t) : this.alignGopsAtStart_(t)
- if (!r)
- return (
- this.gopCache_.unshift({ gop: t.pop(), pps: s.pps, sps: s.sps }),
- (this.gopCache_.length = Math.min(6, this.gopCache_.length)),
- (o = []),
- this.resetStream_(),
- void this.trigger('done', 'VideoSegmentStream')
- )
- _e(s), (t = r)
- }
- Te(s, t),
- (s.samples = ee(t)),
- (e = K(te(t))),
- (s.baseMediaDecodeTime = be(s, a.keepOriginalTimestamps)),
- this.trigger(
- 'processedGopsInfo',
- t.map(function (e) {
- return { pts: e.pts, dts: e.dts, byteLength: e.byteLength }
- })
- ),
- (i = t[0]),
- (r = t[t.length - 1]),
- this.trigger('segmentTimingInfo', gt(s.baseMediaDecodeTime, i.dts, i.pts, r.dts + r.duration, r.pts + r.duration, n)),
- this.trigger('timingInfo', { start: t[0].pts, end: t[t.length - 1].pts + t[t.length - 1].duration }),
- this.gopCache_.unshift({ gop: t.pop(), pps: s.pps, sps: s.sps }),
- (this.gopCache_.length = Math.min(6, this.gopCache_.length)),
- (o = []),
- this.trigger('baseMediaDecodeTime', s.baseMediaDecodeTime),
- this.trigger('timelineStartInfo', s.timelineStartInfo),
- (n = Y(u, [s])),
- (t = new Uint8Array(n.byteLength + e.byteLength)),
- u++,
- t.set(n),
- t.set(e, n.byteLength),
- this.trigger('data', { track: s, boxes: t }),
- this.resetStream_(),
- this.trigger('done', 'VideoSegmentStream')
- }),
- (this.reset = function () {
- this.resetStream_(), (o = []), (this.gopCache_.length = 0), (l.length = 0), this.trigger('reset')
- }),
- (this.resetStream_ = function () {
- _e(s), (i = t = void 0)
- }),
- (this.getGopForFusion_ = function (e) {
- for (var t, i, n, r = 1 / 0, a = 0; a < this.gopCache_.length; a++)
- (i = (n = this.gopCache_[a]).gop),
- s.pps &&
- mt(s.pps[0], n.pps[0]) &&
- s.sps &&
- mt(s.sps[0], n.sps[0]) &&
- (i.dts < s.timelineStartInfo.dts || (-1e4 <= (i = e.dts - i.dts - i.duration) && i <= 45e3 && (!t || i < r) && ((t = n), (r = i))))
- return t ? t.gop : null
- }),
- (this.alignGopsAtStart_ = function (e) {
- for (var t, i, n, r, a = e.byteLength, s = e.nalCount, o = e.duration, u = (t = 0); u < l.length && t < e.length && ((i = l[u]), (n = e[t]), i.pts !== n.pts); )
- n.pts > i.pts ? u++ : (t++, (a -= n.byteLength), (s -= n.nalCount), (o -= n.duration))
- return 0 === t ? e : t === e.length ? null : (((r = e.slice(t)).byteLength = a), (r.duration = o), (r.nalCount = s), (r.pts = r[0].pts), (r.dts = r[0].dts), r)
- }),
- (this.alignGopsAtEnd_ = function (e) {
- for (var t, i, n = l.length - 1, r = e.length - 1, a = null, s = !1; 0 <= n && 0 <= r; ) {
- if (((t = l[n]), (i = e[r]), t.pts === i.pts)) {
- s = !0
- break
- }
- t.pts > i.pts ? n-- : (n === l.length - 1 && (a = r), r--)
- }
- if (!s && null === a) return null
- if (0 === (u = s ? r : a)) return e
- var o = e.slice(u),
- u = o.reduce(
- function (e, t) {
- return (e.byteLength += t.byteLength), (e.duration += t.duration), (e.nalCount += t.nalCount), e
- },
- { byteLength: 0, duration: 0, nalCount: 0 }
- )
- return (o.byteLength = u.byteLength), (o.duration = u.duration), (o.nalCount = u.nalCount), (o.pts = o[0].pts), (o.dts = o[0].dts), o
- }),
- (this.alignGopsWith = function (e) {
- l = e
- })
- }).prototype = new j()),
- ((_t = function (e, t) {
- ;(this.numberOfTracks = 0),
- (this.metadataStream = t),
- 'undefined' != typeof (e = e || {}).remux ? (this.remuxTracks = !!e.remux) : (this.remuxTracks = !0),
- 'boolean' == typeof e.keepOriginalTimestamps ? (this.keepOriginalTimestamps = e.keepOriginalTimestamps) : (this.keepOriginalTimestamps = !1),
- (this.pendingTracks = []),
- (this.videoTrack = null),
- (this.pendingBoxes = []),
- (this.pendingCaptions = []),
- (this.pendingMetadata = []),
- (this.pendingBytes = 0),
- (this.emittedTracks = 0),
- _t.prototype.init.call(this),
- (this.push = function (e) {
- return e.text
- ? this.pendingCaptions.push(e)
- : e.frames
- ? this.pendingMetadata.push(e)
- : (this.pendingTracks.push(e.track),
- (this.pendingBytes += e.boxes.byteLength),
- 'video' === e.track.type && ((this.videoTrack = e.track), this.pendingBoxes.push(e.boxes)),
- void ('audio' === e.track.type && ((this.audioTrack = e.track), this.pendingBoxes.unshift(e.boxes))))
- })
- }).prototype = new j()),
- (_t.prototype.flush = function (e) {
- var t,
- i,
- n,
- r = 0,
- a = { captions: [], captionStreams: {}, metadata: [], info: {} },
- s = 0
- if (this.pendingTracks.length < this.numberOfTracks) {
- if ('VideoSegmentStream' !== e && 'AudioSegmentStream' !== e) return
- if (this.remuxTracks) return
- if (0 === this.pendingTracks.length) return this.emittedTracks++, void (this.emittedTracks >= this.numberOfTracks && (this.trigger('done'), (this.emittedTracks = 0)))
- }
- if (
- (this.videoTrack
- ? ((s = this.videoTrack.timelineStartInfo.pts),
- St.forEach(function (e) {
- a.info[e] = this.videoTrack[e]
- }, this))
- : this.audioTrack &&
- ((s = this.audioTrack.timelineStartInfo.pts),
- Tt.forEach(function (e) {
- a.info[e] = this.audioTrack[e]
- }, this)),
- this.videoTrack || this.audioTrack)
- ) {
- for (
- 1 === this.pendingTracks.length ? (a.type = this.pendingTracks[0].type) : (a.type = 'combined'),
- this.emittedTracks += this.pendingTracks.length,
- e = Q(this.pendingTracks),
- a.initSegment = new Uint8Array(e.byteLength),
- a.initSegment.set(e),
- a.data = new Uint8Array(this.pendingBytes),
- n = 0;
- n < this.pendingBoxes.length;
- n++
- )
- a.data.set(this.pendingBoxes[n], r), (r += this.pendingBoxes[n].byteLength)
- for (n = 0; n < this.pendingCaptions.length; n++)
- ((t = this.pendingCaptions[n]).startTime = pe(t.startPts, s, this.keepOriginalTimestamps)),
- (t.endTime = pe(t.endPts, s, this.keepOriginalTimestamps)),
- (a.captionStreams[t.stream] = !0),
- a.captions.push(t)
- for (n = 0; n < this.pendingMetadata.length; n++) ((i = this.pendingMetadata[n]).cueTime = pe(i.pts, s, this.keepOriginalTimestamps)), a.metadata.push(i)
- for (
- a.metadata.dispatchType = this.metadataStream.dispatchType,
- this.pendingTracks.length = 0,
- this.videoTrack = null,
- this.pendingBoxes.length = 0,
- this.pendingCaptions.length = 0,
- this.pendingBytes = 0,
- this.pendingMetadata.length = 0,
- this.trigger('data', a),
- n = 0;
- n < a.captions.length;
- n++
- )
- (t = a.captions[n]), this.trigger('caption', t)
- for (n = 0; n < a.metadata.length; n++) (i = a.metadata[n]), this.trigger('id3Frame', i)
- }
- this.emittedTracks >= this.numberOfTracks && (this.trigger('done'), (this.emittedTracks = 0))
- }),
- (_t.prototype.setRemux = function (e) {
- this.remuxTracks = e
- }),
- ((vt = function (n) {
- var r,
- a,
- s = this,
- i = !0
- vt.prototype.init.call(this),
- (this.baseMediaDecodeTime = (n = n || {}).baseMediaDecodeTime || 0),
- (this.transmuxPipeline_ = {}),
- (this.setupAacPipeline = function () {
- var t = {}
- ;((this.transmuxPipeline_ = t).type = 'aac'),
- (t.metadataStream = new Je.MetadataStream()),
- (t.aacStream = new bt()),
- (t.audioTimestampRolloverStream = new Je.TimestampRolloverStream('audio')),
- (t.timedMetadataTimestampRolloverStream = new Je.TimestampRolloverStream('timed-metadata')),
- (t.adtsStream = new rt()),
- (t.coalesceStream = new _t(n, t.metadataStream)),
- (t.headOfPipeline = t.aacStream),
- t.aacStream.pipe(t.audioTimestampRolloverStream).pipe(t.adtsStream),
- t.aacStream.pipe(t.timedMetadataTimestampRolloverStream).pipe(t.metadataStream).pipe(t.coalesceStream),
- t.metadataStream.on('timestamp', function (e) {
- t.aacStream.setTimestamp(e.timeStamp)
- }),
- t.aacStream.on('data', function (e) {
- ;('timed-metadata' !== e.type && 'audio' !== e.type) ||
- t.audioSegmentStream ||
- ((a = a || { timelineStartInfo: { baseMediaDecodeTime: s.baseMediaDecodeTime }, codec: 'adts', type: 'audio' }),
- t.coalesceStream.numberOfTracks++,
- (t.audioSegmentStream = new Ct(a, n)),
- t.audioSegmentStream.on('log', s.getLogTrigger_('audioSegmentStream')),
- t.audioSegmentStream.on('timingInfo', s.trigger.bind(s, 'audioTimingInfo')),
- t.adtsStream.pipe(t.audioSegmentStream).pipe(t.coalesceStream),
- s.trigger('trackinfo', { hasAudio: !!a, hasVideo: !!r }))
- }),
- t.coalesceStream.on('data', this.trigger.bind(this, 'data')),
- t.coalesceStream.on('done', this.trigger.bind(this, 'done')),
- ft(this, t)
- }),
- (this.setupTsPipeline = function () {
- var i = {}
- ;((this.transmuxPipeline_ = i).type = 'ts'),
- (i.metadataStream = new Je.MetadataStream()),
- (i.packetStream = new Je.TransportPacketStream()),
- (i.parseStream = new Je.TransportParseStream()),
- (i.elementaryStream = new Je.ElementaryStream()),
- (i.timestampRolloverStream = new Je.TimestampRolloverStream()),
- (i.adtsStream = new rt()),
- (i.h264Stream = new wt()),
- (i.captionStream = new Je.CaptionStream(n)),
- (i.coalesceStream = new _t(n, i.metadataStream)),
- (i.headOfPipeline = i.packetStream),
- i.packetStream.pipe(i.parseStream).pipe(i.elementaryStream).pipe(i.timestampRolloverStream),
- i.timestampRolloverStream.pipe(i.h264Stream),
- i.timestampRolloverStream.pipe(i.adtsStream),
- i.timestampRolloverStream.pipe(i.metadataStream).pipe(i.coalesceStream),
- i.h264Stream.pipe(i.captionStream).pipe(i.coalesceStream),
- i.elementaryStream.on('data', function (e) {
- var t
- if ('metadata' === e.type) {
- for (t = e.tracks.length; t--; )
- r || 'video' !== e.tracks[t].type
- ? a || 'audio' !== e.tracks[t].type || ((a = e.tracks[t]).timelineStartInfo.baseMediaDecodeTime = s.baseMediaDecodeTime)
- : ((r = e.tracks[t]).timelineStartInfo.baseMediaDecodeTime = s.baseMediaDecodeTime)
- r &&
- !i.videoSegmentStream &&
- (i.coalesceStream.numberOfTracks++,
- (i.videoSegmentStream = new yt(r, n)),
- i.videoSegmentStream.on('log', s.getLogTrigger_('videoSegmentStream')),
- i.videoSegmentStream.on('timelineStartInfo', function (e) {
- a && !n.keepOriginalTimestamps && ((a.timelineStartInfo = e), i.audioSegmentStream.setEarliestDts(e.dts - s.baseMediaDecodeTime))
- }),
- i.videoSegmentStream.on('processedGopsInfo', s.trigger.bind(s, 'gopInfo')),
- i.videoSegmentStream.on('segmentTimingInfo', s.trigger.bind(s, 'videoSegmentTimingInfo')),
- i.videoSegmentStream.on('baseMediaDecodeTime', function (e) {
- a && i.audioSegmentStream.setVideoBaseMediaDecodeTime(e)
- }),
- i.videoSegmentStream.on('timingInfo', s.trigger.bind(s, 'videoTimingInfo')),
- i.h264Stream.pipe(i.videoSegmentStream).pipe(i.coalesceStream)),
- a &&
- !i.audioSegmentStream &&
- (i.coalesceStream.numberOfTracks++,
- (i.audioSegmentStream = new Ct(a, n)),
- i.audioSegmentStream.on('log', s.getLogTrigger_('audioSegmentStream')),
- i.audioSegmentStream.on('timingInfo', s.trigger.bind(s, 'audioTimingInfo')),
- i.audioSegmentStream.on('segmentTimingInfo', s.trigger.bind(s, 'audioSegmentTimingInfo')),
- i.adtsStream.pipe(i.audioSegmentStream).pipe(i.coalesceStream)),
- s.trigger('trackinfo', { hasAudio: !!a, hasVideo: !!r })
- }
- }),
- i.coalesceStream.on('data', this.trigger.bind(this, 'data')),
- i.coalesceStream.on('id3Frame', function (e) {
- ;(e.dispatchType = i.metadataStream.dispatchType), s.trigger('id3Frame', e)
- }),
- i.coalesceStream.on('caption', this.trigger.bind(this, 'caption')),
- i.coalesceStream.on('done', this.trigger.bind(this, 'done')),
- ft(this, i)
- }),
- (this.setBaseMediaDecodeTime = function (e) {
- var t = this.transmuxPipeline_
- n.keepOriginalTimestamps || (this.baseMediaDecodeTime = e),
- a &&
- ((a.timelineStartInfo.dts = void 0),
- (a.timelineStartInfo.pts = void 0),
- _e(a),
- t.audioTimestampRolloverStream && t.audioTimestampRolloverStream.discontinuity()),
- r &&
- (t.videoSegmentStream && (t.videoSegmentStream.gopCache_ = []),
- (r.timelineStartInfo.dts = void 0),
- (r.timelineStartInfo.pts = void 0),
- _e(r),
- t.captionStream.reset()),
- t.timestampRolloverStream && t.timestampRolloverStream.discontinuity()
- }),
- (this.setAudioAppendStart = function (e) {
- a && this.transmuxPipeline_.audioSegmentStream.setAudioAppendStart(e)
- }),
- (this.setRemux = function (e) {
- var t = this.transmuxPipeline_
- ;(n.remux = e), t && t.coalesceStream && t.coalesceStream.setRemux(e)
- }),
- (this.alignGopsWith = function (e) {
- r && this.transmuxPipeline_.videoSegmentStream && this.transmuxPipeline_.videoSegmentStream.alignGopsWith(e)
- }),
- (this.getLogTrigger_ = function (t) {
- var i = this
- return function (e) {
- ;(e.stream = t), i.trigger('log', e)
- }
- }),
- (this.push = function (e) {
- var t
- i &&
- ((t = Et(e)) && 'aac' !== this.transmuxPipeline_.type ? this.setupAacPipeline() : t || 'ts' === this.transmuxPipeline_.type || this.setupTsPipeline(),
- (i = !1)),
- this.transmuxPipeline_.headOfPipeline.push(e)
- }),
- (this.flush = function () {
- ;(i = !0), this.transmuxPipeline_.headOfPipeline.flush()
- }),
- (this.endTimeline = function () {
- this.transmuxPipeline_.headOfPipeline.endTimeline()
- }),
- (this.reset = function () {
- this.transmuxPipeline_.headOfPipeline && this.transmuxPipeline_.headOfPipeline.reset()
- }),
- (this.resetCaptions = function () {
- this.transmuxPipeline_.captionStream && this.transmuxPipeline_.captionStream.reset()
- })
- }).prototype = new j())
- function It(e, c) {
- var i = Rt(e, ['moof', 'traf']),
- e = Rt(e, ['mdat']),
- d = {},
- n = []
- return (
- e.forEach(function (e, t) {
- t = i[t]
- n.push({ mdat: e, traf: t })
- }),
- n.forEach(function (e) {
- var t,
- i,
- n,
- r,
- a,
- s = e.mdat,
- o = e.traf,
- u = Rt(o, ['tfhd']),
- l = Ht(u[0]),
- e = l.trackId,
- u = Rt(o, ['tfdt']),
- u = 0 < u.length ? Bt(u[0]).baseMediaDecodeTime : 0,
- o = Rt(o, ['trun'])
- c === e &&
- 0 < o.length &&
- ((o = o),
- (t = u),
- (i = (l = l).defaultSampleDuration || 0),
- (n = l.defaultSampleSize || 0),
- (r = l.trackId),
- (a = []),
- o.forEach(function (e) {
- e = jt(e).samples
- e.forEach(function (e) {
- void 0 === e.duration && (e.duration = i),
- void 0 === e.size && (e.size = n),
- (e.trackId = r),
- (e.dts = t),
- void 0 === e.compositionTimeOffset && (e.compositionTimeOffset = 0),
- 'bigint' == typeof t
- ? ((e.pts = t + qt.BigInt(e.compositionTimeOffset)), (t += qt.BigInt(e.duration)))
- : ((e.pts = t + e.compositionTimeOffset), (t += e.duration))
- }),
- (a = a.concat(e))
- }),
- (s = (function (e, t, i) {
- for (var n, r, a = new DataView(e.buffer, e.byteOffset, e.byteLength), s = { logs: [], seiNals: [] }, o = 0; o + 4 < e.length; o += n)
- if (((n = a.getUint32(o)), (o += 4), !(n <= 0)))
- switch (31 & e[o]) {
- case 6:
- var u = e.subarray(o + 1, o + 1 + n),
- l = (function (e, t) {
- for (var i = e, n = 0; n < t.length; n++) {
- var r = t[n]
- if (i < r.size) return r
- i -= r.size
- }
- return null
- })(o, t),
- u = { nalUnitType: 'sei_rbsp', size: n, data: u, escapedRBSP: Vt(u), trackId: i }
- if (l) (u.pts = l.pts), (u.dts = l.dts), (r = l)
- else {
- if (!r) {
- s.logs.push({ level: 'warn', message: "We've encountered a nal unit without data at " + o + ' for trackId ' + i + '. See mux.js#223.' })
- break
- }
- ;(u.pts = r.pts), (u.dts = r.dts)
- }
- s.seiNals.push(u)
- }
- return s
- })(s, a, e)),
- d[e] || (d[e] = { seiNals: [], logs: [] }),
- (d[e].seiNals = d[e].seiNals.concat(s.seiNals)),
- (d[e].logs = d[e].logs.concat(s.logs)))
- }),
- d
- )
- }
- function xt(e) {
- var t = 31 & e[1]
- return (t <<= 8), (t |= e[2])
- }
- function At(e) {
- return !!(64 & e[1])
- }
- function Pt(e) {
- var t = 0
- return 1 < (48 & e[3]) >>> 4 && (t += e[4] + 1), t
- }
- function Lt(e) {
- switch (e) {
- case 5:
- return 'slice_layer_without_partitioning_rbsp_idr'
- case 6:
- return 'sei_rbsp'
- case 7:
- return 'seq_parameter_set_rbsp'
- case 8:
- return 'pic_parameter_set_rbsp'
- case 9:
- return 'access_unit_delimiter_rbsp'
- default:
- return null
- }
- }
- var Dt = { Transmuxer: vt, VideoSegmentStream: yt, AudioSegmentStream: Ct, AUDIO_PROPERTIES: Tt, VIDEO_PROPERTIES: St, generateSegmentTimingInfo: gt },
- e = function (e) {
- return e >>> 0
- },
- Ot = function (e) {
- var t = ''
- return (t += String.fromCharCode(e[0])), (t += String.fromCharCode(e[1])), (t += String.fromCharCode(e[2])), (t += String.fromCharCode(e[3]))
- },
- Mt = e,
- Rt = function e(t, i) {
- var n,
- r,
- a,
- s = []
- if (!i.length) return null
- for (n = 0; n < t.byteLength; )
- (r = Mt((t[n] << 24) | (t[n + 1] << 16) | (t[n + 2] << 8) | t[n + 3])),
- (a = Ot(t.subarray(n + 4, n + 8))),
- (r = 1 < r ? n + r : t.byteLength),
- a === i[0] && (1 === i.length ? s.push(t.subarray(n + 8, r)) : (a = e(t.subarray(n + 8, r), i.slice(1))).length && (s = s.concat(a))),
- (n = r)
- return s
- },
- Nt = e,
- Ut = q.getUint64,
- Bt = function (e) {
- var t = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)) }
- return 1 === t.version ? (t.baseMediaDecodeTime = Ut(e.subarray(4))) : (t.baseMediaDecodeTime = Nt((e[4] << 24) | (e[5] << 16) | (e[6] << 8) | e[7])), t
- },
- Ft = function (e) {
- return {
- isLeading: (12 & e[0]) >>> 2,
- dependsOn: 3 & e[0],
- isDependedOn: (192 & e[1]) >>> 6,
- hasRedundancy: (48 & e[1]) >>> 4,
- paddingValue: (14 & e[1]) >>> 1,
- isNonSyncSample: 1 & e[1],
- degradationPriority: (e[2] << 8) | e[3],
- }
- },
- jt = function (e) {
- var t,
- i = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), samples: [] },
- n = new DataView(e.buffer, e.byteOffset, e.byteLength),
- r = 1 & i.flags[2],
- a = 4 & i.flags[2],
- s = 1 & i.flags[1],
- o = 2 & i.flags[1],
- u = 4 & i.flags[1],
- l = 8 & i.flags[1],
- c = n.getUint32(4),
- d = 8
- for (
- r && ((i.dataOffset = n.getInt32(d)), (d += 4)),
- a &&
- c &&
- ((t = { flags: Ft(e.subarray(d, d + 4)) }),
- (d += 4),
- s && ((t.duration = n.getUint32(d)), (d += 4)),
- o && ((t.size = n.getUint32(d)), (d += 4)),
- l && (1 === i.version ? (t.compositionTimeOffset = n.getInt32(d)) : (t.compositionTimeOffset = n.getUint32(d)), (d += 4)),
- i.samples.push(t),
- c--);
- c--;
- )
- (t = {}),
- s && ((t.duration = n.getUint32(d)), (d += 4)),
- o && ((t.size = n.getUint32(d)), (d += 4)),
- u && ((t.flags = Ft(e.subarray(d, d + 4))), (d += 4)),
- l && (1 === i.version ? (t.compositionTimeOffset = n.getInt32(d)) : (t.compositionTimeOffset = n.getUint32(d)), (d += 4)),
- i.samples.push(t)
- return i
- },
- Ht = function (e) {
- var t = new DataView(e.buffer, e.byteOffset, e.byteLength),
- i = { version: e[0], flags: new Uint8Array(e.subarray(1, 4)), trackId: t.getUint32(4) },
- n = 1 & i.flags[2],
- r = 2 & i.flags[2],
- a = 8 & i.flags[2],
- s = 16 & i.flags[2],
- o = 32 & i.flags[2],
- u = 65536 & i.flags[0],
- l = 131072 & i.flags[0],
- e = 8
- return (
- n && ((e += 4), (i.baseDataOffset = t.getUint32(12)), (e += 4)),
- r && ((i.sampleDescriptionIndex = t.getUint32(e)), (e += 4)),
- a && ((i.defaultSampleDuration = t.getUint32(e)), (e += 4)),
- s && ((i.defaultSampleSize = t.getUint32(e)), (e += 4)),
- o && (i.defaultSampleFlags = t.getUint32(e)),
- u && (i.durationIsEmpty = !0),
- !n && l && (i.baseDataOffsetIsMoof = !0),
- i
- )
- },
- j = 'undefined' != typeof globalThis ? globalThis : 'undefined' != typeof window ? window : 'undefined' != typeof global ? global : 'undefined' != typeof self ? self : {},
- j = 'undefined' != typeof window ? window : 'undefined' != typeof j ? j : 'undefined' != typeof self ? self : {},
- qt = j,
- Vt = ke,
- Wt = Fe.CaptionStream,
- Gt = function () {
- var t,
- r,
- a,
- s,
- o,
- i,
- n = !1
- ;(this.isInitialized = function () {
- return n
- }),
- (this.init = function (e) {
- ;(t = new Wt()),
- (n = !0),
- (i = !!e && e.isPartial),
- t.on('data', function (e) {
- ;(e.startTime = e.startPts / s), (e.endTime = e.endPts / s), o.captions.push(e), (o.captionStreams[e.stream] = !0)
- }),
- t.on('log', function (e) {
- o.logs.push(e)
- })
- }),
- (this.isNewInit = function (e, t) {
- return !((e && 0 === e.length) || (t && 'object' == typeof t && 0 === Object.keys(t).length)) && (a !== e[0] || s !== t[a])
- }),
- (this.parse = function (e, t, i) {
- if (!this.isInitialized()) return null
- if (!t || !i) return null
- if (this.isNewInit(t, i)) (a = t[0]), (s = i[a])
- else if (null === a || !s) return r.push(e), null
- for (; 0 < r.length; ) {
- var n = r.shift()
- this.parse(n, t, i)
- }
- return (
- (e = (function (e, t, i) {
- if (null === t) return null
- t = It(e, t)[t] || {}
- return { seiNals: t.seiNals, logs: t.logs, timescale: i }
- })(e, a, s)) &&
- e.logs &&
- (o.logs = o.logs.concat(e.logs)),
- null !== e && e.seiNals ? (this.pushNals(e.seiNals), this.flushStream(), o) : o.logs.length ? { logs: o.logs, captions: [], captionStreams: [] } : null
- )
- }),
- (this.pushNals = function (e) {
- if (!this.isInitialized() || !e || 0 === e.length) return null
- e.forEach(function (e) {
- t.push(e)
- })
- }),
- (this.flushStream = function () {
- if (!this.isInitialized()) return null
- i ? t.partialFlush() : t.flush()
- }),
- (this.clearParsedCaptions = function () {
- ;(o.captions = []), (o.captionStreams = {}), (o.logs = [])
- }),
- (this.resetCaptionStream = function () {
- if (!this.isInitialized()) return null
- t.reset()
- }),
- (this.clearAllCaptions = function () {
- this.clearParsedCaptions(), this.resetCaptionStream()
- }),
- (this.reset = function () {
- ;(r = []), (s = a = null), o ? this.clearParsedCaptions() : (o = { captions: [], captionStreams: {}, logs: [] }), this.resetCaptionStream()
- }),
- this.reset()
- },
- zt = e,
- Xt = function (e) {
- return ('00' + e.toString(16)).slice(-2)
- },
- Kt = q.getUint64,
- j = function (e) {
- return Rt(e, ['moov', 'trak']).reduce(function (e, t) {
- var i,
- n,
- r = Rt(t, ['tkhd'])[0]
- return r
- ? ((i = r[0]),
- (r = zt((r[(n = 0 === i ? 12 : 20)] << 24) | (r[1 + n] << 16) | (r[2 + n] << 8) | r[3 + n])),
- (t = Rt(t, ['mdia', 'mdhd'])[0]) ? ((i = t[0]), (e[r] = zt((t[(n = 0 === i ? 12 : 20)] << 24) | (t[1 + n] << 16) | (t[2 + n] << 8) | t[3 + n])), e) : null)
- : null
- }, {})
- },
- ke = function (a, e) {
- e = Rt(e, ['moof', 'traf']).reduce(function (e, t) {
- var i,
- n = Rt(t, ['tfhd'])[0],
- r = zt((n[4] << 24) | (n[5] << 16) | (n[6] << 8) | n[7]),
- n = a[r] || 9e4,
- r = Rt(t, ['tfdt'])[0],
- t = new DataView(r.buffer, r.byteOffset, r.byteLength),
- t = 1 === r[0] ? Kt(r.subarray(4, 12)) : t.getUint32(4)
- return (
- 'bigint' == typeof t ? (i = t / qt.BigInt(n)) : 'number' != typeof t || isNaN(t) || (i = t / n), (e = (i = i < Number.MAX_SAFE_INTEGER ? Number(i) : i) < e ? i : e)
- )
- }, 1 / 0)
- return 'bigint' == typeof e || isFinite(e) ? e : 0
- },
- e = function (e) {
- var e = Rt(e, ['moov', 'trak']),
- n = []
- return (
- e.forEach(function (e) {
- var t = Rt(e, ['mdia', 'hdlr']),
- i = Rt(e, ['tkhd'])
- t.forEach(function (e, t) {
- ;(e = Ot(e.subarray(8, 12))), (t = i[t])
- 'vide' === e && ((t = 0 === (t = new DataView(t.buffer, t.byteOffset, t.byteLength)).getUint8(0) ? t.getUint32(12) : t.getUint32(20)), n.push(t))
- })
- }),
- n
- )
- },
- Yt = function (e) {
- var t = 0 === e[0] ? 12 : 20
- return zt((e[t] << 24) | (e[1 + t] << 16) | (e[2 + t] << 8) | e[3 + t])
- },
- q = function (e) {
- var e = Rt(e, ['moov', 'trak']),
- s = []
- return (
- e.forEach(function (e) {
- var t = {},
- i = Rt(e, ['tkhd'])[0]
- i && ((i = (n = new DataView(i.buffer, i.byteOffset, i.byteLength)).getUint8(0)), (t.id = 0 === i ? n.getUint32(12) : n.getUint32(20)))
- var n = Rt(e, ['mdia', 'hdlr'])[0]
- n && ((a = Ot(n.subarray(8, 12))), (t.type = 'vide' === a ? 'video' : 'soun' === a ? 'audio' : a))
- var r,
- a = Rt(e, ['mdia', 'minf', 'stbl', 'stsd'])[0]
- a &&
- ((a = a.subarray(8)),
- (t.codec = Ot(a.subarray(4, 8))),
- (a = Rt(a, [t.codec])[0]) &&
- (/^[asm]vc[1-9]$/i.test(t.codec)
- ? ((r = a.subarray(78)),
- 'avcC' === Ot(r.subarray(4, 8)) && 11 < r.length
- ? ((t.codec += '.'), (t.codec += Xt(r[9])), (t.codec += Xt(r[10])), (t.codec += Xt(r[11])))
- : (t.codec = 'avc1.4d400d'))
- : /^mp4[a,v]$/i.test(t.codec)
- ? ((r = a.subarray(28)),
- 'esds' === Ot(r.subarray(4, 8)) && 20 < r.length && 0 !== r[19]
- ? ((t.codec += '.' + Xt(r[19])), (t.codec += '.' + Xt((r[20] >>> 2) & 63).replace(/^0/, '')))
- : (t.codec = 'mp4a.40.2'))
- : (t.codec = t.codec.toLowerCase())))
- e = Rt(e, ['mdia', 'mdhd'])[0]
- e && (t.timescale = Yt(e)), s.push(t)
- }),
- s
- )
- },
- Qt = ke,
- $t = q,
- Jt = Ie,
- Zt = {}
- ;(Zt.ts = {
- parseType: function (e, t) {
- e = xt(e)
- return 0 === e ? 'pat' : e === t ? 'pmt' : t ? 'pes' : null
- },
- parsePat: function (e) {
- var t = At(e),
- i = 4 + Pt(e)
- return t && (i += e[i] + 1), ((31 & e[i + 10]) << 8) | e[i + 11]
- },
- parsePmt: function (e) {
- var t = {},
- i = At(e),
- n = 4 + Pt(e)
- if ((i && (n += e[n] + 1), 1 & e[n + 5])) {
- for (var r = 3 + (((15 & e[n + 1]) << 8) | e[n + 2]) - 4, a = 12 + (((15 & e[n + 10]) << 8) | e[n + 11]); a < r; ) {
- var s = n + a
- ;(t[((31 & e[s + 1]) << 8) | e[s + 2]] = e[s]), (a += 5 + (((15 & e[s + 3]) << 8) | e[s + 4]))
- }
- return t
- }
- },
- parsePayloadUnitStartIndicator: At,
- parsePesType: function (e, t) {
- switch (t[xt(e)]) {
- case je.H264_STREAM_TYPE:
- return 'video'
- case je.ADTS_STREAM_TYPE:
- return 'audio'
- case je.METADATA_STREAM_TYPE:
- return 'timed-metadata'
- default:
- return null
- }
- },
- parsePesTime: function (e) {
- if (!At(e)) return null
- var t = 4 + Pt(e)
- if (t >= e.byteLength) return null
- var i = null,
- n = e[t + 7]
- return (
- 192 & n &&
- (((i = {}).pts = ((14 & e[t + 9]) << 27) | ((255 & e[t + 10]) << 20) | ((254 & e[t + 11]) << 12) | ((255 & e[t + 12]) << 5) | ((254 & e[t + 13]) >>> 3)),
- (i.pts *= 4),
- (i.pts += (6 & e[t + 13]) >>> 1),
- (i.dts = i.pts),
- 64 & n &&
- ((i.dts = ((14 & e[t + 14]) << 27) | ((255 & e[t + 15]) << 20) | ((254 & e[t + 16]) << 12) | ((255 & e[t + 17]) << 5) | ((254 & e[t + 18]) >>> 3)),
- (i.dts *= 4),
- (i.dts += (6 & e[t + 18]) >>> 1))),
- i
- )
- },
- videoPacketContainsKeyFrame: function (e) {
- for (var t = 4 + Pt(e), i = e.subarray(t), n = 0, r = 0, a = !1; r < i.byteLength - 3; r++)
- if (1 === i[r + 2]) {
- n = r + 5
- break
- }
- for (; n < i.byteLength; )
- switch (i[n]) {
- case 0:
- if (0 !== i[n - 1]) {
- n += 2
- break
- }
- if (0 !== i[n - 2]) {
- n++
- break
- }
- for (r + 3 !== n - 2 && 'slice_layer_without_partitioning_rbsp_idr' === Lt(31 & i[r + 3]) && (a = !0); 1 !== i[++n] && n < i.length; );
- ;(r = n - 2), (n += 3)
- break
- case 1:
- if (0 !== i[n - 1] || 0 !== i[n - 2]) {
- n += 3
- break
- }
- 'slice_layer_without_partitioning_rbsp_idr' === Lt(31 & i[r + 3]) && (a = !0), (r = n - 2), (n += 3)
- break
- default:
- n += 3
- }
- return (i = i.subarray(r)), (n -= r), (r = 0), (a = i && 3 < i.byteLength && 'slice_layer_without_partitioning_rbsp_idr' === Lt(31 & i[r + 3]) ? !0 : a)
- },
- }),
- (Zt.aac = dt)
- function ei(e, t, i) {
- for (var n, r, a, s, o = 0, u = 188, l = !1; u <= e.byteLength; )
- if (71 !== e[o] || (71 !== e[u] && u !== e.byteLength)) o++, u++
- else {
- if (
- ((n = e.subarray(o, u)),
- 'pes' === Zt.ts.parseType(n, t.pid) &&
- ((r = Zt.ts.parsePesType(n, t.table)),
- (a = Zt.ts.parsePayloadUnitStartIndicator(n)),
- 'audio' === r && a && (s = Zt.ts.parsePesTime(n)) && ((s.type = 'audio'), i.audio.push(s), (l = !0))),
- l)
- )
- break
- ;(o += 188), (u += 188)
- }
- for (o = (u = e.byteLength) - 188, l = !1; 0 <= o; )
- if (71 !== e[o] || (71 !== e[u] && u !== e.byteLength)) o--, u--
- else {
- if (
- ((n = e.subarray(o, u)),
- 'pes' === Zt.ts.parseType(n, t.pid) &&
- ((r = Zt.ts.parsePesType(n, t.table)),
- (a = Zt.ts.parsePayloadUnitStartIndicator(n)),
- 'audio' === r && a && (s = Zt.ts.parsePesTime(n)) && ((s.type = 'audio'), i.audio.push(s), (l = !0))),
- l)
- )
- break
- ;(o -= 188), (u -= 188)
- }
- }
- function ti(e) {
- var t,
- i = { pid: null, table: null },
- n = {}
- for (t in (!(function (e, t) {
- for (var i, n = 0, r = 188; r < e.byteLength; )
- if (71 !== e[n] || 71 !== e[r]) n++, r++
- else {
- switch (((i = e.subarray(n, r)), Zt.ts.parseType(i, t.pid))) {
- case 'pat':
- t.pid = Zt.ts.parsePat(i)
- break
- case 'pmt':
- var a = Zt.ts.parsePmt(i)
- ;(t.table = t.table || {}),
- Object.keys(a).forEach(function (e) {
- t.table[e] = a[e]
- })
- }
- ;(n += 188), (r += 188)
- }
- })(e, i),
- i.table))
- if (i.table.hasOwnProperty(t))
- switch (i.table[t]) {
- case je.H264_STREAM_TYPE:
- ;(n.video = []),
- (function (e, t, i) {
- for (var n, r, a, s, o, u, l, c, d = 0, h = 188, p = !1, f = { data: [], size: 0 }; h < e.byteLength; )
- if (71 !== e[d] || 71 !== e[h]) d++, h++
- else {
- if (((n = e.subarray(d, h)), 'pes' === Zt.ts.parseType(n, t.pid)))
- if (
- ((r = Zt.ts.parsePesType(n, t.table)),
- (a = Zt.ts.parsePayloadUnitStartIndicator(n)),
- 'video' === r && (a && !p && (s = Zt.ts.parsePesTime(n)) && ((s.type = 'video'), i.video.push(s), (p = !0)), !i.firstKeyFrame))
- ) {
- if (a && 0 !== f.size) {
- for (o = new Uint8Array(f.size), u = 0; f.data.length; ) (l = f.data.shift()), o.set(l, u), (u += l.byteLength)
- !Zt.ts.videoPacketContainsKeyFrame(o) || ((c = Zt.ts.parsePesTime(o)) && ((i.firstKeyFrame = c), (i.firstKeyFrame.type = 'video'))),
- (f.size = 0)
- }
- f.data.push(n), (f.size += n.byteLength)
- }
- if (p && i.firstKeyFrame) break
- ;(d += 188), (h += 188)
- }
- for (d = (h = e.byteLength) - 188, p = !1; 0 <= d; )
- if (71 !== e[d] || 71 !== e[h]) d--, h--
- else {
- if (
- ((n = e.subarray(d, h)),
- 'pes' === Zt.ts.parseType(n, t.pid) &&
- ((r = Zt.ts.parsePesType(n, t.table)),
- (a = Zt.ts.parsePayloadUnitStartIndicator(n)),
- 'video' === r && a && (s = Zt.ts.parsePesTime(n)) && ((s.type = 'video'), i.video.push(s), (p = !0))),
- p)
- )
- break
- ;(d -= 188), (h -= 188)
- }
- })(e, i, n),
- 0 === n.video.length && delete n.video
- break
- case je.ADTS_STREAM_TYPE:
- ;(n.audio = []), ei(e, i, n), 0 === n.audio.length && delete n.audio
- }
- return n
- }
- var ii = ue,
- ni = function (e, t) {
- var i,
- n,
- r = (
- Zt.aac.isLikelyAacData(e)
- ? function (e) {
- for (var t, i = !1, n = 0, r = null, a = null, s = 0, o = 0; 3 <= e.length - o; ) {
- switch (Zt.aac.parseType(e, o)) {
- case 'timed-metadata':
- if (e.length - o < 10) {
- i = !0
- break
- }
- if ((s = Zt.aac.parseId3TagSize(e, o)) > e.length) {
- i = !0
- break
- }
- null === a && ((t = e.subarray(o, o + s)), (a = Zt.aac.parseAacTimestamp(t))), (o += s)
- break
- case 'audio':
- if (e.length - o < 7) {
- i = !0
- break
- }
- if ((s = Zt.aac.parseAdtsSize(e, o)) > e.length) {
- i = !0
- break
- }
- null === r && ((t = e.subarray(o, o + s)), (r = Zt.aac.parseSampleRate(t))), n++, (o += s)
- break
- default:
- o++
- }
- if (i) return null
- }
- if (null === r || null === a) return null
- var u = ii / r
- return {
- audio: [
- { type: 'audio', dts: a, pts: a },
- { type: 'audio', dts: a + 1024 * n * u, pts: a + 1024 * n * u },
- ],
- }
- }
- : ti
- )(e)
- return r && (r.audio || r.video)
- ? ((e = t),
- (t = r).audio &&
- t.audio.length &&
- (('undefined' != typeof (i = e) && !isNaN(i)) || (i = t.audio[0].dts),
- t.audio.forEach(function (e) {
- ;(e.dts = Jt(e.dts, i)), (e.pts = Jt(e.pts, i)), (e.dtsTime = e.dts / ii), (e.ptsTime = e.pts / ii)
- })),
- t.video &&
- t.video.length &&
- (('undefined' != typeof (n = e) && !isNaN(n)) || (n = t.video[0].dts),
- t.video.forEach(function (e) {
- ;(e.dts = Jt(e.dts, n)), (e.pts = Jt(e.pts, n)), (e.dtsTime = e.dts / ii), (e.ptsTime = e.pts / ii)
- }),
- t.firstKeyFrame && (((t = t.firstKeyFrame).dts = Jt(t.dts, n)), (t.pts = Jt(t.pts, n)), (t.dtsTime = t.dts / ii), (t.ptsTime = t.pts / ii))),
- r)
- : null
- },
- ri = (function () {
- function e(e, t) {
- ;(this.options = t || {}), (this.self = e), this.init()
- }
- var t = e.prototype
- return (
- (t.init = function () {
- var i, e
- this.transmuxer && this.transmuxer.dispose(),
- (this.transmuxer = new Dt.Transmuxer(this.options)),
- (i = this.self),
- (e = this.transmuxer).on('data', function (e) {
- var t = e.initSegment
- e.initSegment = { data: t.buffer, byteOffset: t.byteOffset, byteLength: t.byteLength }
- t = e.data
- ;(e.data = t.buffer), i.postMessage({ action: 'data', segment: e, byteOffset: t.byteOffset, byteLength: t.byteLength }, [e.data])
- }),
- e.on('done', function (e) {
- i.postMessage({ action: 'done' })
- }),
- e.on('gopInfo', function (e) {
- i.postMessage({ action: 'gopInfo', gopInfo: e })
- }),
- e.on('videoSegmentTimingInfo', function (e) {
- var t = {
- start: { decode: ce(e.start.dts), presentation: ce(e.start.pts) },
- end: { decode: ce(e.end.dts), presentation: ce(e.end.pts) },
- baseMediaDecodeTime: ce(e.baseMediaDecodeTime),
- }
- e.prependedContentDuration && (t.prependedContentDuration = ce(e.prependedContentDuration)),
- i.postMessage({ action: 'videoSegmentTimingInfo', videoSegmentTimingInfo: t })
- }),
- e.on('audioSegmentTimingInfo', function (e) {
- var t = {
- start: { decode: ce(e.start.dts), presentation: ce(e.start.pts) },
- end: { decode: ce(e.end.dts), presentation: ce(e.end.pts) },
- baseMediaDecodeTime: ce(e.baseMediaDecodeTime),
- }
- e.prependedContentDuration && (t.prependedContentDuration = ce(e.prependedContentDuration)),
- i.postMessage({ action: 'audioSegmentTimingInfo', audioSegmentTimingInfo: t })
- }),
- e.on('id3Frame', function (e) {
- i.postMessage({ action: 'id3Frame', id3Frame: e })
- }),
- e.on('caption', function (e) {
- i.postMessage({ action: 'caption', caption: e })
- }),
- e.on('trackinfo', function (e) {
- i.postMessage({ action: 'trackinfo', trackInfo: e })
- }),
- e.on('audioTimingInfo', function (e) {
- i.postMessage({ action: 'audioTimingInfo', audioTimingInfo: { start: ce(e.start), end: ce(e.end) } })
- }),
- e.on('videoTimingInfo', function (e) {
- i.postMessage({ action: 'videoTimingInfo', videoTimingInfo: { start: ce(e.start), end: ce(e.end) } })
- }),
- e.on('log', function (e) {
- i.postMessage({ action: 'log', log: e })
- })
- }),
- (t.pushMp4Captions = function (e) {
- this.captionParser || ((this.captionParser = new Gt()), this.captionParser.init())
- var t = new Uint8Array(e.data, e.byteOffset, e.byteLength),
- e = this.captionParser.parse(t, e.trackIds, e.timescales)
- this.self.postMessage({ action: 'mp4Captions', captions: (e && e.captions) || [], logs: (e && e.logs) || [], data: t.buffer }, [t.buffer])
- }),
- (t.probeMp4StartTime = function (e) {
- var t = e.timescales,
- e = e.data,
- t = Qt(t, e)
- this.self.postMessage({ action: 'probeMp4StartTime', startTime: t, data: e }, [e.buffer])
- }),
- (t.probeMp4Tracks = function (e) {
- var t = e.data,
- e = $t(t)
- this.self.postMessage({ action: 'probeMp4Tracks', tracks: e, data: t }, [t.buffer])
- }),
- (t.probeTs = function (e) {
- var t = e.data,
- i = e.baseStartTime,
- e = 'number' != typeof i || isNaN(i) ? void 0 : i * ue,
- i = ni(t, e),
- e = null
- i &&
- ((e = { hasVideo: (i.video && 2 === i.video.length) || !1, hasAudio: (i.audio && 2 === i.audio.length) || !1 }).hasVideo && (e.videoStart = i.video[0].ptsTime),
- e.hasAudio && (e.audioStart = i.audio[0].ptsTime)),
- this.self.postMessage({ action: 'probeTs', result: e, data: t }, [t.buffer])
- }),
- (t.clearAllMp4Captions = function () {
- this.captionParser && this.captionParser.clearAllCaptions()
- }),
- (t.clearParsedMp4Captions = function () {
- this.captionParser && this.captionParser.clearParsedCaptions()
- }),
- (t.push = function (e) {
- e = new Uint8Array(e.data, e.byteOffset, e.byteLength)
- this.transmuxer.push(e)
- }),
- (t.reset = function () {
- this.transmuxer.reset()
- }),
- (t.setTimestampOffset = function (e) {
- e = e.timestampOffset || 0
- this.transmuxer.setBaseMediaDecodeTime(Math.round(le(e)))
- }),
- (t.setAudioAppendStart = function (e) {
- this.transmuxer.setAudioAppendStart(Math.ceil(le(e.appendStart)))
- }),
- (t.setRemux = function (e) {
- this.transmuxer.setRemux(e.remux)
- }),
- (t.flush = function (e) {
- this.transmuxer.flush(), self.postMessage({ action: 'done', type: 'transmuxed' })
- }),
- (t.endTimeline = function () {
- this.transmuxer.endTimeline(), self.postMessage({ action: 'endedtimeline', type: 'transmuxed' })
- }),
- (t.alignGopsWith = function (e) {
- this.transmuxer.alignGopsWith(e.gopsToAlignWith.slice())
- }),
- e
- )
- })()
- self.onmessage = function (e) {
- 'init' === e.data.action && e.data.options
- ? (this.messageHandlers = new ri(self, e.data.options))
- : (this.messageHandlers || (this.messageHandlers = new ri(self)),
- e.data && e.data.action && 'init' !== e.data.action && this.messageHandlers[e.data.action] && this.messageHandlers[e.data.action](e.data))
- }
- })
- )
- ),
- Cl = function (e) {
- ;(e.currentTransmux = null), e.transmuxQueue.length && ((e.currentTransmux = e.transmuxQueue.shift()), 'function' == typeof e.currentTransmux ? e.currentTransmux() : Du(e.currentTransmux))
- },
- Il = function (e) {
- Mu('reset', e)
- },
- xl = function (e) {
- var t = new kl()
- ;(t.currentTransmux = null), (t.transmuxQueue = [])
- var i = t.terminate
- return (
- (t.terminate = function () {
- return (t.currentTransmux = null), (t.transmuxQueue.length = 0), i.call(t)
- }),
- t.postMessage({ action: 'init', options: e }),
- t
- )
- },
- Al = 2,
- Pl = -101,
- Ll = -102,
- Dl = Ro('CodecUtils'),
- Ol = Ro('PlaylistSelector'),
- ar = function () {
- var e = (this.useDevicePixelRatio && window.devicePixelRatio) || 1
- return il(
- this.playlists.master,
- this.systemBandwidth,
- parseInt(Zu(this.tech_.el(), 'width'), 10) * e,
- parseInt(Zu(this.tech_.el(), 'height'), 10) * e,
- this.limitRenditionByPlayerDimensions,
- this.masterPlaylistController_
- )
- },
- Ml = (function (n) {
- function e(e, t) {
- var i = n.call(this) || this
- if (!e) throw new TypeError('Initialization settings are required')
- if ('function' != typeof e.currentTime) throw new TypeError('No currentTime getter specified')
- if (!e.mediaSource) throw new TypeError('No MediaSource specified')
- return (
- (i.bandwidth = e.bandwidth),
- (i.throughput = { rate: 0, count: 0 }),
- (i.roundTrip = NaN),
- i.resetStats_(),
- (i.mediaIndex = null),
- (i.partIndex = null),
- (i.hasPlayed_ = e.hasPlayed),
- (i.currentTime_ = e.currentTime),
- (i.seekable_ = e.seekable),
- (i.seeking_ = e.seeking),
- (i.duration_ = e.duration),
- (i.mediaSource_ = e.mediaSource),
- (i.vhs_ = e.vhs),
- (i.loaderType_ = e.loaderType),
- (i.currentMediaInfo_ = void 0),
- (i.startingMediaInfo_ = void 0),
- (i.segmentMetadataTrack_ = e.segmentMetadataTrack),
- (i.goalBufferLength_ = e.goalBufferLength),
- (i.sourceType_ = e.sourceType),
- (i.sourceUpdater_ = e.sourceUpdater),
- (i.inbandTextTracks_ = e.inbandTextTracks),
- (i.state_ = 'INIT'),
- (i.timelineChangeController_ = e.timelineChangeController),
- (i.shouldSaveSegmentTimingInfo_ = !0),
- (i.parse708captions_ = e.parse708captions),
- (i.useDtsForTimestampOffset_ = e.useDtsForTimestampOffset),
- (i.captionServices_ = e.captionServices),
- (i.experimentalExactManifestTimings = e.experimentalExactManifestTimings),
- (i.checkBufferTimeout_ = null),
- (i.error_ = void 0),
- (i.currentTimeline_ = -1),
- (i.pendingSegment_ = null),
- (i.xhrOptions_ = null),
- (i.pendingSegments_ = []),
- (i.audioDisabled_ = !1),
- (i.isPendingTimestampOffset_ = !1),
- (i.gopBuffer_ = []),
- (i.timeMapping_ = 0),
- (i.safeAppend_ = 11 <= tr.browser.IE_VERSION),
- (i.appendInitSegment_ = { audio: !0, video: !0 }),
- (i.playlistOfLastInitSegment_ = { audio: null, video: null }),
- (i.callQueue_ = []),
- (i.loadQueue_ = []),
- (i.metadataQueue_ = { id3: [], caption: [] }),
- (i.waitingOnRemove_ = !1),
- (i.quotaExceededErrorRetryTimeout_ = null),
- (i.activeInitSegmentId_ = null),
- (i.initSegments_ = {}),
- (i.cacheEncryptionKeys_ = e.cacheEncryptionKeys),
- (i.keyCache_ = {}),
- (i.decrypter_ = e.decrypter),
- (i.syncController_ = e.syncController),
- (i.syncPoint_ = { segmentIndex: 0, time: 0 }),
- (i.transmuxer_ = i.createTransmuxer_()),
- (i.triggerSyncInfoUpdate_ = function () {
- return i.trigger('syncinfoupdate')
- }),
- i.syncController_.on('syncinfoupdate', i.triggerSyncInfoUpdate_),
- i.mediaSource_.addEventListener('sourceopen', function () {
- i.isEndOfStream_() || (i.ended_ = !1)
- }),
- (i.fetchAtBuffer_ = !1),
- (i.logger_ = Ro('SegmentLoader[' + i.loaderType_ + ']')),
- Object.defineProperty(ft(i), 'state', {
- get: function () {
- return this.state_
- },
- set: function (e) {
- e !== this.state_ && (this.logger_(this.state_ + ' -> ' + e), (this.state_ = e), this.trigger('statechange'))
- },
- }),
- i.sourceUpdater_.on('ready', function () {
- i.hasEnoughInfoToAppend_() && i.processCallQueue_()
- }),
- 'main' === i.loaderType_ &&
- i.timelineChangeController_.on('pendingtimelinechange', function () {
- i.hasEnoughInfoToAppend_() && i.processCallQueue_()
- }),
- 'audio' === i.loaderType_ &&
- i.timelineChangeController_.on('timelinechange', function () {
- i.hasEnoughInfoToLoad_() && i.processLoadQueue_(), i.hasEnoughInfoToAppend_() && i.processCallQueue_()
- }),
- i
- )
- }
- mt(e, n)
- var t = e.prototype
- return (
- (t.createTransmuxer_ = function () {
- return xl({ remux: !1, alignGopsAtEnd: this.safeAppend_, keepOriginalTimestamps: !0, parse708captions: this.parse708captions_, captionServices: this.captionServices_ })
- }),
- (t.resetStats_ = function () {
- ;(this.mediaBytesTransferred = 0),
- (this.mediaRequests = 0),
- (this.mediaRequestsAborted = 0),
- (this.mediaRequestsTimedout = 0),
- (this.mediaRequestsErrored = 0),
- (this.mediaTransferDuration = 0),
- (this.mediaSecondsLoaded = 0),
- (this.mediaAppends = 0)
- }),
- (t.dispose = function () {
- this.trigger('dispose'),
- (this.state = 'DISPOSED'),
- this.pause(),
- this.abort_(),
- this.transmuxer_ && this.transmuxer_.terminate(),
- this.resetStats_(),
- this.checkBufferTimeout_ && window.clearTimeout(this.checkBufferTimeout_),
- this.syncController_ && this.triggerSyncInfoUpdate_ && this.syncController_.off('syncinfoupdate', this.triggerSyncInfoUpdate_),
- this.off()
- }),
- (t.setAudio = function (e) {
- ;(this.audioDisabled_ = !e), e ? (this.appendInitSegment_.audio = !0) : this.sourceUpdater_.removeAudio(0, this.duration_())
- }),
- (t.abort = function () {
- 'WAITING' === this.state ? (this.abort_(), (this.state = 'READY'), this.paused() || this.monitorBuffer_()) : this.pendingSegment_ && (this.pendingSegment_ = null)
- }),
- (t.abort_ = function () {
- this.pendingSegment_ && this.pendingSegment_.abortRequests && this.pendingSegment_.abortRequests(),
- (this.pendingSegment_ = null),
- (this.callQueue_ = []),
- (this.loadQueue_ = []),
- (this.metadataQueue_.id3 = []),
- (this.metadataQueue_.caption = []),
- this.timelineChangeController_.clearPendingTimelineChange(this.loaderType_),
- (this.waitingOnRemove_ = !1),
- window.clearTimeout(this.quotaExceededErrorRetryTimeout_),
- (this.quotaExceededErrorRetryTimeout_ = null)
- }),
- (t.checkForAbort_ = function (e) {
- return 'APPENDING' !== this.state || this.pendingSegment_ ? !this.pendingSegment_ || this.pendingSegment_.requestId !== e : ((this.state = 'READY'), !0)
- }),
- (t.error = function (e) {
- return 'undefined' != typeof e && (this.logger_('error occurred:', e), (this.error_ = e)), (this.pendingSegment_ = null), this.error_
- }),
- (t.endOfStream = function () {
- ;(this.ended_ = !0), this.transmuxer_ && Il(this.transmuxer_), (this.gopBuffer_.length = 0), this.pause(), this.trigger('ended')
- }),
- (t.buffered_ = function () {
- var e = this.getMediaInfo_()
- if (!this.sourceUpdater_ || !e) return tr.createTimeRanges()
- if ('main' === this.loaderType_) {
- var t = e.hasAudio,
- i = e.hasVideo,
- e = e.isMuxed
- if (i && t && !this.audioDisabled_ && !e) return this.sourceUpdater_.buffered()
- if (i) return this.sourceUpdater_.videoBuffered()
- }
- return this.sourceUpdater_.audioBuffered()
- }),
- (t.initSegmentForMap = function (e, t) {
- if ((void 0 === t && (t = !1), !e)) return null
- var i = Su(e),
- n = this.initSegments_[i]
- return (
- t && !n && e.bytes && (this.initSegments_[i] = n = { resolvedUri: e.resolvedUri, byterange: e.byterange, bytes: e.bytes, tracks: e.tracks, timescales: e.timescales }), n || e
- )
- }),
- (t.segmentKey = function (e, t) {
- if ((void 0 === t && (t = !1), !e)) return null
- var i = wu(e),
- n = this.keyCache_[i]
- this.cacheEncryptionKeys_ && t && !n && e.bytes && (this.keyCache_[i] = n = { resolvedUri: e.resolvedUri, bytes: e.bytes })
- e = { resolvedUri: (n || e).resolvedUri }
- return n && (e.bytes = n.bytes), e
- }),
- (t.couldBeginLoading_ = function () {
- return this.playlist_ && !this.paused()
- }),
- (t.load = function () {
- if ((this.monitorBuffer_(), this.playlist_))
- return 'INIT' === this.state && this.couldBeginLoading_()
- ? this.init_()
- : void (!this.couldBeginLoading_() || ('READY' !== this.state && 'INIT' !== this.state) || (this.state = 'READY'))
- }),
- (t.init_ = function () {
- return (this.state = 'READY'), this.resetEverything(), this.monitorBuffer_()
- }),
- (t.playlist = function (e, t) {
- if ((void 0 === t && (t = {}), e)) {
- var i = this.playlist_,
- n = this.pendingSegment_
- ;(this.playlist_ = e),
- (this.xhrOptions_ = t),
- 'INIT' === this.state && ((e.syncInfo = { mediaSequence: e.mediaSequence, time: 0 }), 'main' === this.loaderType_ && this.syncController_.setDateTimeMappingForStart(e))
- var r = null
- if (
- (i && (i.id ? (r = i.id) : i.uri && (r = i.uri)),
- this.logger_('playlist update [' + r + ' => ' + (e.id || e.uri) + ']'),
- this.trigger('syncinfoupdate'),
- 'INIT' === this.state && this.couldBeginLoading_())
- )
- return this.init_()
- if (!i || i.uri !== e.uri)
- return null !== this.mediaIndex && (e.endList ? this.resyncLoader() : this.resetLoader()), (this.currentMediaInfo_ = void 0), void this.trigger('playlistupdate')
- t = e.mediaSequence - i.mediaSequence
- this.logger_('live window shift [' + t + ']'),
- null !== this.mediaIndex &&
- ((this.mediaIndex -= t),
- this.mediaIndex < 0
- ? ((this.mediaIndex = null), (this.partIndex = null))
- : ((r = this.playlist_.segments[this.mediaIndex]),
- !this.partIndex ||
- (r.parts && r.parts.length && r.parts[this.partIndex]) ||
- ((r = this.mediaIndex),
- this.logger_('currently processing part (index ' + this.partIndex + ') no longer exists.'),
- this.resetLoader(),
- (this.mediaIndex = r)))),
- n &&
- ((n.mediaIndex -= t),
- n.mediaIndex < 0
- ? ((n.mediaIndex = null), (n.partIndex = null))
- : (0 <= n.mediaIndex && (n.segment = e.segments[n.mediaIndex]), 0 <= n.partIndex && n.segment.parts && (n.part = n.segment.parts[n.partIndex]))),
- this.syncController_.saveExpiredSegmentInfo(i, e)
- }
- }),
- (t.pause = function () {
- this.checkBufferTimeout_ && (window.clearTimeout(this.checkBufferTimeout_), (this.checkBufferTimeout_ = null))
- }),
- (t.paused = function () {
- return null === this.checkBufferTimeout_
- }),
- (t.resetEverything = function (e) {
- ;(this.ended_ = !1),
- (this.appendInitSegment_ = { audio: !0, video: !0 }),
- this.resetLoader(),
- this.remove(0, 1 / 0, e),
- this.transmuxer_ && (this.transmuxer_.postMessage({ action: 'clearAllMp4Captions' }), this.transmuxer_.postMessage({ action: 'reset' }))
- }),
- (t.resetLoader = function () {
- ;(this.fetchAtBuffer_ = !1), this.resyncLoader()
- }),
- (t.resyncLoader = function () {
- this.transmuxer_ && Il(this.transmuxer_),
- (this.mediaIndex = null),
- (this.partIndex = null),
- (this.syncPoint_ = null),
- (this.isPendingTimestampOffset_ = !1),
- (this.callQueue_ = []),
- (this.loadQueue_ = []),
- (this.metadataQueue_.id3 = []),
- (this.metadataQueue_.caption = []),
- this.abort(),
- this.transmuxer_ && this.transmuxer_.postMessage({ action: 'clearParsedMp4Captions' })
- }),
- (t.remove = function (e, t, i, n) {
- if ((void 0 === i && (i = function () {}), void 0 === n && (n = !1), (t = t === 1 / 0 ? this.duration_() : t) <= e))
- this.logger_('skipping remove because end ${end} is <= start ${start}')
- else if (this.sourceUpdater_ && this.getMediaInfo_()) {
- var r,
- a = 1,
- s = function () {
- 0 === --a && i()
- }
- for (r in ((!n && this.audioDisabled_) || (a++, this.sourceUpdater_.removeAudio(e, t, s)),
- (!n && 'main' !== this.loaderType_) ||
- ((this.gopBuffer_ = (function (e, t, i, n) {
- for (var r = Math.ceil((t - n) * hl), a = Math.ceil((i - n) * hl), n = e.slice(), s = e.length; s-- && !(e[s].pts <= a); );
- if (-1 === s) return n
- for (var o = s + 1; o-- && !(e[o].pts <= r); );
- return (o = Math.max(o, 0)), n.splice(o, s - o + 1), n
- })(this.gopBuffer_, e, t, this.timeMapping_)),
- a++,
- this.sourceUpdater_.removeVideo(e, t, s)),
- this.inbandTextTracks_))
- rl(e, t, this.inbandTextTracks_[r])
- rl(e, t, this.segmentMetadataTrack_), s()
- } else this.logger_('skipping remove because no source updater or starting media info')
- }),
- (t.monitorBuffer_ = function () {
- this.checkBufferTimeout_ && window.clearTimeout(this.checkBufferTimeout_), (this.checkBufferTimeout_ = window.setTimeout(this.monitorBufferTick_.bind(this), 1))
- }),
- (t.monitorBufferTick_ = function () {
- 'READY' === this.state && this.fillBuffer_(),
- this.checkBufferTimeout_ && window.clearTimeout(this.checkBufferTimeout_),
- (this.checkBufferTimeout_ = window.setTimeout(this.monitorBufferTick_.bind(this), 500))
- }),
- (t.fillBuffer_ = function () {
- var e
- this.sourceUpdater_.updating() ||
- ((e = this.chooseNextRequest_()) &&
- ('number' == typeof e.timestampOffset &&
- ((this.isPendingTimestampOffset_ = !1), this.timelineChangeController_.pendingTimelineChange({ type: this.loaderType_, from: this.currentTimeline_, to: e.timeline })),
- this.loadSegment_(e)))
- }),
- (t.isEndOfStream_ = function (e, t, i) {
- if ((void 0 === e && (e = this.mediaIndex), void 0 === t && (t = this.playlist_), void 0 === i && (i = this.partIndex), !t || !this.mediaSource_)) return !1
- var n = 'number' == typeof e && t.segments[e],
- e = e + 1 === t.segments.length,
- n = !n || !n.parts || i + 1 === n.parts.length
- return t.endList && 'open' === this.mediaSource_.readyState && e && n
- }),
- (t.chooseNextRequest_ = function () {
- var e = this.buffered_(),
- t = Ho(e) || 0,
- i = qo(e, this.currentTime_()),
- n = !this.hasPlayed_() && 1 <= i,
- r = i >= this.goalBufferLength_(),
- e = this.playlist_.segments
- if (!e.length || n || r) return null
- this.syncPoint_ = this.syncPoint_ || this.syncController_.getSyncPoint(this.playlist_, this.duration_(), this.currentTimeline_, this.currentTime_())
- var a,
- n = { partIndex: null, mediaIndex: null, startOfSegment: null, playlist: this.playlist_, isSyncRequest: Boolean(!this.syncPoint_) }
- n.isSyncRequest
- ? (n.mediaIndex = (function (e, t, i) {
- t = t || []
- for (var n = [], r = 0, a = 0; a < t.length; a++) {
- var s = t[a]
- if (e === s.timeline && (n.push(a), i < (r += s.duration))) return a
- }
- return 0 === n.length ? 0 : n[n.length - 1]
- })(this.currentTimeline_, e, t))
- : null !== this.mediaIndex
- ? ((r = e[this.mediaIndex]),
- (a = 'number' == typeof this.partIndex ? this.partIndex : -1),
- (n.startOfSegment = r.end || t),
- r.parts && r.parts[a + 1] ? ((n.mediaIndex = this.mediaIndex), (n.partIndex = a + 1)) : (n.mediaIndex = this.mediaIndex + 1))
- : ((a = (o = gl.getMediaInfoForTime({
- experimentalExactManifestTimings: this.experimentalExactManifestTimings,
- playlist: this.playlist_,
- currentTime: this.fetchAtBuffer_ ? t : this.currentTime_(),
- startingPartIndex: this.syncPoint_.partIndex,
- startingSegmentIndex: this.syncPoint_.segmentIndex,
- startTime: this.syncPoint_.time,
- })).segmentIndex),
- (s = o.startTime),
- (o = o.partIndex),
- (n.getMediaInfoForTime = this.fetchAtBuffer_ ? 'bufferedEnd ' + t : 'currentTime ' + this.currentTime_()),
- (n.mediaIndex = a),
- (n.startOfSegment = s),
- (n.partIndex = o))
- var s = e[n.mediaIndex],
- o = s && 'number' == typeof n.partIndex && s.parts && s.parts[n.partIndex]
- if (!s || ('number' == typeof n.partIndex && !o)) return null
- 'number' != typeof n.partIndex && s.parts && ((n.partIndex = 0), (o = s.parts[0])),
- i ||
- !o ||
- o.independent ||
- (0 === n.partIndex
- ? (o = (i = e[n.mediaIndex - 1]).parts && i.parts.length && i.parts[i.parts.length - 1]) &&
- o.independent &&
- (--n.mediaIndex, (n.partIndex = i.parts.length - 1), (n.independent = 'previous segment'))
- : s.parts[n.partIndex - 1].independent && (--n.partIndex, (n.independent = 'previous part')))
- s = this.mediaSource_ && 'ended' === this.mediaSource_.readyState
- return n.mediaIndex >= e.length - 1 && s && !this.seeking_() ? null : this.generateSegmentInfo_(n)
- }),
- (t.generateSegmentInfo_ = function (e) {
- var t = e.independent,
- i = e.playlist,
- n = e.mediaIndex,
- r = e.startOfSegment,
- a = e.isSyncRequest,
- s = e.partIndex,
- o = e.forceTimestampOffset,
- u = e.getMediaInfoForTime,
- l = i.segments[n],
- e = 'number' == typeof s && l.parts[s],
- t = {
- requestId: 'segment-loader-' + Math.random(),
- uri: (e && e.resolvedUri) || l.resolvedUri,
- mediaIndex: n,
- partIndex: e ? s : null,
- isSyncRequest: a,
- startOfSegment: r,
- playlist: i,
- bytes: null,
- encryptedBytes: null,
- timestampOffset: null,
- timeline: l.timeline,
- duration: (e && e.duration) || l.duration,
- segment: l,
- part: e,
- byteLength: 0,
- transmuxer: this.transmuxer_,
- getMediaInfoForTime: u,
- independent: t,
- },
- o = 'undefined' != typeof o ? o : this.isPendingTimestampOffset_
- t.timestampOffset = this.timestampOffsetForSegment_({
- segmentTimeline: l.timeline,
- currentTimeline: this.currentTimeline_,
- startOfSegment: r,
- buffered: this.buffered_(),
- overrideCheck: o,
- })
- o = Ho(this.sourceUpdater_.audioBuffered())
- return (
- 'number' == typeof o && (t.audioAppendStart = o - this.sourceUpdater_.audioTimestampOffset()),
- this.sourceUpdater_.videoBuffered().length &&
- (t.gopsToAlignWith = (function (e, t, i) {
- if ('undefined' == typeof t || null === t || !e.length) return []
- for (var n = Math.ceil((t - i + 3) * hl), r = 0; r < e.length && !(e[r].pts > n); r++);
- return e.slice(r)
- })(this.gopBuffer_, this.currentTime_() - this.sourceUpdater_.videoTimestampOffset(), this.timeMapping_)),
- t
- )
- }),
- (t.timestampOffsetForSegment_ = function (e) {
- return (
- (i = (t = e).segmentTimeline),
- (n = t.currentTimeline),
- (r = t.startOfSegment),
- (e = t.buffered),
- t.overrideCheck || i !== n ? (!(i < n) && e.length ? e.end(e.length - 1) : r) : null
- )
- var t, i, n, r
- }),
- (t.earlyAbortWhenNeeded_ = function (e) {
- var t, i, n, r, a, s, o, u, l, c, d, h, p
- !this.vhs_.tech_.paused() &&
- this.xhrOptions_.timeout &&
- this.playlist_.attributes.BANDWIDTH &&
- (Date.now() - (e.firstBytesReceivedAt || Date.now()) < 1e3 ||
- ((t = this.currentTime_()),
- (r = e.bandwidth),
- (a = this.pendingSegment_.duration),
- (p = gl.estimateSegmentRequestTime(a, r, this.playlist_, e.bytesReceived)),
- (i = this.buffered_()),
- (n = t),
- void 0 === (e = this.vhs_.tech_.playbackRate()) && (e = 1),
- p <= (e = ((i.length ? i.end(i.length - 1) : 0) - n) / e - 1) ||
- ((r = {
- master: this.vhs_.playlists.master,
- currentTime: t,
- bandwidth: r,
- duration: this.duration_(),
- segmentDuration: a,
- timeUntilRebuffer: e,
- currentTimeline: this.currentTimeline_,
- syncController: this.syncController_,
- }),
- (a = r.master),
- (s = r.currentTime),
- (o = r.bandwidth),
- (u = r.duration),
- (l = r.segmentDuration),
- (c = r.timeUntilRebuffer),
- (d = r.currentTimeline),
- (h = r.syncController),
- (a = (r = (a = !(a = (r = a.playlists.filter(function (e) {
- return !gl.isIncompatible(e)
- })).filter(gl.isEnabled)).length
- ? r.filter(function (e) {
- return !gl.isDisabled(e)
- })
- : a)
- .filter(gl.hasAttribute.bind(null, 'BANDWIDTH'))
- .map(function (e) {
- var t = h.getSyncPoint(e, u, d, s) ? 1 : 2
- return { playlist: e, rebufferingImpact: gl.estimateSegmentRequestTime(l, o, e) * t - c }
- })).filter(function (e) {
- return e.rebufferingImpact <= 0
- })),
- el(a, function (e, t) {
- return tl(t.playlist, e.playlist)
- }),
- (r = a.length
- ? a[0]
- : (el(r, function (e, t) {
- return e.rebufferingImpact - t.rebufferingImpact
- }),
- r[0] || null)) &&
- ((p = p - e - r.rebufferingImpact),
- !r.playlist ||
- r.playlist.uri === this.playlist_.uri ||
- p < (e <= fl ? 1 : 0.5) ||
- ((this.bandwidth = r.playlist.attributes.BANDWIDTH * El.BANDWIDTH_VARIANCE + 1), this.trigger('earlyabort'))))))
- }),
- (t.handleAbort_ = function (e) {
- this.logger_('Aborting ' + sl(e)), (this.mediaRequestsAborted += 1)
- }),
- (t.handleProgress_ = function (e, t) {
- this.earlyAbortWhenNeeded_(t.stats), this.checkForAbort_(t.requestId) || this.trigger('progress')
- }),
- (t.handleTrackInfo_ = function (e, t) {
- this.earlyAbortWhenNeeded_(e.stats),
- this.checkForAbort_(e.requestId) ||
- this.checkForIllegalMediaSwitch(t) ||
- ((function (e, t) {
- if ((!e && !t) || (!e && t) || (e && !t)) return !1
- if (e === t) return !0
- var i = Object.keys(e).sort(),
- n = Object.keys(t).sort()
- if (i.length !== n.length) return !1
- for (var r = 0; r < i.length; r++) {
- var a = i[r]
- if (a !== n[r]) return !1
- if (e[a] !== t[a]) return !1
- }
- return !0
- })(this.currentMediaInfo_, (t = t || {})) ||
- ((this.appendInitSegment_ = { audio: !0, video: !0 }),
- (this.startingMediaInfo_ = t),
- (this.currentMediaInfo_ = t),
- this.logger_('trackinfo update', t),
- this.trigger('trackinfo')),
- this.checkForAbort_(e.requestId) || ((this.pendingSegment_.trackInfo = t), this.hasEnoughInfoToAppend_() && this.processCallQueue_()))
- }),
- (t.handleTimingInfo_ = function (e, t, i, n) {
- var r
- this.earlyAbortWhenNeeded_(e.stats),
- this.checkForAbort_(e.requestId) ||
- (((r = this.pendingSegment_)[(e = ol(t))] = r[e] || {}),
- (r[e][i] = n),
- this.logger_('timinginfo: ' + t + ' - ' + i + ' - ' + n),
- this.hasEnoughInfoToAppend_() && this.processCallQueue_())
- }),
- (t.handleCaptions_ = function (e, t) {
- var g,
- y,
- v = this
- this.earlyAbortWhenNeeded_(e.stats),
- this.checkForAbort_(e.requestId) ||
- (0 !== t.length
- ? this.pendingSegment_.hasAppendedData_
- ? ((g = null === this.sourceUpdater_.videoTimestampOffset() ? this.sourceUpdater_.audioTimestampOffset() : this.sourceUpdater_.videoTimestampOffset()),
- (y = {}),
- t.forEach(function (e) {
- y[e.stream] = y[e.stream] || { startTime: 1 / 0, captions: [], endTime: 0 }
- var t = y[e.stream]
- ;(t.startTime = Math.min(t.startTime, e.startTime + g)), (t.endTime = Math.max(t.endTime, e.endTime + g)), t.captions.push(e)
- }),
- Object.keys(y).forEach(function (e) {
- var t,
- i,
- n,
- r,
- a,
- s,
- o,
- u,
- l,
- c,
- d = y[e],
- h = d.startTime,
- p = d.endTime,
- f = d.captions,
- m = v.inbandTextTracks_
- v.logger_('adding cues from ' + h + ' -> ' + p + ' for ' + e),
- (t = m),
- (i = v.vhs_.tech_),
- t[(n = e)] ||
- (i.trigger({ type: 'usage', name: 'vhs-608' }),
- i.trigger({ type: 'usage', name: 'hls-608' }),
- /^cc708_/.test((r = n)) && (r = 'SERVICE' + n.split('_')[1]),
- (o = i.textTracks().getTrackById(r))
- ? (t[n] = o)
- : ((s = a = n),
- (d = !1),
- (o = ((i.options_.vhs && i.options_.vhs.captionServices) || {})[r]) && ((a = o.label), (s = o.language), (d = o.default)),
- (t[n] = i.addRemoteTextTrack({ kind: 'captions', id: r, default: d, label: a, language: s }, !1).track))),
- rl(h, p, m[e]),
- (l = (f = { captionArray: f, inbandTextTracks: m, timestampOffset: g }).inbandTextTracks),
- (m = f.captionArray),
- (c = f.timestampOffset),
- m &&
- ((u = window.WebKitDataCue || window.VTTCue),
- m.forEach(function (e) {
- var t = e.stream
- l[t].addCue(new u(e.startTime + c, e.endTime + c, e.text))
- }))
- }),
- this.transmuxer_ && this.transmuxer_.postMessage({ action: 'clearParsedMp4Captions' }))
- : this.metadataQueue_.caption.push(this.handleCaptions_.bind(this, e, t))
- : this.logger_('SegmentLoader received no captions from a caption event'))
- }),
- (t.handleId3_ = function (e, t, i) {
- var n, r, a, s
- this.earlyAbortWhenNeeded_(e.stats),
- this.checkForAbort_(e.requestId) ||
- (this.pendingSegment_.hasAppendedData_
- ? ((n = null === this.sourceUpdater_.videoTimestampOffset() ? this.sourceUpdater_.audioTimestampOffset() : this.sourceUpdater_.videoTimestampOffset()),
- (r = this.inbandTextTracks_),
- (a = i),
- (s = this.vhs_.tech_),
- r.metadataTrack_ ||
- ((r.metadataTrack_ = s.addRemoteTextTrack({ kind: 'metadata', label: 'Timed Metadata' }, !1).track), (r.metadataTrack_.inBandMetadataTrackDispatchType = a)),
- nl({ inbandTextTracks: this.inbandTextTracks_, metadataArray: t, timestampOffset: n, videoDuration: this.duration_() }))
- : this.metadataQueue_.id3.push(this.handleId3_.bind(this, e, t, i)))
- }),
- (t.processMetadataQueue_ = function () {
- this.metadataQueue_.id3.forEach(function (e) {
- return e()
- }),
- this.metadataQueue_.caption.forEach(function (e) {
- return e()
- }),
- (this.metadataQueue_.id3 = []),
- (this.metadataQueue_.caption = [])
- }),
- (t.processCallQueue_ = function () {
- var e = this.callQueue_
- ;(this.callQueue_ = []),
- e.forEach(function (e) {
- return e()
- })
- }),
- (t.processLoadQueue_ = function () {
- var e = this.loadQueue_
- ;(this.loadQueue_ = []),
- e.forEach(function (e) {
- return e()
- })
- }),
- (t.hasEnoughInfoToLoad_ = function () {
- if ('audio' !== this.loaderType_) return !0
- var e = this.pendingSegment_
- return (
- !!e &&
- (!this.getCurrentMediaInfo_() ||
- !ul({
- timelineChangeController: this.timelineChangeController_,
- currentTimeline: this.currentTimeline_,
- segmentTimeline: e.timeline,
- loaderType: this.loaderType_,
- audioDisabled: this.audioDisabled_,
- }))
- )
- }),
- (t.getCurrentMediaInfo_ = function (e) {
- return ((e = void 0 === e ? this.pendingSegment_ : e) && e.trackInfo) || this.currentMediaInfo_
- }),
- (t.getMediaInfo_ = function (e) {
- return void 0 === e && (e = this.pendingSegment_), this.getCurrentMediaInfo_(e) || this.startingMediaInfo_
- }),
- (t.hasEnoughInfoToAppend_ = function () {
- if (!this.sourceUpdater_.ready()) return !1
- if (this.waitingOnRemove_ || this.quotaExceededErrorRetryTimeout_) return !1
- var e = this.pendingSegment_,
- t = this.getCurrentMediaInfo_()
- if (!e || !t) return !1
- var i = t.hasAudio,
- n = t.hasVideo,
- t = t.isMuxed
- return (
- !(n && !e.videoTimingInfo) &&
- !(i && !this.audioDisabled_ && !t && !e.audioTimingInfo) &&
- !ul({
- timelineChangeController: this.timelineChangeController_,
- currentTimeline: this.currentTimeline_,
- segmentTimeline: e.timeline,
- loaderType: this.loaderType_,
- audioDisabled: this.audioDisabled_,
- })
- )
- }),
- (t.handleData_ = function (e, t) {
- if ((this.earlyAbortWhenNeeded_(e.stats), !this.checkForAbort_(e.requestId)))
- if (!this.callQueue_.length && this.hasEnoughInfoToAppend_()) {
- var i,
- n = this.pendingSegment_
- if ((this.setTimeMapping_(n.timeline), this.updateMediaSecondsLoaded_(n.part || n.segment), 'closed' !== this.mediaSource_.readyState)) {
- if (
- (e.map && ((e.map = this.initSegmentForMap(e.map, !0)), (n.segment.map = e.map)),
- e.key && this.segmentKey(e.key, !0),
- (n.isFmp4 = e.isFmp4),
- (n.timingInfo = n.timingInfo || {}),
- n.isFmp4
- ? (this.trigger('fmp4'), (n.timingInfo.start = n[ol(t.type)].start))
- : ((i = this.getCurrentMediaInfo_()),
- (i = 'main' === this.loaderType_ && i && i.hasVideo) && (r = n.videoTimingInfo.start),
- (n.timingInfo.start = this.trueSegmentStart_({
- currentStart: n.timingInfo.start,
- playlist: n.playlist,
- mediaIndex: n.mediaIndex,
- currentVideoTimestampOffset: this.sourceUpdater_.videoTimestampOffset(),
- useVideoTimingInfo: i,
- firstVideoFrameTimeForData: r,
- videoTimingInfo: n.videoTimingInfo,
- audioTimingInfo: n.audioTimingInfo,
- }))),
- this.updateAppendInitSegmentStatus(n, t.type),
- this.updateSourceBufferTimestampOffset_(n),
- n.isSyncRequest)
- ) {
- this.updateTimingInfoEnd_(n), this.syncController_.saveSegmentTimingInfo({ segmentInfo: n, shouldSaveTimelineMapping: 'main' === this.loaderType_ })
- var r = this.chooseNextRequest_()
- if (r.mediaIndex !== n.mediaIndex || r.partIndex !== n.partIndex) return void this.logger_('sync segment was incorrect, not appending')
- this.logger_('sync segment was correct, appending')
- }
- ;(n.hasAppendedData_ = !0), this.processMetadataQueue_(), this.appendData_(n, t)
- }
- } else this.callQueue_.push(this.handleData_.bind(this, e, t))
- }),
- (t.updateAppendInitSegmentStatus = function (e, t) {
- 'main' !== this.loaderType_ || 'number' != typeof e.timestampOffset || e.changedTimestampOffset || (this.appendInitSegment_ = { audio: !0, video: !0 }),
- this.playlistOfLastInitSegment_[t] !== e.playlist && (this.appendInitSegment_[t] = !0)
- }),
- (t.getInitSegmentAndUpdateState_ = function (e) {
- var t = e.type,
- i = e.initSegment,
- n = e.map,
- r = e.playlist
- if (n) {
- e = Su(n)
- if (this.activeInitSegmentId_ === e) return null
- ;(i = this.initSegmentForMap(n, !0).bytes), (this.activeInitSegmentId_ = e)
- }
- return i && this.appendInitSegment_[t] ? ((this.playlistOfLastInitSegment_[t] = r), (this.appendInitSegment_[t] = !1), (this.activeInitSegmentId_ = null), i) : null
- }),
- (t.handleQuotaExceededError_ = function (e, t) {
- var i = this,
- n = e.segmentInfo,
- r = e.type,
- a = e.bytes,
- s = this.sourceUpdater_.audioBuffered(),
- o = this.sourceUpdater_.videoBuffered()
- 1 < s.length && this.logger_('On QUOTA_EXCEEDED_ERR, found gaps in the audio buffer: ' + jo(s).join(', ')),
- 1 < o.length && this.logger_('On QUOTA_EXCEEDED_ERR, found gaps in the video buffer: ' + jo(o).join(', '))
- var u = s.length ? s.start(0) : 0,
- l = s.length ? s.end(s.length - 1) : 0,
- c = o.length ? o.start(0) : 0,
- e = o.length ? o.end(o.length - 1) : 0
- if (l - u <= 1 && e - c <= 1)
- return (
- this.logger_(
- 'On QUOTA_EXCEEDED_ERR, single segment too large to append to buffer, triggering an error. Appended byte length: ' +
- a.byteLength +
- ', audio buffer: ' +
- jo(s).join(', ') +
- ', video buffer: ' +
- jo(o).join(', ') +
- ', '
- ),
- this.error({ message: 'Quota exceeded error with append of a single segment of content', excludeUntil: 1 / 0 }),
- void this.trigger('error')
- )
- ;(this.waitingOnRemove_ = !0), this.callQueue_.push(this.appendToSourceBuffer_.bind(this, { segmentInfo: n, type: r, bytes: a }))
- a = this.currentTime_() - 1
- this.logger_('On QUOTA_EXCEEDED_ERR, removing audio/video from 0 to ' + a),
- this.remove(
- 0,
- a,
- function () {
- i.logger_('On QUOTA_EXCEEDED_ERR, retrying append in 1s'),
- (i.waitingOnRemove_ = !1),
- (i.quotaExceededErrorRetryTimeout_ = window.setTimeout(function () {
- i.logger_('On QUOTA_EXCEEDED_ERR, re-processing call queue'), (i.quotaExceededErrorRetryTimeout_ = null), i.processCallQueue_()
- }, 1e3))
- },
- !0
- )
- }),
- (t.handleAppendError_ = function (e, t) {
- var i = e.segmentInfo,
- n = e.type,
- e = e.bytes
- t &&
- (22 !== t.code
- ? (this.logger_('Received non QUOTA_EXCEEDED_ERR on append', t),
- this.error(n + ' append of ' + e.length + 'b failed for segment #' + i.mediaIndex + ' in playlist ' + i.playlist.id),
- this.trigger('appenderror'))
- : this.handleQuotaExceededError_({ segmentInfo: i, type: n, bytes: e }))
- }),
- (t.appendToSourceBuffer_ = function (e) {
- var t,
- i,
- n = e.segmentInfo,
- r = e.type,
- a = e.initSegment,
- s = e.data,
- o = e.bytes
- o ||
- ((e = [s]),
- (s = s.byteLength),
- a && (e.unshift(a), (s += a.byteLength)),
- (i = 0),
- (e = { bytes: s, segments: e }).bytes &&
- ((t = new Uint8Array(e.bytes)),
- e.segments.forEach(function (e) {
- t.set(e, i), (i += e.byteLength)
- })),
- (o = t)),
- this.sourceUpdater_.appendBuffer({ segmentInfo: n, type: r, bytes: o }, this.handleAppendError_.bind(this, { segmentInfo: n, type: r, bytes: o }))
- }),
- (t.handleSegmentTimingInfo_ = function (e, t, i) {
- this.pendingSegment_ &&
- t === this.pendingSegment_.requestId &&
- ((t = this.pendingSegment_.segment)[(e = e + 'TimingInfo')] || (t[e] = {}),
- (t[e].transmuxerPrependedSeconds = i.prependedContentDuration || 0),
- (t[e].transmuxedPresentationStart = i.start.presentation),
- (t[e].transmuxedDecodeStart = i.start.decode),
- (t[e].transmuxedPresentationEnd = i.end.presentation),
- (t[e].transmuxedDecodeEnd = i.end.decode),
- (t[e].baseMediaDecodeTime = i.baseMediaDecodeTime))
- }),
- (t.appendData_ = function (e, t) {
- var i = t.type,
- n = t.data
- n &&
- n.byteLength &&
- (('audio' === i && this.audioDisabled_) ||
- ((t = this.getInitSegmentAndUpdateState_({ type: i, initSegment: t.initSegment, playlist: e.playlist, map: e.isFmp4 ? e.segment.map : null })),
- this.appendToSourceBuffer_({ segmentInfo: e, type: i, initSegment: t, data: n })))
- }),
- (t.loadSegment_ = function (t) {
- var i = this
- ;(this.state = 'WAITING'),
- (this.pendingSegment_ = t),
- this.trimBackBuffer_(t),
- 'number' == typeof t.timestampOffset && this.transmuxer_ && this.transmuxer_.postMessage({ action: 'clearAllMp4Captions' }),
- this.hasEnoughInfoToLoad_()
- ? this.updateTransmuxerAndRequestSegment_(t)
- : this.loadQueue_.push(function () {
- var e = g({}, t, { forceTimestampOffset: !0 })
- g(t, i.generateSegmentInfo_(e)), (i.isPendingTimestampOffset_ = !1), i.updateTransmuxerAndRequestSegment_(t)
- })
- }),
- (t.updateTransmuxerAndRequestSegment_ = function (n) {
- var r = this
- this.shouldUpdateTransmuxerTimestampOffset_(n.timestampOffset) &&
- ((this.gopBuffer_.length = 0),
- (n.gopsToAlignWith = []),
- (this.timeMapping_ = 0),
- this.transmuxer_.postMessage({ action: 'reset' }),
- this.transmuxer_.postMessage({ action: 'setTimestampOffset', timestampOffset: n.timestampOffset }))
- var e = this.createSimplifiedSegmentObj_(n),
- t = this.isEndOfStream_(n.mediaIndex, n.playlist, n.partIndex),
- i = null !== this.mediaIndex,
- a = n.timeline !== this.currentTimeline_ && 0 < n.timeline,
- a = t || (i && a)
- this.logger_('Requesting ' + sl(n)),
- e.map && !e.map.bytes && (this.logger_('going to request init segment.'), (this.appendInitSegment_ = { video: !0, audio: !0 })),
- (n.abortRequests = Xu({
- xhr: this.vhs_.xhr,
- xhrOptions: this.xhrOptions_,
- decryptionWorker: this.decrypter_,
- segment: e,
- abortFn: this.handleAbort_.bind(this, n),
- progressFn: this.handleProgress_.bind(this),
- trackInfoFn: this.handleTrackInfo_.bind(this),
- timingInfoFn: this.handleTimingInfo_.bind(this),
- videoSegmentTimingInfoFn: this.handleSegmentTimingInfo_.bind(this, 'video', n.requestId),
- audioSegmentTimingInfoFn: this.handleSegmentTimingInfo_.bind(this, 'audio', n.requestId),
- captionsFn: this.handleCaptions_.bind(this),
- isEndOfTimeline: a,
- endedTimelineFn: function () {
- r.logger_('received endedtimeline callback')
- },
- id3Fn: this.handleId3_.bind(this),
- dataFn: this.handleData_.bind(this),
- doneFn: this.segmentRequestFinished_.bind(this),
- onTransmuxerLog: function (e) {
- var t = e.message,
- i = e.level,
- e = e.stream
- r.logger_(sl(n) + ' logged from transmuxer stream ' + e + ' as a ' + i + ': ' + t)
- },
- }))
- }),
- (t.trimBackBuffer_ = function (e) {
- var t,
- i,
- n,
- r,
- r =
- ((t = this.seekable_()),
- (i = this.currentTime_()),
- (n = this.playlist_.targetDuration || 10),
- (r = i - El.BACK_BUFFER_LENGTH),
- t.length && (r = Math.max(r, t.start(0))),
- Math.min(i - n, r))
- 0 < r && this.remove(0, r)
- }),
- (t.createSimplifiedSegmentObj_ = function (e) {
- var t = e.segment,
- i = e.part,
- n = {
- resolvedUri: (i || t).resolvedUri,
- byterange: (i || t).byterange,
- requestId: e.requestId,
- transmuxer: e.transmuxer,
- audioAppendStart: e.audioAppendStart,
- gopsToAlignWith: e.gopsToAlignWith,
- part: e.part,
- },
- i = e.playlist.segments[e.mediaIndex - 1]
- return (
- i &&
- i.timeline === t.timeline &&
- (i.videoTimingInfo ? (n.baseStartTime = i.videoTimingInfo.transmuxedDecodeEnd) : i.audioTimingInfo && (n.baseStartTime = i.audioTimingInfo.transmuxedDecodeEnd)),
- t.key && ((e = t.key.iv || new Uint32Array([0, 0, 0, e.mediaIndex + e.playlist.mediaSequence])), (n.key = this.segmentKey(t.key)), (n.key.iv = e)),
- t.map && (n.map = this.initSegmentForMap(t.map)),
- n
- )
- }),
- (t.saveTransferStats_ = function (e) {
- ;(this.mediaRequests += 1), e && ((this.mediaBytesTransferred += e.bytesReceived), (this.mediaTransferDuration += e.roundTripTime))
- }),
- (t.saveBandwidthRelatedStats_ = function (e, t) {
- ;(this.pendingSegment_.byteLength = t.bytesReceived),
- e < 1 / 60
- ? this.logger_("Ignoring segment's bandwidth because its duration of " + e + ' is less than the min to record ' + 1 / 60)
- : ((this.bandwidth = t.bandwidth), (this.roundTrip = t.roundTripTime))
- }),
- (t.handleTimeout_ = function () {
- ;(this.mediaRequestsTimedout += 1), (this.bandwidth = 1), (this.roundTrip = NaN), this.trigger('bandwidthupdate')
- }),
- (t.segmentRequestFinished_ = function (e, t, i) {
- if (this.callQueue_.length) this.callQueue_.push(this.segmentRequestFinished_.bind(this, e, t, i))
- else if ((this.saveTransferStats_(t.stats), this.pendingSegment_ && t.requestId === this.pendingSegment_.requestId)) {
- if (e)
- return (
- (this.pendingSegment_ = null),
- (this.state = 'READY'),
- e.code === Ll ? void 0 : (this.pause(), e.code === Pl ? void this.handleTimeout_() : ((this.mediaRequestsErrored += 1), this.error(e), void this.trigger('error')))
- )
- e = this.pendingSegment_
- this.saveBandwidthRelatedStats_(e.duration, t.stats),
- (e.endOfAllRequests = t.endOfAllRequests),
- i.gopInfo &&
- (this.gopBuffer_ = (function (e, t, i) {
- if (!t.length) return e
- if (i) return t.slice()
- for (var n = t[0].pts, r = 0; r < e.length && !(e[r].pts >= n); r++);
- return e.slice(0, r).concat(t)
- })(this.gopBuffer_, i.gopInfo, this.safeAppend_)),
- (this.state = 'APPENDING'),
- this.trigger('appending'),
- this.waitForAppendsToComplete_(e)
- }
- }),
- (t.setTimeMapping_ = function (e) {
- e = this.syncController_.mappingForTimeline(e)
- null !== e && (this.timeMapping_ = e)
- }),
- (t.updateMediaSecondsLoaded_ = function (e) {
- 'number' == typeof e.start && 'number' == typeof e.end ? (this.mediaSecondsLoaded += e.end - e.start) : (this.mediaSecondsLoaded += e.duration)
- }),
- (t.shouldUpdateTransmuxerTimestampOffset_ = function (e) {
- return (
- null !== e && (('main' === this.loaderType_ && e !== this.sourceUpdater_.videoTimestampOffset()) || (!this.audioDisabled_ && e !== this.sourceUpdater_.audioTimestampOffset()))
- )
- }),
- (t.trueSegmentStart_ = function (e) {
- var t = e.currentStart,
- i = e.playlist,
- n = e.mediaIndex,
- r = e.firstVideoFrameTimeForData,
- a = e.currentVideoTimestampOffset,
- s = e.useVideoTimingInfo,
- o = e.videoTimingInfo,
- e = e.audioTimingInfo
- if ('undefined' != typeof t) return t
- if (!s) return e.start
- i = i.segments[n - 1]
- return 0 !== n && i && 'undefined' != typeof i.start && i.end === r + a ? o.start : r
- }),
- (t.waitForAppendsToComplete_ = function (e) {
- var t = this.getCurrentMediaInfo_(e)
- if (!t) return this.error({ message: 'No starting media returned, likely due to an unsupported media format.', blacklistDuration: 1 / 0 }), void this.trigger('error')
- var i = t.hasAudio,
- n = t.hasVideo,
- t = t.isMuxed,
- n = 'main' === this.loaderType_ && n,
- t = !this.audioDisabled_ && i && !t
- if (((e.waitingOnAppends = 0), !e.hasAppendedData_))
- return (
- e.timingInfo || 'number' != typeof e.timestampOffset || (this.isPendingTimestampOffset_ = !0),
- (e.timingInfo = { start: 0 }),
- e.waitingOnAppends++,
- this.isPendingTimestampOffset_ || (this.updateSourceBufferTimestampOffset_(e), this.processMetadataQueue_()),
- void this.checkAppendsDone_(e)
- )
- n && e.waitingOnAppends++,
- t && e.waitingOnAppends++,
- n && this.sourceUpdater_.videoQueueCallback(this.checkAppendsDone_.bind(this, e)),
- t && this.sourceUpdater_.audioQueueCallback(this.checkAppendsDone_.bind(this, e))
- }),
- (t.checkAppendsDone_ = function (e) {
- this.checkForAbort_(e.requestId) || (e.waitingOnAppends--, 0 === e.waitingOnAppends && this.handleAppendsDone_())
- }),
- (t.checkForIllegalMediaSwitch = function (e) {
- var t,
- i,
- e =
- ((t = this.loaderType_),
- (i = this.getCurrentMediaInfo_()),
- (e = e),
- 'main' === t && i && e
- ? e.hasAudio || e.hasVideo
- ? i.hasVideo && !e.hasVideo
- ? "Only audio found in segment when we expected video. We can't switch to audio only from a stream that had video. To get rid of this message, please add codec information to the manifest."
- : !i.hasVideo && e.hasVideo
- ? "Video found in segment when we expected only audio. We can't switch to a stream with video from an audio only stream. To get rid of this message, please add codec information to the manifest."
- : null
- : 'Neither audio nor video found in segment.'
- : null)
- return !!e && (this.error({ message: e, blacklistDuration: 1 / 0 }), this.trigger('error'), !0)
- }),
- (t.updateSourceBufferTimestampOffset_ = function (e) {
- var t
- null === e.timestampOffset ||
- 'number' != typeof e.timingInfo.start ||
- e.changedTimestampOffset ||
- 'main' !== this.loaderType_ ||
- ((t = !1),
- (e.timestampOffset -= this.getSegmentStartTimeForTimestampOffsetCalculation_({
- videoTimingInfo: e.segment.videoTimingInfo,
- audioTimingInfo: e.segment.audioTimingInfo,
- timingInfo: e.timingInfo,
- })),
- (e.changedTimestampOffset = !0),
- e.timestampOffset !== this.sourceUpdater_.videoTimestampOffset() && (this.sourceUpdater_.videoTimestampOffset(e.timestampOffset), (t = !0)),
- e.timestampOffset !== this.sourceUpdater_.audioTimestampOffset() && (this.sourceUpdater_.audioTimestampOffset(e.timestampOffset), (t = !0)),
- t && this.trigger('timestampoffset'))
- }),
- (t.getSegmentStartTimeForTimestampOffsetCalculation_ = function (e) {
- var t = e.videoTimingInfo,
- i = e.audioTimingInfo,
- e = e.timingInfo
- return this.useDtsForTimestampOffset_
- ? t && 'number' == typeof t.transmuxedDecodeStart
- ? t.transmuxedDecodeStart
- : i && 'number' == typeof i.transmuxedDecodeStart
- ? i.transmuxedDecodeStart
- : e.start
- : e.start
- }),
- (t.updateTimingInfoEnd_ = function (e) {
- e.timingInfo = e.timingInfo || {}
- var t = this.getMediaInfo_(),
- t = 'main' === this.loaderType_ && t && t.hasVideo && e.videoTimingInfo ? e.videoTimingInfo : e.audioTimingInfo
- t && (e.timingInfo.end = 'number' == typeof t.end ? t.end : t.start + e.duration)
- }),
- (t.handleAppendsDone_ = function () {
- if ((this.pendingSegment_ && this.trigger('appendsdone'), !this.pendingSegment_)) return (this.state = 'READY'), void (this.paused() || this.monitorBuffer_())
- var e = this.pendingSegment_
- this.updateTimingInfoEnd_(e),
- this.shouldSaveSegmentTimingInfo_ && this.syncController_.saveSegmentTimingInfo({ segmentInfo: e, shouldSaveTimelineMapping: 'main' === this.loaderType_ })
- var t = cl(e, this.sourceType_)
- if (
- (t && ('warn' === t.severity ? tr.log.warn(t.message) : this.logger_(t.message)),
- this.recordThroughput_(e),
- (this.pendingSegment_ = null),
- (this.state = 'READY'),
- !e.isSyncRequest || (this.trigger('syncinfoupdate'), e.hasAppendedData_))
- ) {
- this.logger_('Appended ' + sl(e)),
- this.addSegmentMetadataCue_(e),
- (this.fetchAtBuffer_ = !0),
- this.currentTimeline_ !== e.timeline &&
- (this.timelineChangeController_.lastTimelineChange({ type: this.loaderType_, from: this.currentTimeline_, to: e.timeline }),
- 'main' !== this.loaderType_ ||
- this.audioDisabled_ ||
- this.timelineChangeController_.lastTimelineChange({ type: 'audio', from: this.currentTimeline_, to: e.timeline })),
- (this.currentTimeline_ = e.timeline),
- this.trigger('syncinfoupdate')
- var i = e.segment,
- t = e.part,
- i = i.end && this.currentTime_() - i.end > 3 * e.playlist.targetDuration,
- t = t && t.end && this.currentTime_() - t.end > 3 * e.playlist.partTargetDuration
- if (i || t) return this.logger_('bad ' + (i ? 'segment' : 'part') + ' ' + sl(e)), void this.resetEverything()
- null !== this.mediaIndex && this.trigger('bandwidthupdate'),
- this.trigger('progress'),
- (this.mediaIndex = e.mediaIndex),
- (this.partIndex = e.partIndex),
- this.isEndOfStream_(e.mediaIndex, e.playlist, e.partIndex) && this.endOfStream(),
- this.trigger('appended'),
- e.hasAppendedData_ && this.mediaAppends++,
- this.paused() || this.monitorBuffer_()
- } else this.logger_('Throwing away un-appended sync request ' + sl(e))
- }),
- (t.recordThroughput_ = function (e) {
- var t, i
- e.duration < 1 / 60
- ? this.logger_("Ignoring segment's throughput because its duration of " + e.duration + ' is less than the min to record ' + 1 / 60)
- : ((t = this.throughput.rate),
- (i = Date.now() - e.endOfAllRequests + 1),
- (i = Math.floor((e.byteLength / i) * 8 * 1e3)),
- (this.throughput.rate += (i - t) / ++this.throughput.count))
- }),
- (t.addSegmentMetadataCue_ = function (e) {
- var t, i, n, r
- this.segmentMetadataTrack_ &&
- ((i = (t = e.segment).start),
- (r = t.end),
- al(i) &&
- al(r) &&
- (rl(i, r, this.segmentMetadataTrack_),
- (n = window.WebKitDataCue || window.VTTCue),
- (e = {
- custom: t.custom,
- dateTimeObject: t.dateTimeObject,
- dateTimeString: t.dateTimeString,
- bandwidth: e.playlist.attributes.BANDWIDTH,
- resolution: e.playlist.attributes.RESOLUTION,
- codecs: e.playlist.attributes.CODECS,
- byteLength: e.byteLength,
- uri: e.uri,
- timeline: e.timeline,
- playlist: e.playlist.id,
- start: i,
- end: r,
- }),
- ((r = new n(i, r, JSON.stringify(e))).value = e),
- this.segmentMetadataTrack_.addCue(r)))
- }),
- e
- )
- })(tr.EventTarget)
- function Rl() {}
- function Nl(e) {
- return 'string' != typeof e
- ? e
- : e.replace(/./, function (e) {
- return e.toUpperCase()
- })
- }
- function Ul(e, t) {
- var i = t[e + 'Buffer']
- return (i && i.updating) || t.queuePending[e]
- }
- function Bl(e, t) {
- if (0 !== t.queue.length) {
- var i = 0,
- n = t.queue[i]
- if ('mediaSource' !== n.type) {
- if ('mediaSource' !== e && t.ready() && 'closed' !== t.mediaSource.readyState && !Ul(e, t)) {
- if (n.type !== e) {
- if (
- null ===
- (i = (function (e, t) {
- for (var i = 0; i < t.length; i++) {
- var n = t[i]
- if ('mediaSource' === n.type) return null
- if (n.type === e) return i
- }
- return null
- })(e, t.queue))
- )
- return
- n = t.queue[i]
- }
- t.queue.splice(i, 1), (t.queuePending[e] = n).action(e, t), n.doneFn || ((t.queuePending[e] = null), Bl(e, t))
- }
- } else t.updating() || 'closed' === t.mediaSource.readyState || (t.queue.shift(), n.action(t), n.doneFn && n.doneFn(), Bl('audio', t), Bl('video', t))
- }
- }
- function Fl(e, t) {
- var i = t[e + 'Buffer'],
- n = Nl(e)
- i && (i.removeEventListener('updateend', t['on' + n + 'UpdateEnd_']), i.removeEventListener('error', t['on' + n + 'Error_']), (t.codecs[e] = null), (t[e + 'Buffer'] = null))
- }
- function jl(e, t) {
- return e && t && -1 !== Array.prototype.indexOf.call(e.sourceBuffers, t)
- }
- function Hl(e) {
- var t = e.type,
- i = e.sourceUpdater,
- n = e.action,
- r = e.doneFn,
- e = e.name
- i.queue.push({ type: t, action: n, doneFn: r, name: e }), Bl(t, i)
- }
- function ql(i, n) {
- return function (e) {
- var t
- n.queuePending[i] && ((t = n.queuePending[i].doneFn), (n.queuePending[i] = null), t && t(n[i + 'Error_'])), Bl(i, n)
- }
- }
- function Vl(e) {
- return decodeURIComponent(escape(String.fromCharCode.apply(null, e)))
- }
- function Wl(e, t) {
- e.abort(), e.pause(), t && t.activePlaylistLoader && (t.activePlaylistLoader.pause(), (t.activePlaylistLoader = null))
- }
- function Gl(e, t) {
- ;(t.activePlaylistLoader = e).load()
- }
- function zl(e, t) {
- for (var i = 0; i < e.length; i++) {
- if (nu(t, e[i])) return !0
- if (e[i].playlists && zl(e[i].playlists, t)) return !0
- }
- return !1
- }
- function Xl(a) {
- ;['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(function (e) {
- yc[e](e, a)
- })
- var e,
- s = a.mediaTypes,
- t = a.masterPlaylistLoader,
- i = a.tech,
- n = a.vhs,
- r = a.segmentLoaders,
- o = r.AUDIO,
- u = r.main
- function l() {
- s.AUDIO.onTrackChanged(), i.trigger({ type: 'usage', name: 'vhs-audio-change' }), i.trigger({ type: 'usage', name: 'hls-audio-change' })
- }
- for (e in (['AUDIO', 'SUBTITLES'].forEach(function (e) {
- var u, l, o, c, t, i, d, h, n, r
- ;(s[e].activeGroup =
- ((u = e),
- (l = a),
- function (t) {
- var e = l.masterPlaylistLoader,
- i = l.mediaTypes[u].groups,
- n = e.media()
- if (!n) return null
- var r = null
- n.attributes[u] && (r = i[n.attributes[u]])
- var a = Object.keys(i)
- if (!r)
- if ('AUDIO' === u && 1 < a.length && au(l.master))
- for (var s = 0; s < a.length; s++) {
- var o = i[a[s]]
- if (zl(o, n)) {
- r = o
- break
- }
- }
- else i.main ? (r = i.main) : 1 === a.length && (r = i[a[0]])
- return 'undefined' == typeof t
- ? r
- : (null !== t &&
- r &&
- r.filter(function (e) {
- return e.id === t.id
- })[0]) ||
- null
- })),
- (s[e].activeTrack = vc[e](e, a)),
- (s[e].onGroupChanged =
- ((o = e),
- (c = a),
- function () {
- var e = c.segmentLoaders,
- t = e[o],
- i = e.main,
- n = c.mediaTypes[o],
- r = n.activeTrack(),
- a = n.getActiveGroup(),
- s = n.activePlaylistLoader,
- e = n.lastGroup_
- ;(a && e && a.id === e.id) ||
- ((n.lastGroup_ = a), (n.lastTrack_ = r), Wl(t, n), a && !a.isMasterPlaylist && (a.playlistLoader ? (t.resyncLoader(), Gl(a.playlistLoader, n)) : s && i.resetEverything()))
- })),
- (s[e].onGroupChanging =
- ((t = e),
- (i = a),
- function () {
- var e = i.segmentLoaders[t]
- ;(i.mediaTypes[t].lastGroup_ = null), e.abort(), e.pause()
- })),
- (s[e].onTrackChanged =
- ((d = e),
- (h = a),
- function () {
- var e = h.masterPlaylistLoader,
- t = h.segmentLoaders,
- i = t[d],
- n = t.main,
- r = h.mediaTypes[d],
- a = r.activeTrack(),
- s = r.getActiveGroup(),
- o = r.activePlaylistLoader,
- u = r.lastTrack_
- if ((!u || !a || u.id !== a.id) && ((r.lastGroup_ = s), (r.lastTrack_ = a), Wl(i, r), s)) {
- if (s.isMasterPlaylist) {
- if (!a || !u || a.id === u.id) return
- var l = h.vhs.masterPlaylistController_,
- t = l.selectPlaylist()
- return l.media() === t
- ? void 0
- : (r.logger_('track change. Switching master audio from ' + u.id + ' to ' + a.id), e.pause(), n.resetEverything(), void l.fastQualityChange_(t))
- }
- if ('AUDIO' === d) {
- if (!s.playlistLoader) return n.setAudio(!0), void n.resetEverything()
- i.setAudio(!0), n.setAudio(!1)
- }
- o !== s.playlistLoader && (i.track && i.track(a), i.resetEverything()), Gl(s.playlistLoader, r)
- }
- })),
- (s[e].getActiveGroup =
- ((n = e),
- (r = a.mediaTypes),
- function () {
- var e = r[n].activeTrack()
- return e ? r[n].activeGroup(e) : null
- }))
- }),
- (r = s.AUDIO.activeGroup()) &&
- ((r = (
- r.filter(function (e) {
- return e.default
- })[0] || r[0]
- ).id),
- (s.AUDIO.tracks[r].enabled = !0),
- s.AUDIO.onGroupChanged(),
- s.AUDIO.onTrackChanged(),
- s.AUDIO.getActiveGroup().playlistLoader ? (u.setAudio(!1), o.setAudio(!0)) : u.setAudio(!0)),
- t.on('mediachange', function () {
- ;['AUDIO', 'SUBTITLES'].forEach(function (e) {
- return s[e].onGroupChanged()
- })
- }),
- t.on('mediachanging', function () {
- ;['AUDIO', 'SUBTITLES'].forEach(function (e) {
- return s[e].onGroupChanging()
- })
- }),
- i.audioTracks().addEventListener('change', l),
- i.remoteTextTracks().addEventListener('change', s.SUBTITLES.onTrackChanged),
- n.on('dispose', function () {
- i.audioTracks().removeEventListener('change', l), i.remoteTextTracks().removeEventListener('change', s.SUBTITLES.onTrackChanged)
- }),
- i.clearTracks('audio'),
- s.AUDIO.tracks))
- i.audioTracks().addTrack(s.AUDIO.tracks[e])
- }
- function Kl(e, t, i) {
- var n,
- r,
- a,
- s,
- o = e.masterPlaylistController_,
- u = o[(e.options_.smoothQualityChange ? 'smooth' : 'fast') + 'QualityChange_'].bind(o)
- t.attributes && ((n = t.attributes.RESOLUTION), (this.width = n && n.width), (this.height = n && n.height), (this.bandwidth = t.attributes.BANDWIDTH)),
- (this.codecs = $u(o.master(), t)),
- (this.playlist = t),
- (this.id = i),
- (this.enabled =
- ((r = e.playlists),
- (a = t.id),
- (s = u),
- function (e) {
- var t = r.master.playlists[a],
- i = Zo(t),
- n = eu(t)
- return 'undefined' == typeof e ? n : (e ? delete t.disabled : (t.disabled = !0), e === n || i || (s(), e ? r.trigger('renditionenabled') : r.trigger('renditiondisabled')), e)
- }))
- }
- function Yl(t, e) {
- var i = 0,
- n = 0,
- r = tr.mergeOptions(wc, e)
- function a() {
- n && t.currentTime(n)
- }
- function s(e) {
- null != e &&
- ((n = (t.duration() !== 1 / 0 && t.currentTime()) || 0),
- t.one('loadedmetadata', a),
- t.src(e),
- t.trigger({ type: 'usage', name: 'vhs-error-reload' }),
- t.trigger({ type: 'usage', name: 'hls-error-reload' }),
- t.play())
- }
- function o() {
- return Date.now() - i < 1e3 * r.errorInterval
- ? (t.trigger({ type: 'usage', name: 'vhs-error-reload-canceled' }), void t.trigger({ type: 'usage', name: 'hls-error-reload-canceled' }))
- : r.getSource && 'function' == typeof r.getSource
- ? ((i = Date.now()), r.getSource.call(t, s))
- : void tr.log.error('ERROR: reloadSourceOnError - The option getSource must be a function!')
- }
- function u() {
- t.off('loadedmetadata', a), t.off('error', o), t.off('dispose', u)
- }
- t.ready(function () {
- t.trigger({ type: 'usage', name: 'vhs-error-reload-initialized' }), t.trigger({ type: 'usage', name: 'hls-error-reload-initialized' })
- }),
- t.on('error', o),
- t.on('dispose', u),
- (t.reloadSourceOnError = function (e) {
- u(), Yl(t, e)
- })
- }
- var Ql,
- $l = ['video', 'audio'],
- Jl = function (n, r, a) {
- return function (t, i) {
- var e = i[t + 'Buffer']
- if (jl(i.mediaSource, e)) {
- i.logger_('Appending segment ' + r.mediaIndex + "'s " + n.length + ' bytes to ' + t + 'Buffer')
- try {
- e.appendBuffer(n)
- } catch (e) {
- i.logger_('Error with code ' + e.code + ' ' + (22 === e.code ? '(QUOTA_EXCEEDED_ERR) ' : '') + 'when appending segment ' + r.mediaIndex + ' to ' + t + 'Buffer'),
- (i.queuePending[t] = null),
- a(e)
- }
- }
- }
- },
- Zl = function (n, r) {
- return function (t, i) {
- var e = i[t + 'Buffer']
- if (jl(i.mediaSource, e)) {
- i.logger_('Removing ' + n + ' to ' + r + ' from ' + t + 'Buffer')
- try {
- e.remove(n, r)
- } catch (e) {
- i.logger_('Remove ' + n + ' to ' + r + ' from ' + t + 'Buffer failed')
- }
- }
- }
- },
- ec = function (n) {
- return function (e, t) {
- var i = t[e + 'Buffer']
- jl(t.mediaSource, i) && (t.logger_('Setting ' + e + 'timestampOffset to ' + n), (i.timestampOffset = n))
- }
- },
- tc = function (i) {
- return function (e, t) {
- i()
- }
- },
- ic = function (t) {
- return function (e) {
- if ('open' === e.mediaSource.readyState) {
- e.logger_('Calling mediaSource endOfStream(' + (t || '') + ')')
- try {
- e.mediaSource.endOfStream(t)
- } catch (e) {
- tr.log.warn('Failed to call media source endOfStream', e)
- }
- }
- }
- },
- nc = function (t) {
- return function (e) {
- e.logger_('Setting mediaSource duration to ' + t)
- try {
- e.mediaSource.duration = t
- } catch (e) {
- tr.log.warn('Failed to set media source duration', e)
- }
- }
- },
- rc = function () {
- return function (t, e) {
- if ('open' === e.mediaSource.readyState) {
- var i = e[t + 'Buffer']
- if (jl(e.mediaSource, i)) {
- e.logger_('calling abort on ' + t + 'Buffer')
- try {
- i.abort()
- } catch (e) {
- tr.log.warn('Failed to abort on ' + t + 'Buffer', e)
- }
- }
- }
- }
- },
- ac = function (n, r) {
- return function (e) {
- var t = Nl(n),
- i = mr(r)
- e.logger_('Adding ' + n + 'Buffer with codec ' + r + ' to mediaSource')
- i = e.mediaSource.addSourceBuffer(i)
- i.addEventListener('updateend', e['on' + t + 'UpdateEnd_']), i.addEventListener('error', e['on' + t + 'Error_']), (e.codecs[n] = r), (e[n + 'Buffer'] = i)
- }
- },
- sc = function (i) {
- return function (e) {
- var t = e[i + 'Buffer']
- if ((Fl(i, e), jl(e.mediaSource, t))) {
- e.logger_('Removing ' + i + 'Buffer with codec ' + e.codecs[i] + ' from mediaSource')
- try {
- e.mediaSource.removeSourceBuffer(t)
- } catch (e) {
- tr.log.warn('Failed to removeSourceBuffer ' + i + 'Buffer', e)
- }
- }
- }
- },
- oc = function (r) {
- return function (e, t) {
- var i = t[e + 'Buffer'],
- n = mr(r)
- jl(t.mediaSource, i) && t.codecs[e] !== r && (t.logger_('changing ' + e + 'Buffer codec from ' + t.codecs[e] + ' to ' + r), i.changeType(n), (t.codecs[e] = r))
- }
- },
- uc = (function (i) {
- function e(e) {
- var t = i.call(this) || this
- return (
- (t.mediaSource = e),
- (t.sourceopenListener_ = function () {
- return Bl('mediaSource', ft(t))
- }),
- t.mediaSource.addEventListener('sourceopen', t.sourceopenListener_),
- (t.logger_ = Ro('SourceUpdater')),
- (t.audioTimestampOffset_ = 0),
- (t.videoTimestampOffset_ = 0),
- (t.queue = []),
- (t.queuePending = { audio: null, video: null }),
- (t.delayedAudioAppendQueue_ = []),
- (t.videoAppendQueued_ = !1),
- (t.codecs = {}),
- (t.onVideoUpdateEnd_ = ql('video', ft(t))),
- (t.onAudioUpdateEnd_ = ql('audio', ft(t))),
- (t.onVideoError_ = function (e) {
- t.videoError_ = e
- }),
- (t.onAudioError_ = function (e) {
- t.audioError_ = e
- }),
- (t.createdSourceBuffers_ = !1),
- (t.initializedEme_ = !1),
- (t.triggeredReady_ = !1),
- t
- )
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.initializedEme = function () {
- ;(this.initializedEme_ = !0), this.triggerReady()
- }),
- (t.hasCreatedSourceBuffers = function () {
- return this.createdSourceBuffers_
- }),
- (t.hasInitializedAnyEme = function () {
- return this.initializedEme_
- }),
- (t.ready = function () {
- return this.hasCreatedSourceBuffers() && this.hasInitializedAnyEme()
- }),
- (t.createSourceBuffers = function (e) {
- this.hasCreatedSourceBuffers() || (this.addOrChangeSourceBuffers(e), (this.createdSourceBuffers_ = !0), this.trigger('createdsourcebuffers'), this.triggerReady())
- }),
- (t.triggerReady = function () {
- this.ready() && !this.triggeredReady_ && ((this.triggeredReady_ = !0), this.trigger('ready'))
- }),
- (t.addSourceBuffer = function (e, t) {
- Hl({ type: 'mediaSource', sourceUpdater: this, action: ac(e, t), name: 'addSourceBuffer' })
- }),
- (t.abort = function (e) {
- Hl({ type: e, sourceUpdater: this, action: rc(e), name: 'abort' })
- }),
- (t.removeSourceBuffer = function (e) {
- this.canRemoveSourceBuffer() ? Hl({ type: 'mediaSource', sourceUpdater: this, action: sc(e), name: 'removeSourceBuffer' }) : tr.log.error('removeSourceBuffer is not supported!')
- }),
- (t.canRemoveSourceBuffer = function () {
- return (
- !tr.browser.IE_VERSION && !tr.browser.IS_FIREFOX && window.MediaSource && window.MediaSource.prototype && 'function' == typeof window.MediaSource.prototype.removeSourceBuffer
- )
- }),
- (e.canChangeType = function () {
- return window.SourceBuffer && window.SourceBuffer.prototype && 'function' == typeof window.SourceBuffer.prototype.changeType
- }),
- (t.canChangeType = function () {
- return this.constructor.canChangeType()
- }),
- (t.changeType = function (e, t) {
- this.canChangeType() ? Hl({ type: e, sourceUpdater: this, action: oc(t), name: 'changeType' }) : tr.log.error('changeType is not supported!')
- }),
- (t.addOrChangeSourceBuffers = function (i) {
- var n = this
- if (!i || 'object' != typeof i || 0 === Object.keys(i).length) throw new Error('Cannot addOrChangeSourceBuffers to undefined codecs')
- Object.keys(i).forEach(function (e) {
- var t = i[e]
- if (!n.hasCreatedSourceBuffers()) return n.addSourceBuffer(e, t)
- n.canChangeType() && n.changeType(e, t)
- })
- }),
- (t.appendBuffer = function (e, t) {
- var i = this,
- n = e.segmentInfo,
- r = e.type,
- a = e.bytes
- if (((this.processedAppend_ = !0), 'audio' === r && this.videoBuffer && !this.videoAppendQueued_))
- return this.delayedAudioAppendQueue_.push([e, t]), void this.logger_('delayed audio append of ' + a.length + ' until video append')
- Hl({ type: r, sourceUpdater: this, action: Jl(a, n || { mediaIndex: -1 }, t), doneFn: t, name: 'appendBuffer' }),
- 'video' === r &&
- ((this.videoAppendQueued_ = !0),
- this.delayedAudioAppendQueue_.length &&
- ((r = this.delayedAudioAppendQueue_.slice()),
- this.logger_('queuing delayed audio ' + r.length + ' appendBuffers'),
- (this.delayedAudioAppendQueue_.length = 0),
- r.forEach(function (e) {
- i.appendBuffer.apply(i, e)
- })))
- }),
- (t.audioBuffered = function () {
- return (jl(this.mediaSource, this.audioBuffer) && this.audioBuffer.buffered) || tr.createTimeRange()
- }),
- (t.videoBuffered = function () {
- return (jl(this.mediaSource, this.videoBuffer) && this.videoBuffer.buffered) || tr.createTimeRange()
- }),
- (t.buffered = function () {
- var e = jl(this.mediaSource, this.videoBuffer) ? this.videoBuffer : null,
- t = jl(this.mediaSource, this.audioBuffer) ? this.audioBuffer : null
- return t && !e
- ? this.audioBuffered()
- : e && !t
- ? this.videoBuffered()
- : (function (e, t) {
- var i = null,
- n = null,
- r = 0,
- a = [],
- s = []
- if (!(e && e.length && t && t.length)) return tr.createTimeRange()
- for (var o = e.length; o--; ) a.push({ time: e.start(o), type: 'start' }), a.push({ time: e.end(o), type: 'end' })
- for (o = t.length; o--; ) a.push({ time: t.start(o), type: 'start' }), a.push({ time: t.end(o), type: 'end' })
- for (
- a.sort(function (e, t) {
- return e.time - t.time
- }),
- o = 0;
- o < a.length;
- o++
- )
- 'start' === a[o].type ? 2 === ++r && (i = a[o].time) : 'end' === a[o].type && 1 === --r && (n = a[o].time),
- null !== i && null !== n && (s.push([i, n]), (n = i = null))
- return tr.createTimeRanges(s)
- })(this.audioBuffered(), this.videoBuffered())
- }),
- (t.setDuration = function (e, t) {
- void 0 === t && (t = Rl), Hl({ type: 'mediaSource', sourceUpdater: this, action: nc(e), name: 'duration', doneFn: t })
- }),
- (t.endOfStream = function (e, t) {
- void 0 === t && (t = Rl),
- Hl({ type: 'mediaSource', sourceUpdater: this, action: ic((e = 'string' != typeof (e = void 0 === e ? null : e) ? void 0 : e)), name: 'endOfStream', doneFn: t })
- }),
- (t.removeAudio = function (e, t, i) {
- void 0 === i && (i = Rl),
- this.audioBuffered().length && 0 !== this.audioBuffered().end(0) ? Hl({ type: 'audio', sourceUpdater: this, action: Zl(e, t), doneFn: i, name: 'remove' }) : i()
- }),
- (t.removeVideo = function (e, t, i) {
- void 0 === i && (i = Rl),
- this.videoBuffered().length && 0 !== this.videoBuffered().end(0) ? Hl({ type: 'video', sourceUpdater: this, action: Zl(e, t), doneFn: i, name: 'remove' }) : i()
- }),
- (t.updating = function () {
- return !(!Ul('audio', this) && !Ul('video', this))
- }),
- (t.audioTimestampOffset = function (e) {
- return (
- 'undefined' != typeof e &&
- this.audioBuffer &&
- this.audioTimestampOffset_ !== e &&
- (Hl({ type: 'audio', sourceUpdater: this, action: ec(e), name: 'timestampOffset' }), (this.audioTimestampOffset_ = e)),
- this.audioTimestampOffset_
- )
- }),
- (t.videoTimestampOffset = function (e) {
- return (
- 'undefined' != typeof e &&
- this.videoBuffer &&
- this.videoTimestampOffset !== e &&
- (Hl({ type: 'video', sourceUpdater: this, action: ec(e), name: 'timestampOffset' }), (this.videoTimestampOffset_ = e)),
- this.videoTimestampOffset_
- )
- }),
- (t.audioQueueCallback = function (e) {
- this.audioBuffer && Hl({ type: 'audio', sourceUpdater: this, action: tc(e), name: 'callback' })
- }),
- (t.videoQueueCallback = function (e) {
- this.videoBuffer && Hl({ type: 'video', sourceUpdater: this, action: tc(e), name: 'callback' })
- }),
- (t.dispose = function () {
- var t = this
- this.trigger('dispose'),
- $l.forEach(function (e) {
- t.abort(e),
- t.canRemoveSourceBuffer()
- ? t.removeSourceBuffer(e)
- : t[e + 'QueueCallback'](function () {
- return Fl(e, t)
- })
- }),
- (this.videoAppendQueued_ = !1),
- (this.delayedAudioAppendQueue_.length = 0),
- this.sourceopenListener_ && this.mediaSource.removeEventListener('sourceopen', this.sourceopenListener_),
- this.off()
- }),
- e
- )
- })(tr.EventTarget),
- lc = new Uint8Array(
- '\n\n'.split('').map(function (e) {
- return e.charCodeAt(0)
- })
- ),
- cc = (function (i) {
- function e(e, t) {
- return (
- ((t = i.call(this, e, (t = void 0 === t ? {} : t)) || this).mediaSource_ = null),
- (t.subtitlesTrack_ = null),
- (t.loaderType_ = 'subtitle'),
- (t.featuresNativeTextTracks_ = e.featuresNativeTextTracks),
- (t.shouldSaveSegmentTimingInfo_ = !1),
- t
- )
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.createTransmuxer_ = function () {
- return null
- }),
- (t.buffered_ = function () {
- if (!this.subtitlesTrack_ || !this.subtitlesTrack_.cues || !this.subtitlesTrack_.cues.length) return tr.createTimeRanges()
- var e = this.subtitlesTrack_.cues,
- t = e[0].startTime,
- e = e[e.length - 1].startTime
- return tr.createTimeRanges([[t, e]])
- }),
- (t.initSegmentForMap = function (e, t) {
- if ((void 0 === t && (t = !1), !e)) return null
- var i = Su(e),
- n = this.initSegments_[i]
- return (
- t &&
- !n &&
- e.bytes &&
- ((t = lc.byteLength + e.bytes.byteLength),
- (t = new Uint8Array(t)).set(e.bytes),
- t.set(lc, e.bytes.byteLength),
- (this.initSegments_[i] = n = { resolvedUri: e.resolvedUri, byterange: e.byterange, bytes: t })),
- n || e
- )
- }),
- (t.couldBeginLoading_ = function () {
- return this.playlist_ && this.subtitlesTrack_ && !this.paused()
- }),
- (t.init_ = function () {
- return (this.state = 'READY'), this.resetEverything(), this.monitorBuffer_()
- }),
- (t.track = function (e) {
- return 'undefined' == typeof e || ((this.subtitlesTrack_ = e), 'INIT' === this.state && this.couldBeginLoading_() && this.init_()), this.subtitlesTrack_
- }),
- (t.remove = function (e, t) {
- rl(e, t, this.subtitlesTrack_)
- }),
- (t.fillBuffer_ = function () {
- var e = this,
- t = this.chooseNextRequest_()
- if (t) {
- if (null === this.syncController_.timestampOffsetForTimeline(t.timeline))
- return (
- this.syncController_.one('timestampoffset', function () {
- ;(e.state = 'READY'), e.paused() || e.monitorBuffer_()
- }),
- void (this.state = 'WAITING_ON_TIMELINE')
- )
- this.loadSegment_(t)
- }
- }),
- (t.timestampOffsetForSegment_ = function () {
- return null
- }),
- (t.chooseNextRequest_ = function () {
- return this.skipEmptySegments_(i.prototype.chooseNextRequest_.call(this))
- }),
- (t.skipEmptySegments_ = function (e) {
- for (; e && e.segment.empty; ) {
- if (e.mediaIndex + 1 >= e.playlist.segments.length) {
- e = null
- break
- }
- e = this.generateSegmentInfo_({ playlist: e.playlist, mediaIndex: e.mediaIndex + 1, startOfSegment: e.startOfSegment + e.duration, isSyncRequest: e.isSyncRequest })
- }
- return e
- }),
- (t.stopForError = function (e) {
- this.error(e), (this.state = 'READY'), this.pause(), this.trigger('error')
- }),
- (t.segmentRequestFinished_ = function (e, t, i) {
- var n = this
- if (this.subtitlesTrack_) {
- if ((this.saveTransferStats_(t.stats), !this.pendingSegment_)) return (this.state = 'READY'), void (this.mediaRequestsAborted += 1)
- if (e) return e.code === Pl && this.handleTimeout_(), e.code === Ll ? (this.mediaRequestsAborted += 1) : (this.mediaRequestsErrored += 1), void this.stopForError(e)
- var r = this.pendingSegment_
- this.saveBandwidthRelatedStats_(r.duration, t.stats), (this.state = 'APPENDING'), this.trigger('appending')
- var a = r.segment
- if ((a.map && (a.map.bytes = t.map.bytes), (r.bytes = t.bytes), 'function' != typeof window.WebVTT && this.subtitlesTrack_ && this.subtitlesTrack_.tech_)) {
- var s = function () {
- n.subtitlesTrack_.tech_.off('vttjsloaded', o), n.stopForError({ message: 'Error loading vtt.js' })
- },
- o = function () {
- n.subtitlesTrack_.tech_.off('vttjserror', s), n.segmentRequestFinished_(e, t, i)
- }
- return (this.state = 'WAITING_ON_VTTJS'), this.subtitlesTrack_.tech_.one('vttjsloaded', o), void this.subtitlesTrack_.tech_.one('vttjserror', s)
- }
- a.requested = !0
- try {
- this.parseVTTCues_(r)
- } catch (e) {
- return void this.stopForError({ message: e.message })
- }
- if (
- (this.updateTimeMapping_(r, this.syncController_.timelines[r.timeline], this.playlist_),
- r.cues.length
- ? (r.timingInfo = { start: r.cues[0].startTime, end: r.cues[r.cues.length - 1].endTime })
- : (r.timingInfo = { start: r.startOfSegment, end: r.startOfSegment + r.duration }),
- r.isSyncRequest)
- )
- return this.trigger('syncinfoupdate'), (this.pendingSegment_ = null), void (this.state = 'READY')
- ;(r.byteLength = r.bytes.byteLength),
- (this.mediaSecondsLoaded += a.duration),
- r.cues.forEach(function (e) {
- n.subtitlesTrack_.addCue(n.featuresNativeTextTracks_ ? new window.VTTCue(e.startTime, e.endTime, e.text) : e)
- }),
- (function (t) {
- var e = t.cues
- if (e)
- for (var i = 0; i < e.length; i++) {
- for (var n = [], r = 0, a = 0; a < e.length; a++)
- e[i].startTime === e[a].startTime && e[i].endTime === e[a].endTime && e[i].text === e[a].text && 1 < ++r && n.push(e[a])
- n.length &&
- n.forEach(function (e) {
- return t.removeCue(e)
- })
- }
- })(this.subtitlesTrack_),
- this.handleAppendsDone_()
- } else this.state = 'READY'
- }),
- (t.handleData_ = function () {}),
- (t.updateTimingInfoEnd_ = function () {}),
- (t.parseVTTCues_ = function (t) {
- var e = !1
- 'function' == typeof window.TextDecoder ? (i = new window.TextDecoder('utf8')) : ((i = window.WebVTT.StringDecoder()), (e = !0))
- var i = new window.WebVTT.Parser(window, window.vttjs, i)
- ;(t.cues = []),
- (t.timestampmap = { MPEGTS: 0, LOCAL: 0 }),
- (i.oncue = t.cues.push.bind(t.cues)),
- (i.ontimestampmap = function (e) {
- t.timestampmap = e
- }),
- (i.onparsingerror = function (e) {
- tr.log.warn('Error encountered when parsing cues: ' + e.message)
- }),
- t.segment.map && ((n = t.segment.map.bytes), e && (n = Vl(n)), i.parse(n))
- var n = t.bytes
- e && (n = Vl(n)), i.parse(n), i.flush()
- }),
- (t.updateTimeMapping_ = function (e, t, i) {
- var n,
- r,
- a = e.segment
- t &&
- (e.cues.length
- ? ((r = e.timestampmap),
- (n = r.MPEGTS / hl - r.LOCAL + t.mapping),
- e.cues.forEach(function (e) {
- ;(e.startTime += n), (e.endTime += n)
- }),
- i.syncInfo ||
- ((r = e.cues[0].startTime),
- (t = e.cues[e.cues.length - 1].startTime),
- (i.syncInfo = { mediaSequence: i.mediaSequence + e.mediaIndex, time: Math.min(r, t - a.duration) })))
- : (a.empty = !0))
- }),
- e
- )
- })(Ml),
- dc = [
- {
- name: 'VOD',
- run: function (e, t, i, n, r) {
- if (i === 1 / 0) return null
- return { time: 0, segmentIndex: 0, partIndex: null }
- },
- },
- {
- name: 'ProgramDateTime',
- run: function (e, t, i, n, r) {
- if (!Object.keys(e.timelineToDatetimeMappings).length) return null
- var a = null,
- s = null,
- o = Wo(t)
- r = r || 0
- for (var u = 0; u < o.length; u++) {
- var l = o[t.endList || 0 === r ? u : o.length - (u + 1)],
- c = l.segment,
- d = e.timelineToDatetimeMappings[c.timeline]
- if (d && c.dateTimeObject) {
- var h = c.dateTimeObject.getTime() / 1e3 + d
- if (c.parts && 'number' == typeof l.partIndex) for (var p = 0; p < l.partIndex; p++) h += c.parts[p].duration
- d = Math.abs(r - h)
- if (null !== s && (0 === d || s < d)) break
- ;(s = d), (a = { time: h, segmentIndex: l.segmentIndex, partIndex: l.partIndex })
- }
- }
- return a
- },
- },
- {
- name: 'Segment',
- run: function (e, t, i, n, r) {
- var a = null,
- s = null
- r = r || 0
- for (var o = Wo(t), u = 0; u < o.length; u++) {
- var l = o[t.endList || 0 === r ? u : o.length - (u + 1)],
- c = l.segment,
- d = (l.part && l.part.start) || (c && c.start)
- if (c.timeline === n && 'undefined' != typeof d) {
- c = Math.abs(r - d)
- if (null !== s && s < c) break
- ;(!a || null === s || c <= s) && ((s = c), (a = { time: d, segmentIndex: l.segmentIndex, partIndex: l.partIndex }))
- }
- }
- return a
- },
- },
- {
- name: 'Discontinuity',
- run: function (e, t, i, n, r) {
- var a = null
- if (((r = r || 0), t.discontinuityStarts && t.discontinuityStarts.length))
- for (var s = null, o = 0; o < t.discontinuityStarts.length; o++) {
- var u = t.discontinuityStarts[o],
- l = t.discontinuitySequence + o + 1,
- c = e.discontinuities[l]
- if (c) {
- l = Math.abs(r - c.time)
- if (null !== s && s < l) break
- ;(!a || null === s || l <= s) && ((s = l), (a = { time: c.time, segmentIndex: u, partIndex: null }))
- }
- }
- return a
- },
- },
- {
- name: 'Playlist',
- run: function (e, t, i, n, r) {
- return t.syncInfo ? { time: t.syncInfo.time, segmentIndex: t.syncInfo.mediaSequence - t.mediaSequence, partIndex: null } : null
- },
- },
- ],
- hc = (function (i) {
- function e(e) {
- var t = i.call(this) || this
- return (t.timelines = []), (t.discontinuities = []), (t.timelineToDatetimeMappings = {}), (t.logger_ = Ro('SyncController')), t
- }
- mt(e, i)
- var t = e.prototype
- return (
- (t.getSyncPoint = function (e, t, i, n) {
- i = this.runStrategies_(e, t, i, n)
- return i.length ? this.selectSyncPoint_(i, { key: 'time', value: n }) : null
- }),
- (t.getExpiredTime = function (e, t) {
- if (!e || !e.segments) return null
- t = this.runStrategies_(e, t, e.discontinuitySequence, 0)
- if (!t.length) return null
- t = this.selectSyncPoint_(t, { key: 'segmentIndex', value: 0 })
- return 0 < t.segmentIndex && (t.time *= -1), Math.abs(t.time + Qo({ defaultDuration: e.targetDuration, durationList: e.segments, startIndex: t.segmentIndex, endIndex: 0 }))
- }),
- (t.runStrategies_ = function (e, t, i, n) {
- for (var r = [], a = 0; a < dc.length; a++) {
- var s = dc[a],
- o = s.run(this, e, t, i, n)
- o && ((o.strategy = s.name), r.push({ strategy: s.name, syncPoint: o }))
- }
- return r
- }),
- (t.selectSyncPoint_ = function (e, t) {
- for (var i = e[0].syncPoint, n = Math.abs(e[0].syncPoint[t.key] - t.value), r = e[0].strategy, a = 1; a < e.length; a++) {
- var s = Math.abs(e[a].syncPoint[t.key] - t.value)
- s < n && ((n = s), (i = e[a].syncPoint), (r = e[a].strategy))
- }
- return (
- this.logger_(
- 'syncPoint for [' +
- t.key +
- ': ' +
- t.value +
- '] chosen with strategy [' +
- r +
- ']: [time:' +
- i.time +
- ', segmentIndex:' +
- i.segmentIndex +
- ('number' == typeof i.partIndex ? ',partIndex:' + i.partIndex : '') +
- ']'
- ),
- i
- )
- }),
- (t.saveExpiredSegmentInfo = function (e, t) {
- var i = t.mediaSequence - e.mediaSequence
- if (86400 < i) tr.log.warn('Not saving expired segment info. Media sequence gap ' + i + ' is too large.')
- else
- for (var n = i - 1; 0 <= n; n--) {
- var r = e.segments[n]
- if (r && 'undefined' != typeof r.start) {
- ;(t.syncInfo = { mediaSequence: e.mediaSequence + n, time: r.start }),
- this.logger_('playlist refresh sync: [time:' + t.syncInfo.time + ', mediaSequence: ' + t.syncInfo.mediaSequence + ']'),
- this.trigger('syncinfoupdate')
- break
- }
- }
- }),
- (t.setDateTimeMappingForStart = function (e) {
- var t
- ;(this.timelineToDatetimeMappings = {}),
- e.segments &&
- e.segments.length &&
- e.segments[0].dateTimeObject &&
- ((e = (t = e.segments[0]).dateTimeObject.getTime() / 1e3), (this.timelineToDatetimeMappings[t.timeline] = -e))
- }),
- (t.saveSegmentTimingInfo = function (e) {
- var t = e.segmentInfo,
- i = e.shouldSaveTimelineMapping,
- n = this.calculateSegmentTimeMapping_(t, t.timingInfo, i),
- e = t.segment
- n && (this.saveDiscontinuitySyncInfo_(t), t.playlist.syncInfo || (t.playlist.syncInfo = { mediaSequence: t.playlist.mediaSequence + t.mediaIndex, time: e.start }))
- t = e.dateTimeObject
- e.discontinuity && i && t && (this.timelineToDatetimeMappings[e.timeline] = -t.getTime() / 1e3)
- }),
- (t.timestampOffsetForTimeline = function (e) {
- return 'undefined' == typeof this.timelines[e] ? null : this.timelines[e].time
- }),
- (t.mappingForTimeline = function (e) {
- return 'undefined' == typeof this.timelines[e] ? null : this.timelines[e].mapping
- }),
- (t.calculateSegmentTimeMapping_ = function (e, t, i) {
- var n,
- r,
- a = e.segment,
- s = e.part,
- o = this.timelines[e.timeline]
- if ('number' == typeof e.timestampOffset)
- (o = { time: e.startOfSegment, mapping: e.startOfSegment - t.start }),
- i &&
- ((this.timelines[e.timeline] = o),
- this.trigger('timestampoffset'),
- this.logger_('time mapping for timeline ' + e.timeline + ': [time: ' + o.time + '] [mapping: ' + o.mapping + ']')),
- (n = e.startOfSegment),
- (r = t.end + o.mapping)
- else {
- if (!o) return !1
- ;(n = t.start + o.mapping), (r = t.end + o.mapping)
- }
- return s && ((s.start = n), (s.end = r)), (!a.start || n < a.start) && (a.start = n), (a.end = r), !0
- }),
- (t.saveDiscontinuitySyncInfo_ = function (e) {
- var t = e.playlist,
- i = e.segment
- if (i.discontinuity) this.discontinuities[i.timeline] = { time: i.start, accuracy: 0 }
- else if (t.discontinuityStarts && t.discontinuityStarts.length)
- for (var n = 0; n < t.discontinuityStarts.length; n++) {
- var r,
- a = t.discontinuityStarts[n],
- s = t.discontinuitySequence + n + 1,
- o = a - e.mediaIndex,
- u = Math.abs(o)
- ;(!this.discontinuities[s] || this.discontinuities[s].accuracy > u) &&
- ((r = void 0),
- (r =
- o < 0
- ? i.start - Qo({ defaultDuration: t.targetDuration, durationList: t.segments, startIndex: e.mediaIndex, endIndex: a })
- : i.end + Qo({ defaultDuration: t.targetDuration, durationList: t.segments, startIndex: e.mediaIndex + 1, endIndex: a })),
- (this.discontinuities[s] = { time: r, accuracy: u }))
- }
- }),
- (t.dispose = function () {
- this.trigger('dispose'), this.off()
- }),
- e
- )
- })(tr.EventTarget),
- pc = (function (t) {
- function e() {
- var e = t.call(this) || this
- return (e.pendingTimelineChanges_ = {}), (e.lastTimelineChanges_ = {}), e
- }
- mt(e, t)
- var i = e.prototype
- return (
- (i.clearPendingTimelineChange = function (e) {
- ;(this.pendingTimelineChanges_[e] = null), this.trigger('pendingtimelinechange')
- }),
- (i.pendingTimelineChange = function (e) {
- var t = e.type,
- i = e.from,
- e = e.to
- return (
- 'number' == typeof i && 'number' == typeof e && ((this.pendingTimelineChanges_[t] = { type: t, from: i, to: e }), this.trigger('pendingtimelinechange')),
- this.pendingTimelineChanges_[t]
- )
- }),
- (i.lastTimelineChange = function (e) {
- var t = e.type,
- i = e.from,
- e = e.to
- return (
- 'number' == typeof i &&
- 'number' == typeof e &&
- ((this.lastTimelineChanges_[t] = { type: t, from: i, to: e }), delete this.pendingTimelineChanges_[t], this.trigger('timelinechange')),
- this.lastTimelineChanges_[t]
- )
- }),
- (i.dispose = function () {
- this.trigger('dispose'), (this.pendingTimelineChanges_ = {}), (this.lastTimelineChanges_ = {}), this.off()
- }),
- e
- )
- })(tr.EventTarget),
- fc = x(
- U(
- W(function () {
- var e = 'undefined' != typeof globalThis ? globalThis : 'undefined' != typeof window ? window : 'undefined' != typeof global ? global : 'undefined' != typeof self ? self : {}
- function t(e, t, i) {
- return (
- e(
- (i = {
- path: t,
- exports: {},
- require: function (e, t) {
- return (function () {
- throw new Error('Dynamic requires are not currently supported by @rollup/plugin-commonjs')
- })(null == t && i.path)
- },
- }),
- i.exports
- ),
- i.exports
- )
- }
- var i = t(function (e) {
- function n(e, t) {
- for (var i = 0; i < t.length; i++) {
- var n = t[i]
- ;(n.enumerable = n.enumerable || !1), (n.configurable = !0), 'value' in n && (n.writable = !0), Object.defineProperty(e, n.key, n)
- }
- }
- ;(e.exports = function (e, t, i) {
- return t && n(e.prototype, t), i && n(e, i), e
- }),
- (e.exports.default = e.exports),
- (e.exports.__esModule = !0)
- }),
- n = t(function (i) {
- function n(e, t) {
- return (
- (i.exports = n =
- Object.setPrototypeOf ||
- function (e, t) {
- return (e.__proto__ = t), e
- }),
- (i.exports.default = i.exports),
- (i.exports.__esModule = !0),
- n(e, t)
- )
- }
- ;(i.exports = n), (i.exports.default = i.exports), (i.exports.__esModule = !0)
- }),
- r = t(function (e) {
- ;(e.exports = function (e, t) {
- ;(e.prototype = Object.create(t.prototype)), (e.prototype.constructor = e), n(e, t)
- }),
- (e.exports.default = e.exports),
- (e.exports.__esModule = !0)
- }),
- a = (function () {
- function e() {
- this.listeners = {}
- }
- var t = e.prototype
- return (
- (t.on = function (e, t) {
- this.listeners[e] || (this.listeners[e] = []), this.listeners[e].push(t)
- }),
- (t.off = function (e, t) {
- if (!this.listeners[e]) return !1
- t = this.listeners[e].indexOf(t)
- return (this.listeners[e] = this.listeners[e].slice(0)), this.listeners[e].splice(t, 1), -1 < t
- }),
- (t.trigger = function (e) {
- var t = this.listeners[e]
- if (t)
- if (2 === arguments.length) for (var i = t.length, n = 0; n < i; ++n) t[n].call(this, arguments[1])
- else for (var r = Array.prototype.slice.call(arguments, 1), a = t.length, s = 0; s < a; ++s) t[s].apply(this, r)
- }),
- (t.dispose = function () {
- this.listeners = {}
- }),
- (t.pipe = function (t) {
- this.on('data', function (e) {
- t.push(e)
- })
- }),
- e
- )
- })()
- /*! @name aes-decrypter @version 3.1.3 @license Apache-2.0 */
- var c = null,
- m = (function () {
- function e(e) {
- var t, i, n
- ;(c =
- c ||
- (function () {
- for (
- var e,
- t,
- i,
- n,
- r,
- a,
- s,
- o = [
- [[], [], [], [], []],
- [[], [], [], [], []],
- ],
- u = o[0],
- l = o[1],
- c = u[4],
- d = l[4],
- h = [],
- p = [],
- f = 0;
- f < 256;
- f++
- )
- p[(h[f] = (f << 1) ^ (283 * (f >> 7))) ^ f] = f
- for (e = t = 0; !c[e]; e ^= i || 1, t = p[t] || 1)
- for (
- s =
- (16843009 * h[(n = h[(i = h[(d[(c[e] = r = ((r = t ^ (t << 1) ^ (t << 2) ^ (t << 3) ^ (t << 4)) >> 8) ^ (255 & r) ^ 99)] = e)])])]) ^
- (65537 * n) ^
- (257 * i) ^
- (16843008 * e),
- a = (257 * h[r]) ^ (16843008 * r),
- f = 0;
- f < 4;
- f++
- )
- (u[f][e] = a = (a << 24) ^ (a >>> 8)), (l[f][r] = s = (s << 24) ^ (s >>> 8))
- for (f = 0; f < 5; f++) (u[f] = u[f].slice(0)), (l[f] = l[f].slice(0))
- return o
- })()),
- (this._tables = [
- [c[0][0].slice(), c[0][1].slice(), c[0][2].slice(), c[0][3].slice(), c[0][4].slice()],
- [c[1][0].slice(), c[1][1].slice(), c[1][2].slice(), c[1][3].slice(), c[1][4].slice()],
- ])
- var r = this._tables[0][4],
- a = this._tables[1],
- s = e.length,
- o = 1
- if (4 !== s && 6 !== s && 8 !== s) throw new Error('Invalid aes key size')
- var u = e.slice(0),
- l = []
- for (this._key = [u, l], t = s; t < 4 * s + 28; t++)
- (n = u[t - 1]),
- (t % s == 0 || (8 === s && t % s == 4)) &&
- ((n = (r[n >>> 24] << 24) ^ (r[(n >> 16) & 255] << 16) ^ (r[(n >> 8) & 255] << 8) ^ r[255 & n]),
- t % s == 0 && ((n = (n << 8) ^ (n >>> 24) ^ (o << 24)), (o = (o << 1) ^ (283 * (o >> 7))))),
- (u[t] = u[t - s] ^ n)
- for (i = 0; t; i++, t--)
- (n = u[3 & i ? t : t - 4]), (l[i] = t <= 4 || i < 4 ? n : a[0][r[n >>> 24]] ^ a[1][r[(n >> 16) & 255]] ^ a[2][r[(n >> 8) & 255]] ^ a[3][r[255 & n]])
- }
- return (
- (e.prototype.decrypt = function (e, t, i, n, r, a) {
- for (
- var s,
- o,
- u,
- l = this._key[1],
- c = e ^ l[0],
- d = n ^ l[1],
- h = i ^ l[2],
- p = t ^ l[3],
- f = l.length / 4 - 2,
- m = 4,
- t = this._tables[1],
- g = t[0],
- y = t[1],
- v = t[2],
- _ = t[3],
- b = t[4],
- T = 0;
- T < f;
- T++
- )
- (s = g[c >>> 24] ^ y[(d >> 16) & 255] ^ v[(h >> 8) & 255] ^ _[255 & p] ^ l[m]),
- (o = g[d >>> 24] ^ y[(h >> 16) & 255] ^ v[(p >> 8) & 255] ^ _[255 & c] ^ l[m + 1]),
- (u = g[h >>> 24] ^ y[(p >> 16) & 255] ^ v[(c >> 8) & 255] ^ _[255 & d] ^ l[m + 2]),
- (p = g[p >>> 24] ^ y[(c >> 16) & 255] ^ v[(d >> 8) & 255] ^ _[255 & h] ^ l[m + 3]),
- (m += 4),
- (c = s),
- (d = o),
- (h = u)
- for (T = 0; T < 4; T++)
- (r[(3 & -T) + a] = (b[c >>> 24] << 24) ^ (b[(d >> 16) & 255] << 16) ^ (b[(h >> 8) & 255] << 8) ^ b[255 & p] ^ l[m++]),
- (s = c),
- (c = d),
- (d = h),
- (h = p),
- (p = s)
- }),
- e
- )
- })(),
- l = (function (t) {
- function e() {
- var e = t.call(this, a) || this
- return (e.jobs = []), (e.delay = 1), (e.timeout_ = null), e
- }
- r(e, t)
- var i = e.prototype
- return (
- (i.processJob_ = function () {
- this.jobs.shift()(), this.jobs.length ? (this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay)) : (this.timeout_ = null)
- }),
- (i.push = function (e) {
- this.jobs.push(e), this.timeout_ || (this.timeout_ = setTimeout(this.processJob_.bind(this), this.delay))
- }),
- e
- )
- })(a),
- g = function (e) {
- return (e << 24) | ((65280 & e) << 8) | ((16711680 & e) >> 8) | (e >>> 24)
- },
- s = (function () {
- function u(e, t, i, n) {
- var r = u.STEP,
- a = new Int32Array(e.buffer),
- s = new Uint8Array(e.byteLength),
- o = 0
- for (this.asyncStream_ = new l(), this.asyncStream_.push(this.decryptChunk_(a.subarray(o, o + r), t, i, s)), o = r; o < a.length; o += r)
- (i = new Uint32Array([g(a[o - 4]), g(a[o - 3]), g(a[o - 2]), g(a[o - 1])])), this.asyncStream_.push(this.decryptChunk_(a.subarray(o, o + r), t, i, s))
- this.asyncStream_.push(function () {
- /*! @name pkcs7 @version 1.0.4 @license Apache-2.0 */
- var e
- n(null, (e = s).subarray(0, e.byteLength - e[e.byteLength - 1]))
- })
- }
- return (
- (u.prototype.decryptChunk_ = function (t, i, n, r) {
- return function () {
- var e = (function (e, t, i) {
- for (
- var n,
- r,
- a,
- s,
- o = new Int32Array(e.buffer, e.byteOffset, e.byteLength >> 2),
- u = new m(Array.prototype.slice.call(t)),
- e = new Uint8Array(e.byteLength),
- l = new Int32Array(e.buffer),
- c = i[0],
- d = i[1],
- h = i[2],
- p = i[3],
- f = 0;
- f < o.length;
- f += 4
- )
- (n = g(o[f])),
- (r = g(o[f + 1])),
- (a = g(o[f + 2])),
- (s = g(o[f + 3])),
- u.decrypt(n, r, a, s, l, f),
- (l[f] = g(l[f] ^ c)),
- (l[f + 1] = g(l[f + 1] ^ d)),
- (l[f + 2] = g(l[f + 2] ^ h)),
- (l[f + 3] = g(l[f + 3] ^ p)),
- (c = n),
- (d = r),
- (h = a),
- (p = s)
- return e
- })(t, i, n)
- r.set(e, t.byteOffset)
- }
- }),
- i(u, null, [
- {
- key: 'STEP',
- get: function () {
- return 32e3
- },
- },
- ]),
- u
- )
- })(),
- e = 'undefined' != typeof window ? window : 'undefined' != typeof e ? e : 'undefined' != typeof self ? self : {},
- e = e.BigInt || Number
- e('0x1'), e('0x100'), e('0x10000'), e('0x1000000'), e('0x100000000'), e('0x10000000000'), e('0x1000000000000'), e('0x100000000000000'), e('0x10000000000000000')
- function o(n) {
- var r = {}
- return (
- Object.keys(n).forEach(function (e) {
- var t,
- i = n[e]
- ;(t = i),
- ('function' === ArrayBuffer.isView ? ArrayBuffer.isView(t) : t && t.buffer instanceof ArrayBuffer)
- ? (r[e] = { bytes: i.buffer, byteOffset: i.byteOffset, byteLength: i.byteLength })
- : (r[e] = i)
- }),
- r
- )
- }
- self.onmessage = function (e) {
- var i = e.data,
- t = new Uint8Array(i.encrypted.bytes, i.encrypted.byteOffset, i.encrypted.byteLength),
- n = new Uint32Array(i.key.bytes, i.key.byteOffset, i.key.byteLength / 4),
- e = new Uint32Array(i.iv.bytes, i.iv.byteOffset, i.iv.byteLength / 4)
- new s(t, n, e, function (e, t) {
- self.postMessage(o({ source: i.source, decrypted: t }), [t.buffer])
- })
- }
- })
- )
- ),
- mc = {
- AUDIO: function (s, o) {
- return function () {
- var e = o.segmentLoaders[s],
- t = o.mediaTypes[s],
- i = o.blacklistCurrentPlaylist
- Wl(e, t)
- var n = t.activeTrack(),
- e = t.activeGroup(),
- e = (
- e.filter(function (e) {
- return e.default
- })[0] || e[0]
- ).id,
- r = t.tracks[e]
- if (n !== r) {
- for (var a in (tr.log.warn('Problem encountered loading the alternate audio track.Switching back to default.'), t.tracks)) t.tracks[a].enabled = t.tracks[a] === r
- t.onTrackChanged()
- } else i({ message: 'Problem encountered loading the default audio track.' })
- }
- },
- SUBTITLES: function (i, n) {
- return function () {
- var e = n.segmentLoaders[i],
- t = n.mediaTypes[i]
- tr.log.warn('Problem encountered loading the subtitle track.Disabling subtitle track.'), Wl(e, t)
- e = t.activeTrack()
- e && (e.mode = 'disabled'), t.onTrackChanged()
- }
- },
- },
- gc = {
- AUDIO: function (e, t, i) {
- var n, r, a
- t &&
- ((n = i.tech),
- (r = i.requestOptions),
- (a = i.segmentLoaders[e]),
- t.on('loadedmetadata', function () {
- var e = t.media()
- a.playlist(e, r), (!n.paused() || (e.endList && 'none' !== n.preload())) && a.load()
- }),
- t.on('loadedplaylist', function () {
- a.playlist(t.media(), r), n.paused() || a.load()
- }),
- t.on('error', mc[e](e, i)))
- },
- SUBTITLES: function (e, t, i) {
- var n = i.tech,
- r = i.requestOptions,
- a = i.segmentLoaders[e],
- s = i.mediaTypes[e]
- t.on('loadedmetadata', function () {
- var e = t.media()
- a.playlist(e, r), a.track(s.activeTrack()), (!n.paused() || (e.endList && 'none' !== n.preload())) && a.load()
- }),
- t.on('loadedplaylist', function () {
- a.playlist(t.media(), r), n.paused() || a.load()
- }),
- t.on('error', mc[e](e, i))
- },
- },
- yc = {
- AUDIO: function (e, t) {
- var i,
- n,
- r = t.vhs,
- a = t.sourceType,
- s = t.segmentLoaders[e],
- o = t.requestOptions,
- u = t.master.mediaGroups,
- l = t.mediaTypes[e],
- c = l.groups,
- d = l.tracks,
- h = l.logger_,
- p = t.masterPlaylistLoader,
- f = au(p.master)
- for (i in ((u[e] && 0 !== Object.keys(u[e]).length) || ((u[e] = { main: { default: { default: !0 } } }), f && (u[e].main.default.playlists = p.master.playlists)), u[e]))
- for (var m in (c[i] || (c[i] = []), u[e][i])) {
- var g = u[e][i][m],
- y = void 0,
- y = f
- ? (h("AUDIO group '" + i + "' label '" + m + "' is a master playlist"), (g.isMasterPlaylist = !0), null)
- : 'vhs-json' === a && g.playlists
- ? new _l(g.playlists[0], r, o)
- : g.resolvedUri
- ? new _l(g.resolvedUri, r, o)
- : g.playlists && 'dash' === a
- ? new wl(g.playlists[0], r, o, p)
- : null,
- g = tr.mergeOptions({ id: m, playlistLoader: y }, g)
- gc[e](e, g.playlistLoader, t),
- c[i].push(g),
- 'undefined' == typeof d[m] &&
- ((g = new tr.AudioTrack({
- id: m,
- kind:
- ((n = void 0),
- (n = (y = g).default ? 'main' : 'alternative'),
- (n = y.characteristics && 0 <= y.characteristics.indexOf('public.accessibility.describes-video') ? 'main-desc' : n)),
- enabled: !1,
- language: g.language,
- default: g.default,
- label: m,
- })),
- (d[m] = g))
- }
- s.on('error', mc[e](e, t))
- },
- SUBTITLES: function (e, t) {
- var i,
- n = t.tech,
- r = t.vhs,
- a = t.sourceType,
- s = t.segmentLoaders[e],
- o = t.requestOptions,
- u = t.master.mediaGroups,
- l = t.mediaTypes[e],
- c = l.groups,
- d = l.tracks,
- h = t.masterPlaylistLoader
- for (i in u[e])
- for (var p in (c[i] || (c[i] = []), u[e][i]))
- if (!u[e][i][p].forced) {
- var f = u[e][i][p],
- m = void 0
- if ('hls' === a) m = new _l(f.resolvedUri, r, o)
- else if ('dash' === a) {
- if (
- !f.playlists.filter(function (e) {
- return e.excludeUntil !== 1 / 0
- }).length
- )
- return
- m = new wl(f.playlists[0], r, o, h)
- } else 'vhs-json' === a && (m = new _l(f.playlists ? f.playlists[0] : f.resolvedUri, r, o))
- ;(f = tr.mergeOptions({ id: p, playlistLoader: m }, f)),
- gc[e](e, f.playlistLoader, t),
- c[i].push(f),
- 'undefined' == typeof d[p] &&
- ((f = n.addRemoteTextTrack({ id: p, kind: 'subtitles', default: f.default && f.autoselect, language: f.language, label: p }, !1).track), (d[p] = f))
- }
- s.on('error', mc[e](e, t))
- },
- 'CLOSED-CAPTIONS': function (e, t) {
- var i,
- n = t.tech,
- r = t.master.mediaGroups,
- t = t.mediaTypes[e],
- a = t.groups,
- s = t.tracks
- for (i in r[e])
- for (var o in (a[i] || (a[i] = []), r[e][i])) {
- var u,
- l,
- c = r[e][i][o]
- ;/^(?:CC|SERVICE)/.test(c.instreamId) &&
- (void 0 ===
- (l = (u = (n.options_.vhs && n.options_.vhs.captionServices) || {})[
- (l = { label: o, language: c.language, instreamId: c.instreamId, default: c.default && c.autoselect }).instreamId
- ]
- ? tr.mergeOptions(l, u[l.instreamId])
- : l).default && delete l.default,
- a[i].push(tr.mergeOptions({ id: o }, c)),
- 'undefined' == typeof s[o] &&
- ((l = n.addRemoteTextTrack({ id: l.instreamId, kind: 'captions', default: l.default, language: l.language, label: l.label }, !1).track), (s[o] = l)))
- }
- },
- },
- vc = {
- AUDIO: function (i, n) {
- return function () {
- var e,
- t = n.mediaTypes[i].tracks
- for (e in t) if (t[e].enabled) return t[e]
- return null
- }
- },
- SUBTITLES: function (i, n) {
- return function () {
- var e,
- t = n.mediaTypes[i].tracks
- for (e in t) if ('showing' === t[e].mode || 'hidden' === t[e].mode) return t[e]
- return null
- }
- },
- },
- _c = ['mediaRequests', 'mediaRequestsAborted', 'mediaRequestsTimedout', 'mediaRequestsErrored', 'mediaTransferDuration', 'mediaBytesTransferred', 'mediaAppends'],
- bc = (function (v) {
- function e(e) {
- var t = v.call(this) || this,
- i = e.src,
- n = e.handleManifestRedirects,
- r = e.withCredentials,
- a = e.tech,
- s = e.bandwidth,
- o = e.externVhs,
- u = e.useCueTags,
- l = e.blacklistDuration,
- c = e.enableLowInitialPlaylist,
- d = e.sourceType,
- h = e.cacheEncryptionKeys,
- p = e.experimentalBufferBasedABR,
- f = e.experimentalLeastPixelDiffSelector,
- m = e.captionServices
- if (!i) throw new Error('A non-empty playlist URL or JSON manifest string is required')
- var g,
- y = e.maxPlaylistRetries
- ;(null !== y && 'undefined' != typeof y) || (y = 1 / 0),
- (Ql = o),
- (t.experimentalBufferBasedABR = Boolean(p)),
- (t.experimentalLeastPixelDiffSelector = Boolean(f)),
- (t.withCredentials = r),
- (t.tech_ = a),
- (t.vhs_ = a.vhs),
- (t.sourceType_ = d),
- (t.useCueTags_ = u),
- (t.blacklistDuration = l),
- (t.maxPlaylistRetries = y),
- (t.enableLowInitialPlaylist = c),
- t.useCueTags_ && ((t.cueTagsTrack_ = t.tech_.addTextTrack('metadata', 'ad-cues')), (t.cueTagsTrack_.inBandMetadataTrackDispatchType = '')),
- (t.requestOptions_ = { withCredentials: r, handleManifestRedirects: n, maxPlaylistRetries: y, timeout: null }),
- t.on('error', t.pauseLoading),
- (t.mediaTypes_ =
- ((g = {}),
- ['AUDIO', 'SUBTITLES', 'CLOSED-CAPTIONS'].forEach(function (e) {
- g[e] = {
- groups: {},
- tracks: {},
- activePlaylistLoader: null,
- activeGroup: Rl,
- activeTrack: Rl,
- getActiveGroup: Rl,
- onGroupChanged: Rl,
- onTrackChanged: Rl,
- lastTrack_: null,
- logger_: Ro('MediaGroups[' + e + ']'),
- }
- }),
- g)),
- (t.mediaSource = new window.MediaSource()),
- (t.handleDurationChange_ = t.handleDurationChange_.bind(ft(t))),
- (t.handleSourceOpen_ = t.handleSourceOpen_.bind(ft(t))),
- (t.handleSourceEnded_ = t.handleSourceEnded_.bind(ft(t))),
- t.mediaSource.addEventListener('durationchange', t.handleDurationChange_),
- t.mediaSource.addEventListener('sourceopen', t.handleSourceOpen_),
- t.mediaSource.addEventListener('sourceended', t.handleSourceEnded_),
- (t.seekable_ = tr.createTimeRanges()),
- (t.hasPlayed_ = !1),
- (t.syncController_ = new hc(e)),
- (t.segmentMetadataTrack_ = a.addRemoteTextTrack({ kind: 'metadata', label: 'segment-metadata' }, !1).track),
- (t.decrypter_ = new fc()),
- (t.sourceUpdater_ = new uc(t.mediaSource)),
- (t.inbandTextTracks_ = {}),
- (t.timelineChangeController_ = new pc())
- h = {
- vhs: t.vhs_,
- parse708captions: e.parse708captions,
- useDtsForTimestampOffset: e.useDtsForTimestampOffset,
- captionServices: m,
- mediaSource: t.mediaSource,
- currentTime: t.tech_.currentTime.bind(t.tech_),
- seekable: function () {
- return t.seekable()
- },
- seeking: function () {
- return t.tech_.seeking()
- },
- duration: function () {
- return t.duration()
- },
- hasPlayed: function () {
- return t.hasPlayed_
- },
- goalBufferLength: function () {
- return t.goalBufferLength()
- },
- bandwidth: s,
- syncController: t.syncController_,
- decrypter: t.decrypter_,
- sourceType: t.sourceType_,
- inbandTextTracks: t.inbandTextTracks_,
- cacheEncryptionKeys: h,
- sourceUpdater: t.sourceUpdater_,
- timelineChangeController: t.timelineChangeController_,
- experimentalExactManifestTimings: e.experimentalExactManifestTimings,
- }
- ;(t.masterPlaylistLoader_ = new ('dash' === t.sourceType_ ? wl : _l)(i, t.vhs_, t.requestOptions_)),
- t.setupMasterPlaylistLoaderListeners_(),
- (t.mainSegmentLoader_ = new Ml(tr.mergeOptions(h, { segmentMetadataTrack: t.segmentMetadataTrack_, loaderType: 'main' }), e)),
- (t.audioSegmentLoader_ = new Ml(tr.mergeOptions(h, { loaderType: 'audio' }), e)),
- (t.subtitleSegmentLoader_ = new cc(tr.mergeOptions(h, { loaderType: 'vtt', featuresNativeTextTracks: t.tech_.featuresNativeTextTracks }), e)),
- t.setupSegmentLoaderListeners_(),
- t.experimentalBufferBasedABR &&
- (t.masterPlaylistLoader_.one('loadedplaylist', function () {
- return t.startABRTimer_()
- }),
- t.tech_.on('pause', function () {
- return t.stopABRTimer_()
- }),
- t.tech_.on('play', function () {
- return t.startABRTimer_()
- })),
- _c.forEach(function (e) {
- t[e + '_'] = function (e) {
- return this.audioSegmentLoader_[e] + this.mainSegmentLoader_[e]
- }.bind(ft(t), e)
- }),
- (t.logger_ = Ro('MPC')),
- (t.triggeredFmp4Usage = !1),
- 'none' === t.tech_.preload()
- ? ((t.loadOnPlay_ = function () {
- ;(t.loadOnPlay_ = null), t.masterPlaylistLoader_.load()
- }),
- t.tech_.one('play', t.loadOnPlay_))
- : t.masterPlaylistLoader_.load(),
- (t.timeToLoadedData__ = -1),
- (t.mainAppendsToLoadedData__ = -1),
- (t.audioAppendsToLoadedData__ = -1)
- e = 'none' === t.tech_.preload() ? 'play' : 'loadstart'
- return (
- t.tech_.one(e, function () {
- var e = Date.now()
- t.tech_.one('loadeddata', function () {
- ;(t.timeToLoadedData__ = Date.now() - e),
- (t.mainAppendsToLoadedData__ = t.mainSegmentLoader_.mediaAppends),
- (t.audioAppendsToLoadedData__ = t.audioSegmentLoader_.mediaAppends)
- })
- }),
- t
- )
- }
- mt(e, v)
- var t = e.prototype
- return (
- (t.mainAppendsToLoadedData_ = function () {
- return this.mainAppendsToLoadedData__
- }),
- (t.audioAppendsToLoadedData_ = function () {
- return this.audioAppendsToLoadedData__
- }),
- (t.appendsToLoadedData_ = function () {
- var e = this.mainAppendsToLoadedData_(),
- t = this.audioAppendsToLoadedData_()
- return -1 === e || -1 === t ? -1 : e + t
- }),
- (t.timeToLoadedData_ = function () {
- return this.timeToLoadedData__
- }),
- (t.checkABR_ = function () {
- var e = this.selectPlaylist()
- e && this.shouldSwitchToMedia_(e) && this.switchMedia_(e, 'abr')
- }),
- (t.switchMedia_ = function (e, t, i) {
- var n = this.media(),
- r = n && (n.id || n.uri),
- n = e.id || e.uri
- r && r !== n && (this.logger_('switch media ' + r + ' -> ' + n + ' from ' + t), this.tech_.trigger({ type: 'usage', name: 'vhs-rendition-change-' + t })),
- this.masterPlaylistLoader_.media(e, i)
- }),
- (t.startABRTimer_ = function () {
- var e = this
- this.stopABRTimer_(),
- (this.abrTimer_ = window.setInterval(function () {
- return e.checkABR_()
- }, 250))
- }),
- (t.stopABRTimer_ = function () {
- ;(this.tech_.scrubbing && this.tech_.scrubbing()) || (window.clearInterval(this.abrTimer_), (this.abrTimer_ = null))
- }),
- (t.getAudioTrackPlaylists_ = function () {
- var e = this.master(),
- t = (e && e.playlists) || []
- if (!e || !e.mediaGroups || !e.mediaGroups.AUDIO) return t
- var i,
- n = e.mediaGroups.AUDIO,
- r = Object.keys(n)
- if (Object.keys(this.mediaTypes_.AUDIO.groups).length) i = this.mediaTypes_.AUDIO.activeTrack()
- else {
- var a,
- s = n.main || (r.length && n[r[0]])
- for (a in s)
- if (s[a].default) {
- i = { label: a }
- break
- }
- }
- if (!i) return t
- var o,
- u = []
- for (o in n)
- if (n[o][i.label]) {
- var l = n[o][i.label]
- if (l.playlists && l.playlists.length) u.push.apply(u, l.playlists)
- else if (l.uri) u.push(l)
- else if (e.playlists.length)
- for (var c = 0; c < e.playlists.length; c++) {
- var d = e.playlists[c]
- d.attributes && d.attributes.AUDIO && d.attributes.AUDIO === o && u.push(d)
- }
- }
- return u.length ? u : t
- }),
- (t.setupMasterPlaylistLoaderListeners_ = function () {
- var i = this
- this.masterPlaylistLoader_.on('loadedmetadata', function () {
- var e = i.masterPlaylistLoader_.media(),
- t = 1.5 * e.targetDuration * 1e3
- iu(i.masterPlaylistLoader_.master, i.masterPlaylistLoader_.media()) ? (i.requestOptions_.timeout = 0) : (i.requestOptions_.timeout = t),
- e.endList && 'none' !== i.tech_.preload() && (i.mainSegmentLoader_.playlist(e, i.requestOptions_), i.mainSegmentLoader_.load()),
- Xl({
- sourceType: i.sourceType_,
- segmentLoaders: { AUDIO: i.audioSegmentLoader_, SUBTITLES: i.subtitleSegmentLoader_, main: i.mainSegmentLoader_ },
- tech: i.tech_,
- requestOptions: i.requestOptions_,
- masterPlaylistLoader: i.masterPlaylistLoader_,
- vhs: i.vhs_,
- master: i.master(),
- mediaTypes: i.mediaTypes_,
- blacklistCurrentPlaylist: i.blacklistCurrentPlaylist.bind(i),
- }),
- i.triggerPresenceUsage_(i.master(), e),
- i.setupFirstPlay(),
- !i.mediaTypes_.AUDIO.activePlaylistLoader || i.mediaTypes_.AUDIO.activePlaylistLoader.media()
- ? i.trigger('selectedinitialmedia')
- : i.mediaTypes_.AUDIO.activePlaylistLoader.one('loadedmetadata', function () {
- i.trigger('selectedinitialmedia')
- })
- }),
- this.masterPlaylistLoader_.on('loadedplaylist', function () {
- i.loadOnPlay_ && i.tech_.off('play', i.loadOnPlay_)
- var e,
- t = i.masterPlaylistLoader_.media()
- if (!t) {
- if ((i.excludeUnsupportedVariants_(), !(e = (e = i.enableLowInitialPlaylist ? i.selectInitialPlaylist() : e) || i.selectPlaylist()) || !i.shouldSwitchToMedia_(e)))
- return
- if (((i.initialMedia_ = e), i.switchMedia_(i.initialMedia_, 'initial'), !('vhs-json' === i.sourceType_ && i.initialMedia_.segments))) return
- t = i.initialMedia_
- }
- i.handleUpdatedMediaPlaylist(t)
- }),
- this.masterPlaylistLoader_.on('error', function () {
- i.blacklistCurrentPlaylist(i.masterPlaylistLoader_.error)
- }),
- this.masterPlaylistLoader_.on('mediachanging', function () {
- i.mainSegmentLoader_.abort(), i.mainSegmentLoader_.pause()
- }),
- this.masterPlaylistLoader_.on('mediachange', function () {
- var e = i.masterPlaylistLoader_.media(),
- t = 1.5 * e.targetDuration * 1e3
- iu(i.masterPlaylistLoader_.master, i.masterPlaylistLoader_.media()) ? (i.requestOptions_.timeout = 0) : (i.requestOptions_.timeout = t),
- i.mainSegmentLoader_.playlist(e, i.requestOptions_),
- i.mainSegmentLoader_.load(),
- i.tech_.trigger({ type: 'mediachange', bubbles: !0 })
- }),
- this.masterPlaylistLoader_.on('playlistunchanged', function () {
- var e = i.masterPlaylistLoader_.media()
- 'playlist-unchanged' !== e.lastExcludeReason_ &&
- i.stuckAtPlaylistEnd_(e) &&
- (i.blacklistCurrentPlaylist({ message: 'Playlist no longer updating.', reason: 'playlist-unchanged' }), i.tech_.trigger('playliststuck'))
- }),
- this.masterPlaylistLoader_.on('renditiondisabled', function () {
- i.tech_.trigger({ type: 'usage', name: 'vhs-rendition-disabled' }), i.tech_.trigger({ type: 'usage', name: 'hls-rendition-disabled' })
- }),
- this.masterPlaylistLoader_.on('renditionenabled', function () {
- i.tech_.trigger({ type: 'usage', name: 'vhs-rendition-enabled' }), i.tech_.trigger({ type: 'usage', name: 'hls-rendition-enabled' })
- })
- }),
- (t.handleUpdatedMediaPlaylist = function (e) {
- this.useCueTags_ && this.updateAdCues_(e),
- this.mainSegmentLoader_.playlist(e, this.requestOptions_),
- this.updateDuration(!e.endList),
- this.tech_.paused() || (this.mainSegmentLoader_.load(), this.audioSegmentLoader_ && this.audioSegmentLoader_.load())
- }),
- (t.triggerPresenceUsage_ = function (e, t) {
- var i,
- n = e.mediaGroups || {},
- r = !0,
- e = Object.keys(n.AUDIO)
- for (i in n.AUDIO) for (var a in n.AUDIO[i]) n.AUDIO[i][a].uri || (r = !1)
- r && (this.tech_.trigger({ type: 'usage', name: 'vhs-demuxed' }), this.tech_.trigger({ type: 'usage', name: 'hls-demuxed' })),
- Object.keys(n.SUBTITLES).length && (this.tech_.trigger({ type: 'usage', name: 'vhs-webvtt' }), this.tech_.trigger({ type: 'usage', name: 'hls-webvtt' })),
- Ql.Playlist.isAes(t) && (this.tech_.trigger({ type: 'usage', name: 'vhs-aes' }), this.tech_.trigger({ type: 'usage', name: 'hls-aes' })),
- e.length &&
- 1 < Object.keys(n.AUDIO[e[0]]).length &&
- (this.tech_.trigger({ type: 'usage', name: 'vhs-alternate-audio' }), this.tech_.trigger({ type: 'usage', name: 'hls-alternate-audio' })),
- this.useCueTags_ && (this.tech_.trigger({ type: 'usage', name: 'vhs-playlist-cue-tags' }), this.tech_.trigger({ type: 'usage', name: 'hls-playlist-cue-tags' }))
- }),
- (t.shouldSwitchToMedia_ = function (e) {
- var t = this.masterPlaylistLoader_.media() || this.masterPlaylistLoader_.pendingMedia_,
- i = this.tech_.currentTime(),
- n = this.bufferLowWaterLine(),
- r = this.bufferHighWaterLine()
- return (function (e) {
- var t = e.currentPlaylist,
- i = e.buffered,
- n = e.currentTime,
- r = e.nextPlaylist,
- a = e.bufferLowWaterLine,
- s = e.bufferHighWaterLine,
- o = e.duration,
- u = e.experimentalBufferBasedABR,
- l = e.log
- if (!r) return tr.log.warn('We received no playlist to switch to. Please check your stream.'), !1
- var c = 'allowing switch ' + ((t && t.id) || 'null') + ' -> ' + r.id
- if (!t) return l(c + ' as current playlist is not set'), !0
- if (r.id === t.id) return !1
- e = Boolean(Uo(i, n).length)
- if (!t.endList)
- return e || 'number' != typeof t.partTargetDuration
- ? (l(c + ' as current playlist is live'), !0)
- : (l('not ' + c + " as current playlist is live llhls, but currentTime isn't in buffered."), !1)
- ;(i = qo(i, n)), (n = u ? El.EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE : El.MAX_BUFFER_LOW_WATER_LINE)
- if (o < n) return l(c + ' as duration < max low water line (' + o + ' < ' + n + ')'), !0
- ;(n = r.attributes.BANDWIDTH), (r = t.attributes.BANDWIDTH)
- if (n < r && (!u || i < s)) {
- t = c + ' as next bandwidth < current bandwidth (' + n + ' < ' + r + ')'
- return u && (t += ' and forwardBuffer < bufferHighWaterLine (' + i + ' < ' + s + ')'), l(t), !0
- }
- if ((!u || r < n) && a <= i) {
- a = c + ' as forwardBuffer >= bufferLowWaterLine (' + i + ' >= ' + a + ')'
- return u && (a += ' and next bandwidth > current bandwidth (' + n + ' > ' + r + ')'), l(a), !0
- }
- return l('not ' + c + ' as no switching criteria met'), !1
- })({
- buffered: this.tech_.buffered(),
- currentTime: i,
- currentPlaylist: t,
- nextPlaylist: e,
- bufferLowWaterLine: n,
- bufferHighWaterLine: r,
- duration: this.duration(),
- experimentalBufferBasedABR: this.experimentalBufferBasedABR,
- log: this.logger_,
- })
- }),
- (t.setupSegmentLoaderListeners_ = function () {
- var t = this
- this.experimentalBufferBasedABR ||
- (this.mainSegmentLoader_.on('bandwidthupdate', function () {
- var e = t.selectPlaylist()
- t.shouldSwitchToMedia_(e) && t.switchMedia_(e, 'bandwidthupdate'), t.tech_.trigger('bandwidthupdate')
- }),
- this.mainSegmentLoader_.on('progress', function () {
- t.trigger('progress')
- })),
- this.mainSegmentLoader_.on('error', function () {
- t.blacklistCurrentPlaylist(t.mainSegmentLoader_.error())
- }),
- this.mainSegmentLoader_.on('appenderror', function () {
- ;(t.error = t.mainSegmentLoader_.error_), t.trigger('error')
- }),
- this.mainSegmentLoader_.on('syncinfoupdate', function () {
- t.onSyncInfoUpdate_()
- }),
- this.mainSegmentLoader_.on('timestampoffset', function () {
- t.tech_.trigger({ type: 'usage', name: 'vhs-timestamp-offset' }), t.tech_.trigger({ type: 'usage', name: 'hls-timestamp-offset' })
- }),
- this.audioSegmentLoader_.on('syncinfoupdate', function () {
- t.onSyncInfoUpdate_()
- }),
- this.audioSegmentLoader_.on('appenderror', function () {
- ;(t.error = t.audioSegmentLoader_.error_), t.trigger('error')
- }),
- this.mainSegmentLoader_.on('ended', function () {
- t.logger_('main segment loader ended'), t.onEndOfStream()
- }),
- this.mainSegmentLoader_.on('earlyabort', function (e) {
- t.experimentalBufferBasedABR ||
- (t.delegateLoaders_('all', ['abort']),
- t.blacklistCurrentPlaylist({ message: "Aborted early because there isn't enough bandwidth to complete the request without rebuffering." }, 120))
- })
- function e() {
- if (!t.sourceUpdater_.hasCreatedSourceBuffers()) return t.tryToCreateSourceBuffers_()
- var e = t.getCodecsOrExclude_()
- e && t.sourceUpdater_.addOrChangeSourceBuffers(e)
- }
- this.mainSegmentLoader_.on('trackinfo', e),
- this.audioSegmentLoader_.on('trackinfo', e),
- this.mainSegmentLoader_.on('fmp4', function () {
- t.triggeredFmp4Usage || (t.tech_.trigger({ type: 'usage', name: 'vhs-fmp4' }), t.tech_.trigger({ type: 'usage', name: 'hls-fmp4' }), (t.triggeredFmp4Usage = !0))
- }),
- this.audioSegmentLoader_.on('fmp4', function () {
- t.triggeredFmp4Usage || (t.tech_.trigger({ type: 'usage', name: 'vhs-fmp4' }), t.tech_.trigger({ type: 'usage', name: 'hls-fmp4' }), (t.triggeredFmp4Usage = !0))
- }),
- this.audioSegmentLoader_.on('ended', function () {
- t.logger_('audioSegmentLoader ended'), t.onEndOfStream()
- })
- }),
- (t.mediaSecondsLoaded_ = function () {
- return Math.max(this.audioSegmentLoader_.mediaSecondsLoaded + this.mainSegmentLoader_.mediaSecondsLoaded)
- }),
- (t.load = function () {
- this.mainSegmentLoader_.load(),
- this.mediaTypes_.AUDIO.activePlaylistLoader && this.audioSegmentLoader_.load(),
- this.mediaTypes_.SUBTITLES.activePlaylistLoader && this.subtitleSegmentLoader_.load()
- }),
- (t.smoothQualityChange_ = function (e) {
- void 0 === e && (e = this.selectPlaylist()), this.fastQualityChange_(e)
- }),
- (t.fastQualityChange_ = function (e) {
- var t = this
- ;(e = void 0 === e ? this.selectPlaylist() : e) !== this.masterPlaylistLoader_.media()
- ? (this.switchMedia_(e, 'fast-quality'),
- this.mainSegmentLoader_.resetEverything(function () {
- tr.browser.IE_VERSION || tr.browser.IS_EDGE ? t.tech_.setCurrentTime(t.tech_.currentTime() + 0.04) : t.tech_.setCurrentTime(t.tech_.currentTime())
- }))
- : this.logger_('skipping fastQualityChange because new media is same as old')
- }),
- (t.play = function () {
- if (!this.setupFirstPlay()) {
- this.tech_.ended() && this.tech_.setCurrentTime(0), this.hasPlayed_ && this.load()
- var e = this.tech_.seekable()
- return this.tech_.duration() === 1 / 0 && this.tech_.currentTime() < e.start(0) ? this.tech_.setCurrentTime(e.end(e.length - 1)) : void 0
- }
- }),
- (t.setupFirstPlay = function () {
- var e = this,
- t = this.masterPlaylistLoader_.media()
- if (!t || this.tech_.paused() || this.hasPlayed_) return !1
- if (!t.endList) {
- var i = this.seekable()
- if (!i.length) return !1
- if (tr.browser.IE_VERSION && 0 === this.tech_.readyState())
- return (
- this.tech_.one('loadedmetadata', function () {
- e.trigger('firstplay'), e.tech_.setCurrentTime(i.end(0)), (e.hasPlayed_ = !0)
- }),
- !1
- )
- this.trigger('firstplay'), this.tech_.setCurrentTime(i.end(0))
- }
- return (this.hasPlayed_ = !0), this.load(), !0
- }),
- (t.handleSourceOpen_ = function () {
- var e
- this.tryToCreateSourceBuffers_(),
- !this.tech_.autoplay() || ('undefined' != typeof (e = this.tech_.play()) && 'function' == typeof e.then && e.then(null, function (e) {})),
- this.trigger('sourceopen')
- }),
- (t.handleSourceEnded_ = function () {
- var e, t
- !this.inbandTextTracks_.metadataTrack_ ||
- ((e = this.inbandTextTracks_.metadataTrack_.cues) && e.length && ((t = this.duration()), (e[e.length - 1].endTime = isNaN(t) || Math.abs(t) === 1 / 0 ? Number.MAX_VALUE : t)))
- }),
- (t.handleDurationChange_ = function () {
- this.tech_.trigger('durationchange')
- }),
- (t.onEndOfStream = function () {
- var e,
- t = this.mainSegmentLoader_.ended_
- ;(t = this.mediaTypes_.AUDIO.activePlaylistLoader ? (((e = this.mainSegmentLoader_.getCurrentMediaInfo_()) && !e.hasVideo) || t) && this.audioSegmentLoader_.ended_ : t) &&
- (this.stopABRTimer_(), this.sourceUpdater_.endOfStream())
- }),
- (t.stuckAtPlaylistEnd_ = function (e) {
- if (!this.seekable().length) return !1
- var t = this.syncController_.getExpiredTime(e, this.duration())
- if (null === t) return !1
- var i = Ql.Playlist.playlistEnd(e, t),
- e = this.tech_.currentTime(),
- t = this.tech_.buffered()
- if (!t.length) return i - e <= 0.1
- t = t.end(t.length - 1)
- return t - e <= 0.1 && i - t <= 0.1
- }),
- (t.blacklistCurrentPlaylist = function (e, t) {
- var i = (e = void 0 === e ? {} : e).playlist || this.masterPlaylistLoader_.media()
- if (((t = t || e.blacklistDuration || this.blacklistDuration), !i))
- return (this.error = e), void ('open' !== this.mediaSource.readyState ? this.trigger('error') : this.sourceUpdater_.endOfStream('network'))
- i.playlistErrors_++
- var n,
- r = this.masterPlaylistLoader_.master.playlists,
- a = r.filter(eu),
- s = 1 === a.length && a[0] === i
- if (1 === r.length && t !== 1 / 0)
- return (
- tr.log.warn('Problem encountered with playlist ' + i.id + '. Trying again since it is the only playlist.'),
- this.tech_.trigger('retryplaylist'),
- this.masterPlaylistLoader_.load(s)
- )
- s &&
- ((n = !1),
- r.forEach(function (e) {
- var t
- e === i || ('undefined' != typeof (t = e.excludeUntil) && t !== 1 / 0 && ((n = !0), delete e.excludeUntil))
- }),
- n && (tr.log.warn('Removing other playlists from the exclusion list because the last rendition is about to be excluded.'), this.tech_.trigger('retryplaylist'))),
- (a = i.playlistErrors_ > this.maxPlaylistRetries ? 1 / 0 : Date.now() + 1e3 * t),
- (i.excludeUntil = a),
- e.reason && (i.lastExcludeReason_ = e.reason),
- this.tech_.trigger('blacklistplaylist'),
- this.tech_.trigger({ type: 'usage', name: 'vhs-rendition-blacklisted' }),
- this.tech_.trigger({ type: 'usage', name: 'hls-rendition-blacklisted' })
- r = this.selectPlaylist()
- if (!r) return (this.error = 'Playback cannot continue. No available working or supported playlists.'), void this.trigger('error')
- ;(t = e.internal ? this.logger_ : tr.log.warn), (a = e.message ? ' ' + e.message : '')
- t((e.internal ? 'Internal problem' : 'Problem') + ' encountered with playlist ' + i.id + '.' + a + ' Switching to playlist ' + r.id + '.'),
- r.attributes.AUDIO !== i.attributes.AUDIO && this.delegateLoaders_('audio', ['abort', 'pause']),
- r.attributes.SUBTITLES !== i.attributes.SUBTITLES && this.delegateLoaders_('subtitle', ['abort', 'pause']),
- this.delegateLoaders_('main', ['abort', 'pause'])
- ;(a = (r.targetDuration / 2) * 1e3 || 5e3), (a = 'number' == typeof r.lastRequest && Date.now() - r.lastRequest <= a)
- return this.switchMedia_(r, 'exclude', s || a)
- }),
- (t.pauseLoading = function () {
- this.delegateLoaders_('all', ['abort', 'pause']), this.stopABRTimer_()
- }),
- (t.delegateLoaders_ = function (i, e) {
- var n = this,
- r = [],
- t = 'all' === i
- ;(!t && 'main' !== i) || r.push(this.masterPlaylistLoader_)
- var a = []
- ;(!t && 'audio' !== i) || a.push('AUDIO'),
- (!t && 'subtitle' !== i) || (a.push('CLOSED-CAPTIONS'), a.push('SUBTITLES')),
- a.forEach(function (e) {
- e = n.mediaTypes_[e] && n.mediaTypes_[e].activePlaylistLoader
- e && r.push(e)
- }),
- ['main', 'audio', 'subtitle'].forEach(function (e) {
- var t = n[e + 'SegmentLoader_']
- !t || (i !== e && 'all' !== i) || r.push(t)
- }),
- r.forEach(function (t) {
- return e.forEach(function (e) {
- 'function' == typeof t[e] && t[e]()
- })
- })
- }),
- (t.setCurrentTime = function (e) {
- var t = Uo(this.tech_.buffered(), e)
- return this.masterPlaylistLoader_ && this.masterPlaylistLoader_.media() && this.masterPlaylistLoader_.media().segments
- ? t && t.length
- ? e
- : (this.mainSegmentLoader_.resetEverything(),
- this.mainSegmentLoader_.abort(),
- this.mediaTypes_.AUDIO.activePlaylistLoader && (this.audioSegmentLoader_.resetEverything(), this.audioSegmentLoader_.abort()),
- this.mediaTypes_.SUBTITLES.activePlaylistLoader && (this.subtitleSegmentLoader_.resetEverything(), this.subtitleSegmentLoader_.abort()),
- void this.load())
- : 0
- }),
- (t.duration = function () {
- if (!this.masterPlaylistLoader_) return 0
- var e = this.masterPlaylistLoader_.media()
- return e ? (e.endList ? (this.mediaSource ? this.mediaSource.duration : Ql.Playlist.duration(e)) : 1 / 0) : 0
- }),
- (t.seekable = function () {
- return this.seekable_
- }),
- (t.onSyncInfoUpdate_ = function () {
- var e
- if (this.masterPlaylistLoader_) {
- var t = this.masterPlaylistLoader_.media()
- if (t) {
- var i = this.syncController_.getExpiredTime(t, this.duration())
- if (null !== i) {
- var n,
- r,
- a = this.masterPlaylistLoader_.master,
- s = Ql.Playlist.seekable(t, i, Ql.Playlist.liveEdgeDelay(a, t))
- if (0 !== s.length) {
- if (this.mediaTypes_.AUDIO.activePlaylistLoader) {
- if (((t = this.mediaTypes_.AUDIO.activePlaylistLoader.media()), null === (i = this.syncController_.getExpiredTime(t, this.duration())))) return
- if (0 === (e = Ql.Playlist.seekable(t, i, Ql.Playlist.liveEdgeDelay(a, t))).length) return
- }
- this.seekable_ && this.seekable_.length && ((n = this.seekable_.end(0)), (r = this.seekable_.start(0))),
- !e || e.start(0) > s.end(0) || s.start(0) > e.end(0)
- ? (this.seekable_ = s)
- : (this.seekable_ = tr.createTimeRanges([[(e.start(0) > s.start(0) ? e : s).start(0), (e.end(0) < s.end(0) ? e : s).end(0)]])),
- (this.seekable_ && this.seekable_.length && this.seekable_.end(0) === n && this.seekable_.start(0) === r) ||
- (this.logger_('seekable updated [' + Fo(this.seekable_) + ']'), this.tech_.trigger('seekablechanged'))
- }
- }
- }
- }
- }),
- (t.updateDuration = function (e) {
- if ((this.updateDuration_ && (this.mediaSource.removeEventListener('sourceopen', this.updateDuration_), (this.updateDuration_ = null)), 'open' !== this.mediaSource.readyState))
- return (this.updateDuration_ = this.updateDuration.bind(this, e)), void this.mediaSource.addEventListener('sourceopen', this.updateDuration_)
- if (e) {
- var t = this.seekable()
- return t.length ? void ((isNaN(this.mediaSource.duration) || this.mediaSource.duration < t.end(t.length - 1)) && this.sourceUpdater_.setDuration(t.end(t.length - 1))) : void 0
- }
- ;(e = this.tech_.buffered()), (t = Ql.Playlist.duration(this.masterPlaylistLoader_.media()))
- 0 < e.length && (t = Math.max(t, e.end(e.length - 1))), this.mediaSource.duration !== t && this.sourceUpdater_.setDuration(t)
- }),
- (t.dispose = function () {
- var n = this
- this.trigger('dispose'),
- this.decrypter_.terminate(),
- this.masterPlaylistLoader_.dispose(),
- this.mainSegmentLoader_.dispose(),
- this.loadOnPlay_ && this.tech_.off('play', this.loadOnPlay_),
- ['AUDIO', 'SUBTITLES'].forEach(function (e) {
- var t,
- i = n.mediaTypes_[e].groups
- for (t in i)
- i[t].forEach(function (e) {
- e.playlistLoader && e.playlistLoader.dispose()
- })
- }),
- this.audioSegmentLoader_.dispose(),
- this.subtitleSegmentLoader_.dispose(),
- this.sourceUpdater_.dispose(),
- this.timelineChangeController_.dispose(),
- this.stopABRTimer_(),
- this.updateDuration_ && this.mediaSource.removeEventListener('sourceopen', this.updateDuration_),
- this.mediaSource.removeEventListener('durationchange', this.handleDurationChange_),
- this.mediaSource.removeEventListener('sourceopen', this.handleSourceOpen_),
- this.mediaSource.removeEventListener('sourceended', this.handleSourceEnded_),
- this.off()
- }),
- (t.master = function () {
- return this.masterPlaylistLoader_.master
- }),
- (t.media = function () {
- return this.masterPlaylistLoader_.media() || this.initialMedia_
- }),
- (t.areMediaTypesKnown_ = function () {
- var e = !!this.mediaTypes_.AUDIO.activePlaylistLoader,
- t = !!this.mainSegmentLoader_.getCurrentMediaInfo_(),
- e = !e || !!this.audioSegmentLoader_.getCurrentMediaInfo_()
- return t && e
- }),
- (t.getCodecsOrExclude_ = function () {
- var n = this,
- r = { main: this.mainSegmentLoader_.getCurrentMediaInfo_() || {}, audio: this.audioSegmentLoader_.getCurrentMediaInfo_() || {} }
- r.video = r.main
- var e = $u(this.master(), this.media()),
- a = {},
- t = !!this.mediaTypes_.AUDIO.activePlaylistLoader
- if (
- (r.main.hasVideo && (a.video = e.video || r.main.videoCodec || 'avc1.4d400d'),
- r.main.isMuxed && (a.video += ',' + (e.audio || r.main.audioCodec || Lr)),
- ((r.main.hasAudio && !r.main.isMuxed) || r.audio.hasAudio || t) &&
- ((a.audio = e.audio || r.main.audioCodec || r.audio.audioCodec || Lr), (r.audio.isFmp4 = (r.main.hasAudio && !r.main.isMuxed ? r.main : r.audio).isFmp4)),
- a.audio || a.video)
- ) {
- var s,
- i,
- o = {}
- if (
- (['video', 'audio'].forEach(function (e) {
- var t, i
- a.hasOwnProperty(e) &&
- ((t = r[e].isFmp4), (i = a[e]), !(t ? gr : yr)(i)) &&
- ((i = r[e].isFmp4 ? 'browser' : 'muxer'), (o[i] = o[i] || []), o[i].push(a[e]), 'audio' === e && (s = i))
- }),
- t &&
- s &&
- this.media().attributes.AUDIO &&
- ((i = this.media().attributes.AUDIO),
- this.master().playlists.forEach(function (e) {
- ;(e.attributes && e.attributes.AUDIO) === i && e !== n.media() && (e.excludeUntil = 1 / 0)
- }),
- this.logger_('excluding audio group ' + i + ' as ' + s + ' does not support codec(s): "' + a.audio + '"')),
- !Object.keys(o).length)
- ) {
- if (this.sourceUpdater_.hasCreatedSourceBuffers() && !this.sourceUpdater_.canChangeType()) {
- var u = []
- if (
- (['video', 'audio'].forEach(function (e) {
- var t = (pr(n.sourceUpdater_.codecs[e] || '')[0] || {}).type,
- i = (pr(a[e] || '')[0] || {}).type
- t && i && t.toLowerCase() !== i.toLowerCase() && u.push('"' + n.sourceUpdater_.codecs[e] + '" -> "' + a[e] + '"')
- }),
- u.length)
- )
- return void this.blacklistCurrentPlaylist({
- playlist: this.media(),
- message: 'Codec switching not supported: ' + u.join(', ') + '.',
- blacklistDuration: 1 / 0,
- internal: !0,
- })
- }
- return a
- }
- t =
- Object.keys(o).reduce(function (e, t) {
- return e && (e += ', '), (e += t + ' does not support codec(s): "' + o[t].join(',') + '"')
- }, '') + '.'
- this.blacklistCurrentPlaylist({ playlist: this.media(), internal: !0, message: t, blacklistDuration: 1 / 0 })
- } else this.blacklistCurrentPlaylist({ playlist: this.media(), message: 'Could not determine codecs for playlist.', blacklistDuration: 1 / 0 })
- }),
- (t.tryToCreateSourceBuffers_ = function () {
- var e
- 'open' !== this.mediaSource.readyState ||
- this.sourceUpdater_.hasCreatedSourceBuffers() ||
- !this.areMediaTypesKnown_() ||
- ((e = this.getCodecsOrExclude_()) && (this.sourceUpdater_.createSourceBuffers(e), (e = [e.video, e.audio].filter(Boolean).join(',')), this.excludeIncompatibleVariants_(e)))
- }),
- (t.excludeUnsupportedVariants_ = function () {
- var n = this,
- r = this.master().playlists,
- a = []
- Object.keys(r).forEach(function (e) {
- var t,
- i = r[e]
- ;-1 === a.indexOf(i.id) &&
- (a.push(i.id),
- (t = []),
- !(e = $u(n.master, i)).audio || yr(e.audio) || gr(e.audio) || t.push('audio codec ' + e.audio),
- !e.video || yr(e.video) || gr(e.video) || t.push('video codec ' + e.video),
- e.text && 'stpp.ttml.im1t' === e.text && t.push('text codec ' + e.text),
- t.length && ((i.excludeUntil = 1 / 0), n.logger_('excluding ' + i.id + ' for unsupported: ' + t.join(', '))))
- })
- }),
- (t.excludeIncompatibleVariants_ = function (e) {
- var r = this,
- a = [],
- s = this.master().playlists,
- e = Yu(pr(e)),
- o = Qu(e),
- u = (e.video && pr(e.video)[0]) || null,
- l = (e.audio && pr(e.audio)[0]) || null
- Object.keys(s).forEach(function (e) {
- var t,
- i,
- n = s[e]
- ;-1 === a.indexOf(n.id) &&
- n.excludeUntil !== 1 / 0 &&
- (a.push(n.id),
- (t = []),
- (i = $u(r.masterPlaylistLoader_.master, n)),
- (e = Qu(i)),
- (i.audio || i.video) &&
- (e !== o && t.push('codec count "' + e + '" !== "' + o + '"'),
- r.sourceUpdater_.canChangeType() ||
- ((e = (i.video && pr(i.video)[0]) || null),
- (i = (i.audio && pr(i.audio)[0]) || null),
- e && u && e.type.toLowerCase() !== u.type.toLowerCase() && t.push('video codec "' + e.type + '" !== "' + u.type + '"'),
- i && l && i.type.toLowerCase() !== l.type.toLowerCase() && t.push('audio codec "' + i.type + '" !== "' + l.type + '"')),
- t.length && ((n.excludeUntil = 1 / 0), r.logger_('blacklisting ' + n.id + ': ' + t.join(' && ')))))
- })
- }),
- (t.updateAdCues_ = function (e) {
- var t = 0,
- i = this.seekable()
- i.length && (t = i.start(0)),
- (function (e, t, i) {
- if ((void 0 === i && (i = 0), e.segments))
- for (var n = i, r = 0; r < e.segments.length; r++) {
- var a,
- s,
- o,
- u = e.segments[r]
- if (
- (o =
- o ||
- (function (e, t) {
- for (var i = e.cues, n = 0; n < i.length; n++) {
- var r = i[n]
- if (t >= r.adStartTime && t <= r.adEndTime) return r
- }
- return null
- })(t, n + u.duration / 2))
- ) {
- if ('cueIn' in u) {
- ;(o.endTime = n), (o.adEndTime = n), (n += u.duration), (o = null)
- continue
- }
- if (n < o.endTime) {
- n += u.duration
- continue
- }
- o.endTime += u.duration
- } else
- 'cueOut' in u && (((o = new window.VTTCue(n, n + u.duration, u.cueOut)).adStartTime = n), (o.adEndTime = n + parseFloat(u.cueOut)), t.addCue(o)),
- 'cueOutCont' in u &&
- ((a = (s = u.cueOutCont.split('/').map(parseFloat))[0]),
- (s = s[1]),
- ((o = new window.VTTCue(n, n + u.duration, '')).adStartTime = n - a),
- (o.adEndTime = o.adStartTime + s),
- t.addCue(o))
- n += u.duration
- }
- })(e, this.cueTagsTrack_, t)
- }),
- (t.goalBufferLength = function () {
- var e = this.tech_.currentTime(),
- t = El.GOAL_BUFFER_LENGTH,
- i = El.GOAL_BUFFER_LENGTH_RATE,
- n = Math.max(t, El.MAX_GOAL_BUFFER_LENGTH)
- return Math.min(t + e * i, n)
- }),
- (t.bufferLowWaterLine = function () {
- var e = this.tech_.currentTime(),
- t = El.BUFFER_LOW_WATER_LINE,
- i = El.BUFFER_LOW_WATER_LINE_RATE,
- n = Math.max(t, El.MAX_BUFFER_LOW_WATER_LINE),
- r = Math.max(t, El.EXPERIMENTAL_MAX_BUFFER_LOW_WATER_LINE)
- return Math.min(t + e * i, this.experimentalBufferBasedABR ? r : n)
- }),
- (t.bufferHighWaterLine = function () {
- return El.BUFFER_HIGH_WATER_LINE
- }),
- e
- )
- })(tr.EventTarget),
- Tc = ['seeking', 'seeked', 'pause', 'playing', 'error'],
- Sc = (function () {
- function e(e) {
- var i = this
- ;(this.masterPlaylistController_ = e.masterPlaylistController),
- (this.tech_ = e.tech),
- (this.seekable = e.seekable),
- (this.allowSeeksWithinUnsafeLiveWindow = e.allowSeeksWithinUnsafeLiveWindow),
- (this.liveRangeSafeTimeDelta = e.liveRangeSafeTimeDelta),
- (this.media = e.media),
- (this.consecutiveUpdates = 0),
- (this.lastRecordedTime = null),
- (this.timer_ = null),
- (this.checkCurrentTimeTimeout_ = null),
- (this.logger_ = Ro('PlaybackWatcher')),
- this.logger_('initialize')
- function t() {
- return i.monitorCurrentTime_()
- }
- function n() {
- return i.monitorCurrentTime_()
- }
- function r() {
- return i.techWaiting_()
- }
- function a() {
- return i.cancelTimer_()
- }
- var s = this.masterPlaylistController_,
- o = ['main', 'subtitle', 'audio'],
- u = {}
- o.forEach(function (e) {
- ;(u[e] = {
- reset: function () {
- return i.resetSegmentDownloads_(e)
- },
- updateend: function () {
- return i.checkSegmentDownloads_(e)
- },
- }),
- s[e + 'SegmentLoader_'].on('appendsdone', u[e].updateend),
- s[e + 'SegmentLoader_'].on('playlistupdate', u[e].reset),
- i.tech_.on(['seeked', 'seeking'], u[e].reset)
- })
- function l(t) {
- ;['main', 'audio'].forEach(function (e) {
- s[e + 'SegmentLoader_'][t]('appended', i.seekingAppendCheck_)
- })
- }
- ;(this.seekingAppendCheck_ = function () {
- i.fixesBadSeeks_() && ((i.consecutiveUpdates = 0), (i.lastRecordedTime = i.tech_.currentTime()), l('off'))
- }),
- (this.clearSeekingAppendCheck_ = function () {
- return l('off')
- }),
- (this.watchForBadSeeking_ = function () {
- i.clearSeekingAppendCheck_(), l('on')
- }),
- this.tech_.on('seeked', this.clearSeekingAppendCheck_),
- this.tech_.on('seeking', this.watchForBadSeeking_),
- this.tech_.on('waiting', r),
- this.tech_.on(Tc, a),
- this.tech_.on('canplay', n),
- this.tech_.one('play', t),
- (this.dispose = function () {
- i.clearSeekingAppendCheck_(),
- i.logger_('dispose'),
- i.tech_.off('waiting', r),
- i.tech_.off(Tc, a),
- i.tech_.off('canplay', n),
- i.tech_.off('play', t),
- i.tech_.off('seeking', i.watchForBadSeeking_),
- i.tech_.off('seeked', i.clearSeekingAppendCheck_),
- o.forEach(function (e) {
- s[e + 'SegmentLoader_'].off('appendsdone', u[e].updateend), s[e + 'SegmentLoader_'].off('playlistupdate', u[e].reset), i.tech_.off(['seeked', 'seeking'], u[e].reset)
- }),
- i.checkCurrentTimeTimeout_ && window.clearTimeout(i.checkCurrentTimeTimeout_),
- i.cancelTimer_()
- })
- }
- var t = e.prototype
- return (
- (t.monitorCurrentTime_ = function () {
- this.checkCurrentTime_(),
- this.checkCurrentTimeTimeout_ && window.clearTimeout(this.checkCurrentTimeTimeout_),
- (this.checkCurrentTimeTimeout_ = window.setTimeout(this.monitorCurrentTime_.bind(this), 250))
- }),
- (t.resetSegmentDownloads_ = function (e) {
- var t = this.masterPlaylistController_[e + 'SegmentLoader_']
- 0 < this[e + 'StalledDownloads_'] && this.logger_('resetting possible stalled download count for ' + e + ' loader'),
- (this[e + 'StalledDownloads_'] = 0),
- (this[e + 'Buffered_'] = t.buffered_())
- }),
- (t.checkSegmentDownloads_ = function (e) {
- var t = this.masterPlaylistController_,
- i = t[e + 'SegmentLoader_'],
- n = i.buffered_(),
- r = (function (e, t) {
- if (e === t) return !1
- if ((!e && t) || (!t && e)) return !0
- if (e.length !== t.length) return !0
- for (var i = 0; i < e.length; i++) if (e.start(i) !== t.start(i) || e.end(i) !== t.end(i)) return !0
- return !1
- })(this[e + 'Buffered_'], n)
- ;(this[e + 'Buffered_'] = n),
- r
- ? this.resetSegmentDownloads_(e)
- : (this[e + 'StalledDownloads_']++,
- this.logger_('found #' + this[e + 'StalledDownloads_'] + ' ' + e + ' appends that did not increase buffer (possible stalled download)', {
- playlistId: i.playlist_ && i.playlist_.id,
- buffered: jo(n),
- }),
- this[e + 'StalledDownloads_'] < 10 ||
- (this.logger_(e + ' loader stalled download exclusion'),
- this.resetSegmentDownloads_(e),
- this.tech_.trigger({ type: 'usage', name: 'vhs-' + e + '-download-exclusion' }),
- 'subtitle' !== e && t.blacklistCurrentPlaylist({ message: 'Excessive ' + e + ' segment downloading detected.' }, 1 / 0)))
- }),
- (t.checkCurrentTime_ = function () {
- if (!this.tech_.paused() && !this.tech_.seeking()) {
- var e = this.tech_.currentTime(),
- t = this.tech_.buffered()
- if (this.lastRecordedTime === e && (!t.length || e + 0.1 >= t.end(t.length - 1))) return this.techWaiting_()
- 5 <= this.consecutiveUpdates && e === this.lastRecordedTime
- ? (this.consecutiveUpdates++, this.waiting_())
- : e === this.lastRecordedTime
- ? this.consecutiveUpdates++
- : ((this.consecutiveUpdates = 0), (this.lastRecordedTime = e))
- }
- }),
- (t.cancelTimer_ = function () {
- ;(this.consecutiveUpdates = 0), this.timer_ && (this.logger_('cancelTimer_'), clearTimeout(this.timer_)), (this.timer_ = null)
- }),
- (t.fixesBadSeeks_ = function () {
- if (!this.tech_.seeking()) return !1
- var e,
- t = this.seekable(),
- i = this.tech_.currentTime()
- if (
- (this.afterSeekableWindow_(t, i, this.media(), this.allowSeeksWithinUnsafeLiveWindow) && (e = t.end(t.length - 1)),
- 'undefined' != typeof (e = this.beforeSeekableWindow_(t, i) ? (a = t.start(0)) + (a === t.end(0) ? 0 : 0.1) : e))
- )
- return this.logger_('Trying to seek outside of seekable at time ' + i + ' with seekable range ' + Fo(t) + '. Seeking to ' + e + '.'), this.tech_.setCurrentTime(e), !0
- for (
- var n = this.masterPlaylistController_.sourceUpdater_,
- r = this.tech_.buffered(),
- a = n.audioBuffer ? n.audioBuffered() : null,
- t = n.videoBuffer ? n.videoBuffered() : null,
- n = this.media(),
- s = n.partTargetDuration || 2 * (n.targetDuration - fl),
- o = [a, t],
- u = 0;
- u < o.length;
- u++
- )
- if (o[u]) if (qo(o[u], i) < s) return !1
- r = Bo(r, i)
- return (
- 0 !== r.length &&
- ((e = r.start(0) + 0.1),
- this.logger_('Buffered region starts (' + r.start(0) + ') just beyond seek point (' + i + '). Seeking to ' + e + '.'),
- this.tech_.setCurrentTime(e),
- !0)
- )
- }),
- (t.waiting_ = function () {
- var e, t
- this.techWaiting_() ||
- ((e = this.tech_.currentTime()),
- (t = this.tech_.buffered()),
- (t = Uo(t, e)).length &&
- e + 3 <= t.end(0) &&
- (this.cancelTimer_(),
- this.tech_.setCurrentTime(e),
- this.logger_('Stopped at ' + e + ' while inside a buffered region [' + t.start(0) + ' -> ' + t.end(0) + ']. Attempting to resume playback by seeking to the current time.'),
- this.tech_.trigger({ type: 'usage', name: 'vhs-unknown-waiting' }),
- this.tech_.trigger({ type: 'usage', name: 'hls-unknown-waiting' })))
- }),
- (t.techWaiting_ = function () {
- var e = this.seekable(),
- t = this.tech_.currentTime()
- if (this.tech_.seeking() || null !== this.timer_) return !0
- if (this.beforeSeekableWindow_(e, t)) {
- var i = e.end(e.length - 1)
- return (
- this.logger_('Fell out of live window at time ' + t + '. Seeking to live point (seekable end) ' + i),
- this.cancelTimer_(),
- this.tech_.setCurrentTime(i),
- this.tech_.trigger({ type: 'usage', name: 'vhs-live-resync' }),
- this.tech_.trigger({ type: 'usage', name: 'hls-live-resync' }),
- !0
- )
- }
- ;(e = this.tech_.vhs.masterPlaylistController_.sourceUpdater_), (i = this.tech_.buffered())
- if (this.videoUnderflow_({ audioBuffered: e.audioBuffered(), videoBuffered: e.videoBuffered(), currentTime: t }))
- return (
- this.cancelTimer_(),
- this.tech_.setCurrentTime(t),
- this.tech_.trigger({ type: 'usage', name: 'vhs-video-underflow' }),
- this.tech_.trigger({ type: 'usage', name: 'hls-video-underflow' }),
- !0
- )
- e = Bo(i, t)
- if (0 < e.length) {
- i = e.start(0) - t
- return (
- this.logger_('Stopped at ' + t + ', setting timer for ' + i + ', seeking to ' + e.start(0)),
- this.cancelTimer_(),
- (this.timer_ = setTimeout(this.skipTheGap_.bind(this), 1e3 * i, t)),
- !0
- )
- }
- return !1
- }),
- (t.afterSeekableWindow_ = function (e, t, i, n) {
- if ((void 0 === n && (n = !1), !e.length)) return !1
- var r = e.end(e.length - 1) + 0.1
- return (r = !i.endList && n ? e.end(e.length - 1) + 3 * i.targetDuration : r) < t
- }),
- (t.beforeSeekableWindow_ = function (e, t) {
- return !!(e.length && 0 < e.start(0) && t < e.start(0) - this.liveRangeSafeTimeDelta)
- }),
- (t.videoUnderflow_ = function (e) {
- var t,
- i,
- n = e.videoBuffered,
- r = e.audioBuffered,
- a = e.currentTime
- if (n)
- return (
- n.length && r.length
- ? ((i = Uo(n, a - 3)), (e = Uo(n, a)), (r = Uo(r, a)).length && !e.length && i.length && (t = { start: i.end(0), end: r.end(0) }))
- : Bo(n, a).length || (t = this.gapFromVideoUnderflow_(n, a)),
- !!t && (this.logger_('Encountered a gap in video from ' + t.start + ' to ' + t.end + '. Seeking to current time ' + a), !0)
- )
- }),
- (t.skipTheGap_ = function (e) {
- var t = this.tech_.buffered(),
- i = this.tech_.currentTime(),
- t = Bo(t, i)
- this.cancelTimer_(),
- 0 !== t.length &&
- i === e &&
- (this.logger_('skipTheGap_:', 'currentTime:', i, 'scheduled currentTime:', e, 'nextRange start:', t.start(0)),
- this.tech_.setCurrentTime(t.start(0) + fl),
- this.tech_.trigger({ type: 'usage', name: 'vhs-gap-skip' }),
- this.tech_.trigger({ type: 'usage', name: 'hls-gap-skip' }))
- }),
- (t.gapFromVideoUnderflow_ = function (e, t) {
- for (
- var i = (function (e) {
- if (e.length < 2) return tr.createTimeRanges()
- for (var t = [], i = 1; i < e.length; i++) {
- var n = e.end(i - 1),
- r = e.start(i)
- t.push([n, r])
- }
- return tr.createTimeRanges(t)
- })(e),
- n = 0;
- n < i.length;
- n++
- ) {
- var r = i.start(n),
- a = i.end(n)
- if (t - r < 4 && 2 < t - r) return { start: r, end: a }
- }
- return null
- }),
- e
- )
- })(),
- wc = {
- errorInterval: 30,
- getSource: function (e) {
- return e(this.tech({ IWillNotUseThisInPlugins: !0 }).currentSource_ || this.currentSource())
- },
- },
- Ec = {
- PlaylistLoader: _l,
- Playlist: gl,
- utils: zt,
- STANDARD_PLAYLIST_SELECTOR: ar,
- INITIAL_PLAYLIST_SELECTOR: function () {
- var t = this,
- e = this.playlists.master.playlists.filter(gl.isEnabled)
- return (
- el(e, tl),
- e.filter(function (e) {
- return !!$u(t.playlists.master, e).video
- })[0] || null
- )
- },
- lastBandwidthSelector: ar,
- movingAverageBandwidthSelector: function (t) {
- var i = -1,
- n = -1
- if (t < 0 || 1 < t) throw new Error('Moving average bandwidth decay must be between 0 and 1.')
- return function () {
- var e = (this.useDevicePixelRatio && window.devicePixelRatio) || 1
- return (
- i < 0 && ((i = this.systemBandwidth), (n = this.systemBandwidth)),
- 0 < this.systemBandwidth && this.systemBandwidth !== n && ((i = t * this.systemBandwidth + (1 - t) * i), (n = this.systemBandwidth)),
- il(
- this.playlists.master,
- i,
- parseInt(Zu(this.tech_.el(), 'width'), 10) * e,
- parseInt(Zu(this.tech_.el(), 'height'), 10) * e,
- this.limitRenditionByPlayerDimensions,
- this.masterPlaylistController_
- )
- )
- }
- },
- comparePlaylistBandwidth: tl,
- comparePlaylistResolution: function (e, t) {
- var i, n
- return (i = (i = e.attributes.RESOLUTION && e.attributes.RESOLUTION.width ? e.attributes.RESOLUTION.width : i) || window.Number.MAX_VALUE) ===
- (n = (n = t.attributes.RESOLUTION && t.attributes.RESOLUTION.width ? t.attributes.RESOLUTION.width : n) || window.Number.MAX_VALUE) &&
- e.attributes.BANDWIDTH &&
- t.attributes.BANDWIDTH
- ? e.attributes.BANDWIDTH - t.attributes.BANDWIDTH
- : i - n
- },
- xhr: yu(),
- }
- Object.keys(El).forEach(function (t) {
- Object.defineProperty(Ec, t, {
- get: function () {
- return tr.log.warn('using Vhs.' + t + ' is UNSAFE be sure you know what you are doing'), El[t]
- },
- set: function (e) {
- tr.log.warn('using Vhs.' + t + ' is UNSAFE be sure you know what you are doing'),
- 'number' != typeof e || e < 0 ? tr.log.warn('value of Vhs.' + t + ' must be greater than or equal to 0') : (El[t] = e)
- },
- })
- })
- function kc(e, t) {
- for (var i = t.media(), n = -1, r = 0; r < e.length; r++)
- if (e[r].id === i.id) {
- n = r
- break
- }
- ;(e.selectedIndex_ = n), e.trigger({ selectedIndex: n, type: 'change' })
- }
- var Cc = 'videojs-vhs'
- Ec.canPlaySource = function () {
- return tr.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder.")
- }
- function Ic(e) {
- var n = e.player,
- t = e.sourceKeySystems,
- i = e.audioMedia,
- e = e.mainPlaylists
- if (!n.eme.initializeMediaKeys) return Promise.resolve()
- var r,
- e =
- ((e = e = i ? e.concat([i]) : e),
- (r = Object.keys(t)),
- e.reduce(function (e, n) {
- if (!n.contentProtection) return e
- var t = r.reduce(function (e, t) {
- var i = n.contentProtection[t]
- return i && i.pssh && (e[t] = { pssh: i.pssh }), e
- }, {})
- return Object.keys(t).length && e.push(t), e
- }, [])),
- a = [],
- s = []
- return (
- e.forEach(function (e) {
- s.push(
- new Promise(function (e, t) {
- n.tech_.one('keysessioncreated', e)
- })
- ),
- a.push(
- new Promise(function (t, i) {
- n.eme.initializeMediaKeys({ keySystems: e }, function (e) {
- e ? i(e) : t()
- })
- })
- )
- }),
- Promise.race([Promise.all(a), Promise.race(s)])
- )
- }
- function xc(e) {
- var t = e.player
- return (
- !!(e = (function (e, t, i) {
- if (!e) return e
- var n = {}
- t && t.attributes && t.attributes.CODECS && (n = Yu(pr(t.attributes.CODECS))), i && i.attributes && i.attributes.CODECS && (n.audio = i.attributes.CODECS)
- var r,
- a = mr(n.video),
- s = mr(n.audio),
- o = {}
- for (r in e)
- (o[r] = {}),
- s && (o[r].audioContentType = s),
- a && (o[r].videoContentType = a),
- t.contentProtection && t.contentProtection[r] && t.contentProtection[r].pssh && (o[r].pssh = t.contentProtection[r].pssh),
- 'string' == typeof e[r] && (o[r].url = e[r])
- return tr.mergeOptions(e, o)
- })(e.sourceKeySystems, e.media, e.audioMedia)) &&
- (!((t.currentSource().keySystems = e) && !t.eme) || (tr.log.warn('DRM encrypted source cannot be decrypted without a DRM plugin'), !1))
- )
- }
- function Ac() {
- if (!window.localStorage) return null
- var e = window.localStorage.getItem(Cc)
- if (!e) return null
- try {
- return JSON.parse(e)
- } catch (e) {
- return null
- }
- }
- ;(Ec.supportsNativeHls = (function () {
- if (!document || !document.createElement) return !1
- var t = document.createElement('video')
- if (!tr.getTech('Html5').isSupported()) return !1
- return ['application/vnd.apple.mpegurl', 'audio/mpegurl', 'audio/x-mpegurl', 'application/x-mpegurl', 'video/x-mpegurl', 'video/mpegurl', 'application/mpegurl'].some(function (e) {
- return /maybe|probably/i.test(t.canPlayType(e))
- })
- })()),
- (Ec.supportsNativeDash =
- !!(document && document.createElement && tr.getTech('Html5').isSupported()) && /maybe|probably/i.test(document.createElement('video').canPlayType('application/dash+xml'))),
- (Ec.supportsTypeNatively = function (e) {
- return 'hls' === e ? Ec.supportsNativeHls : 'dash' === e && Ec.supportsNativeDash
- }),
- (Ec.isSupported = function () {
- return tr.log.warn("HLS is no longer a tech. Please remove it from your player's techOrder.")
- })
- var Pc = (function (r) {
- function e(e, t, i) {
- var n = r.call(this, t, tr.mergeOptions(i.hls, i.vhs)) || this
- if (
- (i.hls && Object.keys(i.hls).length && tr.log.warn('Using hls options is deprecated. Please rename `hls` to `vhs` in your options object.'),
- 'number' == typeof i.initialBandwidth && (n.options_.bandwidth = i.initialBandwidth),
- (n.logger_ = Ro('VhsHandler')),
- t.options_ &&
- t.options_.playerId &&
- ((i = tr(t.options_.playerId)).hasOwnProperty('hls') ||
- Object.defineProperty(i, 'hls', {
- get: function () {
- return tr.log.warn('player.hls is deprecated. Use player.tech().vhs instead.'), t.trigger({ type: 'usage', name: 'hls-player-access' }), ft(n)
- },
- configurable: !0,
- }),
- i.hasOwnProperty('vhs') ||
- Object.defineProperty(i, 'vhs', {
- get: function () {
- return tr.log.warn('player.vhs is deprecated. Use player.tech().vhs instead.'), t.trigger({ type: 'usage', name: 'vhs-player-access' }), ft(n)
- },
- configurable: !0,
- }),
- i.hasOwnProperty('dash') ||
- Object.defineProperty(i, 'dash', {
- get: function () {
- return tr.log.warn('player.dash is deprecated. Use player.tech().vhs instead.'), ft(n)
- },
- configurable: !0,
- }),
- (n.player_ = i)),
- (n.tech_ = t),
- (n.source_ = e),
- (n.stats = {}),
- (n.ignoreNextSeekingEvent_ = !1),
- n.setOptions_(),
- n.options_.overrideNative && t.overrideNativeAudioTracks && t.overrideNativeVideoTracks)
- )
- t.overrideNativeAudioTracks(!0), t.overrideNativeVideoTracks(!0)
- else if (n.options_.overrideNative && (t.featuresNativeVideoTracks || t.featuresNativeAudioTracks))
- throw new Error('Overriding native HLS requires emulated tracks. See https://git.io/vMpjB')
- return (
- n.on(document, ['fullscreenchange', 'webkitfullscreenchange', 'mozfullscreenchange', 'MSFullscreenChange'], function (e) {
- var t = document.fullscreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.msFullscreenElement
- t && t.contains(n.tech_.el()) ? n.masterPlaylistController_.fastQualityChange_() : n.masterPlaylistController_.checkABR_()
- }),
- n.on(n.tech_, 'seeking', function () {
- this.ignoreNextSeekingEvent_ ? (this.ignoreNextSeekingEvent_ = !1) : this.setCurrentTime(this.tech_.currentTime())
- }),
- n.on(n.tech_, 'error', function () {
- this.tech_.error() && this.masterPlaylistController_ && this.masterPlaylistController_.pauseLoading()
- }),
- n.on(n.tech_, 'play', n.play),
- n
- )
- }
- mt(e, r)
- var t = e.prototype
- return (
- (t.setOptions_ = function () {
- var e,
- t = this
- ;(this.options_.withCredentials = this.options_.withCredentials || !1),
- (this.options_.handleManifestRedirects = !1 !== this.options_.handleManifestRedirects),
- (this.options_.limitRenditionByPlayerDimensions = !1 !== this.options_.limitRenditionByPlayerDimensions),
- (this.options_.useDevicePixelRatio = this.options_.useDevicePixelRatio || !1),
- (this.options_.smoothQualityChange = this.options_.smoothQualityChange || !1),
- (this.options_.useBandwidthFromLocalStorage =
- 'undefined' != typeof this.source_.useBandwidthFromLocalStorage ? this.source_.useBandwidthFromLocalStorage : this.options_.useBandwidthFromLocalStorage || !1),
- (this.options_.useNetworkInformationApi = this.options_.useNetworkInformationApi || !1),
- (this.options_.useDtsForTimestampOffset = this.options_.useDtsForTimestampOffset || !1),
- (this.options_.customTagParsers = this.options_.customTagParsers || []),
- (this.options_.customTagMappers = this.options_.customTagMappers || []),
- (this.options_.cacheEncryptionKeys = this.options_.cacheEncryptionKeys || !1),
- 'number' != typeof this.options_.blacklistDuration && (this.options_.blacklistDuration = 300),
- 'number' != typeof this.options_.bandwidth &&
- this.options_.useBandwidthFromLocalStorage &&
- ((e = Ac()) &&
- e.bandwidth &&
- ((this.options_.bandwidth = e.bandwidth),
- this.tech_.trigger({ type: 'usage', name: 'vhs-bandwidth-from-local-storage' }),
- this.tech_.trigger({ type: 'usage', name: 'hls-bandwidth-from-local-storage' })),
- e &&
- e.throughput &&
- ((this.options_.throughput = e.throughput),
- this.tech_.trigger({ type: 'usage', name: 'vhs-throughput-from-local-storage' }),
- this.tech_.trigger({ type: 'usage', name: 'hls-throughput-from-local-storage' }))),
- 'number' != typeof this.options_.bandwidth && (this.options_.bandwidth = El.INITIAL_BANDWIDTH),
- (this.options_.enableLowInitialPlaylist = this.options_.enableLowInitialPlaylist && this.options_.bandwidth === El.INITIAL_BANDWIDTH),
- [
- 'withCredentials',
- 'useDevicePixelRatio',
- 'limitRenditionByPlayerDimensions',
- 'bandwidth',
- 'smoothQualityChange',
- 'customTagParsers',
- 'customTagMappers',
- 'handleManifestRedirects',
- 'cacheEncryptionKeys',
- 'playlistSelector',
- 'initialPlaylistSelector',
- 'experimentalBufferBasedABR',
- 'liveRangeSafeTimeDelta',
- 'experimentalLLHLS',
- 'useNetworkInformationApi',
- 'useDtsForTimestampOffset',
- 'experimentalExactManifestTimings',
- 'experimentalLeastPixelDiffSelector',
- ].forEach(function (e) {
- 'undefined' != typeof t.source_[e] && (t.options_[e] = t.source_[e])
- }),
- (this.limitRenditionByPlayerDimensions = this.options_.limitRenditionByPlayerDimensions),
- (this.useDevicePixelRatio = this.options_.useDevicePixelRatio)
- }),
- (t.src = function (e, t) {
- var n = this
- e &&
- (this.setOptions_(),
- (this.options_.src = 0 === (e = this.source_.src).toLowerCase().indexOf('data:application/vnd.videojs.vhs+json,') ? JSON.parse(e.substring(e.indexOf(',') + 1)) : e),
- (this.options_.tech = this.tech_),
- (this.options_.externVhs = Ec),
- (this.options_.sourceType = vr(t)),
- (this.options_.seekTo = function (e) {
- n.tech_.setCurrentTime(e)
- }),
- this.options_.smoothQualityChange && tr.log.warn('smoothQualityChange is deprecated and will be removed in the next major version'),
- (this.masterPlaylistController_ = new bc(this.options_)),
- (t = tr.mergeOptions({ liveRangeSafeTimeDelta: 0.1 }, this.options_, {
- seekable: function () {
- return n.seekable()
- },
- media: function () {
- return n.masterPlaylistController_.media()
- },
- masterPlaylistController: this.masterPlaylistController_,
- })),
- (this.playbackWatcher_ = new Sc(t)),
- this.masterPlaylistController_.on('error', function () {
- var e = tr.players[n.tech_.options_.playerId],
- t = n.masterPlaylistController_.error
- 'object' != typeof t || t.code ? 'string' == typeof t && (t = { message: t, code: 3 }) : (t.code = 3), e.error(t)
- }),
- (t = this.options_.experimentalBufferBasedABR ? Ec.movingAverageBandwidthSelector(0.55) : Ec.STANDARD_PLAYLIST_SELECTOR),
- (this.masterPlaylistController_.selectPlaylist = (this.selectPlaylist || t).bind(this)),
- (this.masterPlaylistController_.selectInitialPlaylist = Ec.INITIAL_PLAYLIST_SELECTOR.bind(this)),
- (this.playlists = this.masterPlaylistController_.masterPlaylistLoader_),
- (this.mediaSource = this.masterPlaylistController_.mediaSource),
- Object.defineProperties(this, {
- selectPlaylist: {
- get: function () {
- return this.masterPlaylistController_.selectPlaylist
- },
- set: function (e) {
- this.masterPlaylistController_.selectPlaylist = e.bind(this)
- },
- },
- throughput: {
- get: function () {
- return this.masterPlaylistController_.mainSegmentLoader_.throughput.rate
- },
- set: function (e) {
- ;(this.masterPlaylistController_.mainSegmentLoader_.throughput.rate = e), (this.masterPlaylistController_.mainSegmentLoader_.throughput.count = 1)
- },
- },
- bandwidth: {
- get: function () {
- var e = this.masterPlaylistController_.mainSegmentLoader_.bandwidth,
- t = window.navigator.connection || window.navigator.mozConnection || window.navigator.webkitConnection
- return (e = this.options_.useNetworkInformationApi && t ? (1e7 <= (t = 1e3 * t.downlink * 1e3) && 1e7 <= e ? Math.max(e, t) : t) : e)
- },
- set: function (e) {
- ;(this.masterPlaylistController_.mainSegmentLoader_.bandwidth = e), (this.masterPlaylistController_.mainSegmentLoader_.throughput = { rate: 0, count: 0 })
- },
- },
- systemBandwidth: {
- get: function () {
- var e = 1 / (this.bandwidth || 1),
- t = 0 < this.throughput ? 1 / this.throughput : 0
- return Math.floor(1 / (e + t))
- },
- set: function () {
- tr.log.error('The "systemBandwidth" property is read-only')
- },
- },
- }),
- this.options_.bandwidth && (this.bandwidth = this.options_.bandwidth),
- this.options_.throughput && (this.throughput = this.options_.throughput),
- Object.defineProperties(this.stats, {
- bandwidth: {
- get: function () {
- return n.bandwidth || 0
- },
- enumerable: !0,
- },
- mediaRequests: {
- get: function () {
- return n.masterPlaylistController_.mediaRequests_() || 0
- },
- enumerable: !0,
- },
- mediaRequestsAborted: {
- get: function () {
- return n.masterPlaylistController_.mediaRequestsAborted_() || 0
- },
- enumerable: !0,
- },
- mediaRequestsTimedout: {
- get: function () {
- return n.masterPlaylistController_.mediaRequestsTimedout_() || 0
- },
- enumerable: !0,
- },
- mediaRequestsErrored: {
- get: function () {
- return n.masterPlaylistController_.mediaRequestsErrored_() || 0
- },
- enumerable: !0,
- },
- mediaTransferDuration: {
- get: function () {
- return n.masterPlaylistController_.mediaTransferDuration_() || 0
- },
- enumerable: !0,
- },
- mediaBytesTransferred: {
- get: function () {
- return n.masterPlaylistController_.mediaBytesTransferred_() || 0
- },
- enumerable: !0,
- },
- mediaSecondsLoaded: {
- get: function () {
- return n.masterPlaylistController_.mediaSecondsLoaded_() || 0
- },
- enumerable: !0,
- },
- mediaAppends: {
- get: function () {
- return n.masterPlaylistController_.mediaAppends_() || 0
- },
- enumerable: !0,
- },
- mainAppendsToLoadedData: {
- get: function () {
- return n.masterPlaylistController_.mainAppendsToLoadedData_() || 0
- },
- enumerable: !0,
- },
- audioAppendsToLoadedData: {
- get: function () {
- return n.masterPlaylistController_.audioAppendsToLoadedData_() || 0
- },
- enumerable: !0,
- },
- appendsToLoadedData: {
- get: function () {
- return n.masterPlaylistController_.appendsToLoadedData_() || 0
- },
- enumerable: !0,
- },
- timeToLoadedData: {
- get: function () {
- return n.masterPlaylistController_.timeToLoadedData_() || 0
- },
- enumerable: !0,
- },
- buffered: {
- get: function () {
- return jo(n.tech_.buffered())
- },
- enumerable: !0,
- },
- currentTime: {
- get: function () {
- return n.tech_.currentTime()
- },
- enumerable: !0,
- },
- currentSource: {
- get: function () {
- return n.tech_.currentSource_
- },
- enumerable: !0,
- },
- currentTech: {
- get: function () {
- return n.tech_.name_
- },
- enumerable: !0,
- },
- duration: {
- get: function () {
- return n.tech_.duration()
- },
- enumerable: !0,
- },
- master: {
- get: function () {
- return n.playlists.master
- },
- enumerable: !0,
- },
- playerDimensions: {
- get: function () {
- return n.tech_.currentDimensions()
- },
- enumerable: !0,
- },
- seekable: {
- get: function () {
- return jo(n.tech_.seekable())
- },
- enumerable: !0,
- },
- timestamp: {
- get: function () {
- return Date.now()
- },
- enumerable: !0,
- },
- videoPlaybackQuality: {
- get: function () {
- return n.tech_.getVideoPlaybackQuality()
- },
- enumerable: !0,
- },
- }),
- this.tech_.one('canplay', this.masterPlaylistController_.setupFirstPlay.bind(this.masterPlaylistController_)),
- this.tech_.on('bandwidthupdate', function () {
- n.options_.useBandwidthFromLocalStorage &&
- (function (e) {
- if (!window.localStorage) return
- var t = (t = Ac()) ? tr.mergeOptions(t, e) : e
- try {
- window.localStorage.setItem(Cc, JSON.stringify(t))
- } catch (e) {
- return
- }
- })({ bandwidth: n.bandwidth, throughput: Math.round(n.throughput) })
- }),
- this.masterPlaylistController_.on('selectedinitialmedia', function () {
- var i
- ;(i = n).representations = function () {
- var e = i.masterPlaylistController_.master(),
- e = au(e) ? i.masterPlaylistController_.getAudioTrackPlaylists_() : e.playlists
- return e
- ? e
- .filter(function (e) {
- return !Zo(e)
- })
- .map(function (e, t) {
- return new Kl(i, e, e.id)
- })
- : []
- }
- }),
- this.masterPlaylistController_.sourceUpdater_.on('createdsourcebuffers', function () {
- n.setupEme_()
- }),
- this.on(this.masterPlaylistController_, 'progress', function () {
- this.tech_.trigger('progress')
- }),
- this.on(this.masterPlaylistController_, 'firstplay', function () {
- this.ignoreNextSeekingEvent_ = !0
- }),
- this.setupQualityLevels_(),
- this.tech_.el() && ((this.mediaSourceUrl_ = window.URL.createObjectURL(this.masterPlaylistController_.mediaSource)), this.tech_.src(this.mediaSourceUrl_)))
- }),
- (t.createKeySessions_ = function () {
- var t = this,
- e = this.masterPlaylistController_.mediaTypes_.AUDIO.activePlaylistLoader
- this.logger_('waiting for EME key session creation'),
- Ic({ player: this.player_, sourceKeySystems: this.source_.keySystems, audioMedia: e && e.media(), mainPlaylists: this.playlists.master.playlists })
- .then(function () {
- t.logger_('created EME key session'), t.masterPlaylistController_.sourceUpdater_.initializedEme()
- })
- .catch(function (e) {
- t.logger_('error while creating EME key session', e), t.player_.error({ message: 'Failed to initialize media keys for EME', code: 3 })
- })
- }),
- (t.handleWaitingForKey_ = function () {
- this.logger_('waitingforkey fired, attempting to create any new key sessions'), this.createKeySessions_()
- }),
- (t.setupEme_ = function () {
- var t = this,
- e = this.masterPlaylistController_.mediaTypes_.AUDIO.activePlaylistLoader,
- e = xc({ player: this.player_, sourceKeySystems: this.source_.keySystems, media: this.playlists.media(), audioMedia: e && e.media() })
- this.player_.tech_.on('keystatuschange', function (e) {
- 'output-restricted' === e.status &&
- t.masterPlaylistController_.blacklistCurrentPlaylist({
- playlist: t.masterPlaylistController_.media(),
- message: 'DRM keystatus changed to ' + e.status + '. Playlist will fail to play. Check for HDCP content.',
- blacklistDuration: 1 / 0,
- })
- }),
- (this.handleWaitingForKey_ = this.handleWaitingForKey_.bind(this)),
- this.player_.tech_.on('waitingforkey', this.handleWaitingForKey_),
- 11 !== tr.browser.IE_VERSION && e ? this.createKeySessions_() : this.masterPlaylistController_.sourceUpdater_.initializedEme()
- }),
- (t.setupQualityLevels_ = function () {
- var i = this,
- e = tr.players[this.tech_.options_.playerId]
- e &&
- e.qualityLevels &&
- !this.qualityLevels_ &&
- ((this.qualityLevels_ = e.qualityLevels()),
- this.masterPlaylistController_.on('selectedinitialmedia', function () {
- var t, e
- ;(t = i.qualityLevels_),
- (e = i).representations().forEach(function (e) {
- t.addQualityLevel(e)
- }),
- kc(t, e.playlists)
- }),
- this.playlists.on('mediachange', function () {
- kc(i.qualityLevels_, i.playlists)
- }))
- }),
- (e.version = function () {
- return { '@videojs/http-streaming': '2.14.2', 'mux.js': '6.0.1', 'mpd-parser': '0.21.1', 'm3u8-parser': '4.7.1', 'aes-decrypter': '3.1.3' }
- }),
- (t.version = function () {
- return this.constructor.version()
- }),
- (t.canChangeType = function () {
- return uc.canChangeType()
- }),
- (t.play = function () {
- this.masterPlaylistController_.play()
- }),
- (t.setCurrentTime = function (e) {
- this.masterPlaylistController_.setCurrentTime(e)
- }),
- (t.duration = function () {
- return this.masterPlaylistController_.duration()
- }),
- (t.seekable = function () {
- return this.masterPlaylistController_.seekable()
- }),
- (t.dispose = function () {
- this.playbackWatcher_ && this.playbackWatcher_.dispose(),
- this.masterPlaylistController_ && this.masterPlaylistController_.dispose(),
- this.qualityLevels_ && this.qualityLevels_.dispose(),
- this.player_ && (delete this.player_.vhs, delete this.player_.dash, delete this.player_.hls),
- this.tech_ && this.tech_.vhs && delete this.tech_.vhs,
- this.tech_ && delete this.tech_.hls,
- this.mediaSourceUrl_ && window.URL.revokeObjectURL && (window.URL.revokeObjectURL(this.mediaSourceUrl_), (this.mediaSourceUrl_ = null)),
- this.tech_ && this.tech_.off('waitingforkey', this.handleWaitingForKey_),
- r.prototype.dispose.call(this)
- }),
- (t.convertToProgramTime = function (e, t) {
- return ku({ playlist: this.masterPlaylistController_.media(), time: e, callback: t })
- }),
- (t.seekToProgramTime = function (e, t, i, n) {
- return (
- void 0 === i && (i = !0),
- void 0 === n && (n = 2),
- Cu({ programTime: e, playlist: this.masterPlaylistController_.media(), retryCount: n, pauseAfterSeek: i, seekTo: this.options_.seekTo, tech: this.options_.tech, callback: t })
- )
- }),
- e
- )
- })(tr.getComponent('Component')),
- Lc = {
- name: 'videojs-http-streaming',
- VERSION: '2.14.2',
- canHandleSource: function (e, t) {
- t = tr.mergeOptions(tr.options, (t = void 0 === t ? {} : t))
- return Lc.canPlayType(e.type, t)
- },
- handleSource: function (e, t, i) {
- i = tr.mergeOptions(tr.options, (i = void 0 === i ? {} : i))
- return (
- (t.vhs = new Pc(e, t, i)),
- tr.hasOwnProperty('hls') ||
- Object.defineProperty(t, 'hls', {
- get: function () {
- return tr.log.warn('player.tech().hls is deprecated. Use player.tech().vhs instead.'), t.vhs
- },
- configurable: !0,
- }),
- (t.vhs.xhr = yu()),
- t.vhs.src(e.src, e.type),
- t.vhs
- )
- },
- canPlayType: function (e, t) {
- var i = tr.mergeOptions(tr.options, (t = void 0 === t ? {} : t)),
- t = i.vhs,
- t = (t = void 0 === t ? {} : t).overrideNative,
- t = void 0 === t ? !tr.browser.IS_ANY_SAFARI : t,
- i = i.hls,
- i = (i = void 0 === i ? {} : i).overrideNative,
- i = void 0 !== i && i,
- e = vr(e)
- return e && (!Ec.supportsTypeNatively(e) || i || t) ? 'maybe' : ''
- },
- }
- return (
- gr('avc1.4d400d,mp4a.40.2') && tr.getTech('Html5').registerSourceHandler(Lc, 0),
- (tr.VhsHandler = Pc),
- Object.defineProperty(tr, 'HlsHandler', {
- get: function () {
- return tr.log.warn('videojs.HlsHandler is deprecated. Use videojs.VhsHandler instead.'), Pc
- },
- configurable: !0,
- }),
- (tr.VhsSourceHandler = Lc),
- Object.defineProperty(tr, 'HlsSourceHandler', {
- get: function () {
- return tr.log.warn('videojs.HlsSourceHandler is deprecated. Use videojs.VhsSourceHandler instead.'), Lc
- },
- configurable: !0,
- }),
- (tr.Vhs = Ec),
- Object.defineProperty(tr, 'Hls', {
- get: function () {
- return tr.log.warn('videojs.Hls is deprecated. Use videojs.Vhs instead.'), Ec
- },
- configurable: !0,
- }),
- tr.use || (tr.registerComponent('Hls', Ec), tr.registerComponent('Vhs', Ec)),
- (tr.options.vhs = tr.options.vhs || {}),
- (tr.options.hls = tr.options.hls || {}),
- (tr.getPlugin && tr.getPlugin('reloadSourceOnError')) ||
- (tr.registerPlugin || tr.plugin)('reloadSourceOnError', function (e) {
- Yl(this, e)
- }),
- tr
- )
- })
|