/** Ċ Ġ* ĠThis Ġfile Ġis Ġpart Ġof Ġthe ĠONE MA Ġplaylist - dsl ĠPackage . Ċ Ġ* ĠFor Ġthe Ġfull Ġcopyright Ġand Ġlicense Ġinformation , Ċ Ġ* Ġplease Ġview Ġthe ĠLICENSE Ġfile Ġthat Ġwas Ġdistributed Ċ Ġ* Ġwith Ġthis Ġsource Ġcode . Ċ Ġ* Ċ Ġ* Ġcopyright Ġ( c ) Ġ 2 0 2 0 , ĠJ uan ĠMan uel ĠTor res Ġ( http :// on ema . io ) Ċ Ġ* Ċ Ġ* Ġ@ author ĠJ uan ĠMan uel ĠTor res Ġ< software @ on ema . io > Ċ Ġ*/ Ċ package Ġio . on ema . playlist . hls Ċ Ċ /** Ċ Ġ* ĠMedia ĠSegment Ġtag Ġthat Ġspecifies Ġthe Ġduration Ġfo Ġa Ġmedia Ġsegment . Ċ Ġ* Ċ Ġ* ĠThis Ġtag Ġis Ġrequired Ġfor Ġeach Ġmedia Ġsegment Ġas Ġspecified Ġin Ġthe Ċ Ġ* Ġ[ Media Segment ][ Media Playlist . Media Segment ] Ġclass . Ċ Ġ*/ Ċ class ĠExt Inf Ġ: ĠH ls Playlist Tag () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġduration : ĠFloat Ġ= Ġ 0 F ĊĠĠĠ Ġprivate Ġvar Ġtitle : ĠString Ġ= Ġ"" ĊĠĠĠ Ġoverride Ġvar Ġtype : ĠString Ġ= Ġ" EXTINF " ĊĊĠĠĠ Ġin fix Ġfun Ġduration ( duration : ĠFloat ) Ġ Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . duration Ġ= Ġduration ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġtitle ( title : ĠString ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . title Ġ= Ġtitle ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . append ("$ duration ,$ title ". trim (',' )) ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠThe Ġkey Ġtag Ġspecifies Ġhow Ġto Ġdecrypt Ġmedia Ġsegments Ġif Ġthese Ġare Ġencrypted . Ċ Ġ* Ċ Ġ* ĠAt Ġthis Ġtime , Ġthis Ġclass Ġ** does Ġnot Ġconstruct Ġa Ġvalid Ġkey ** Ġtag Ġfor Ġmethods Ġother Ġthan ĠNONE . Ċ Ġ*/ Ċ class ĠKey Ġ: ĠExt X () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype Ġ= Ġ" KEY " ĊĠĠĠ Ġvar Ġname : ĠString Ġ= Ġ"" ĊĠĠĠ Ġvar Ġvalue : ĠString Ġ= Ġ"" ĊĊĠĠĠ Ġin fix Ġfun Ġvalue ( value : ĠString ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . value Ġ= Ġvalue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġname ( name : ĠString ) Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . name Ġ= Ġname ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . append ("${ name . toUpperCase ()} =${ value . toUpperCase () }") ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠMedia ĠSegment Ġtag Ġthat Ġindicates Ġa Ġmedia Ġsegment Ġis Ġa Ġsub - range Ġof Ġthe Ġresource Ġidentified Ċ Ġ* Ġby Ġit 's ĠURI . Ċ Ġ*/ Ċ class ĠByte Range Ġ: ĠExt X () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype Ġ= Ġ" BY TER ANGE " ĊĊĠĠĠ Ġprivate Ġvar Ġlength : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġvar Ġposition : ĠInt Ġ= Ġ 0 ĊĊĠĠĠ Ġin fix Ġfun Ġlength ( length : ĠInt ): ĠByte Range Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . length Ġ= Ġlength ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġin fix Ġfun Ġposition ( position : ĠInt ): ĠByte Range Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . position Ġ= Ġposition ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġbuilder . append ("$ length @ $ position ") ĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . toString () ĊĠĠĠ Ġ} Ċ } Ċ Ċ /** Ċ Ġ* ĠSimple Ġpath / URI Ġline Ġthat Ġfollows Ġthe Ġ` EXT - X - BY TER ANGE ` Ġtag . Ċ Ġ*/ Ċ class ĠSegment Path Ġ: ĠPath () Ġ{ ĊĠĠĠ Ġoverride Ġval Ġtype : ĠString Ġ= Ġ" segment " Ċ }