/* Ċ Ġ* ĠMIT ĠLicense Ċ Ġ* Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 2 1 ĠDaniel ĠK na uf Ċ Ġ* Ċ Ġ* ĠPermission Ġis Ġhereby Ġgranted , Ġfree Ġof Ġcharge , Ġto Ġany Ġperson Ġobtaining Ġa Ġcopy Ċ Ġ* Ġof Ġthis Ġsoftware Ġand Ġassociated Ġdocumentation Ġfiles Ġ( the Ġ" Software "), Ġto Ġdeal Ċ Ġ* Ġin Ġthe ĠSoftware Ġwithout Ġrestriction , Ġincluding Ġwithout Ġlimitation Ġthe Ġrights Ċ Ġ* Ġto Ġuse , Ġcopy , Ġmodify , Ġmerge , Ġpublish , Ġdistribute , Ġsublicense , Ġand / or Ġsell Ċ Ġ* Ġcopies Ġof Ġthe ĠSoftware , Ġand Ġto Ġpermit Ġpersons Ġto Ġwhom Ġthe ĠSoftware Ġis Ċ Ġ* Ġfurnished Ġto Ġdo Ġso , Ġsubject Ġto Ġthe Ġfollowing Ġconditions : Ċ Ġ* Ċ Ġ* ĠThe Ġabove Ġcopyright Ġnotice Ġand Ġthis Ġpermission Ġnotice Ġshall Ġbe Ġincluded Ġin Ġall Ċ Ġ* Ġcopies Ġor Ġsubstantial Ġportions Ġof Ġthe ĠSoftware . Ċ Ġ* Ċ Ġ* ĠTHE ĠSOFTWARE ĠIS ĠPROVIDED Ġ" AS ĠIS ", ĠWITHOUT ĠWARRANTY ĠOF ĠANY ĠKIND , ĠEXPRESS ĠOR Ċ Ġ* ĠIMPLIED , ĠINCLUDING ĠBUT ĠNOT ĠLIMITED ĠTO ĠTHE ĠWARRANTIES ĠOF ĠMERCHANTABILITY , Ċ Ġ* ĠFITNESS ĠFOR ĠA ĠPARTICULAR ĠPURPOSE ĠAND ĠNONINFRINGEMENT . ĠIN ĠNO ĠEVENT ĠSHALL ĠTHE Ċ Ġ* ĠAUTHORS ĠOR ĠCOPYRIGHT ĠHOLDERS ĠBE ĠLIABLE ĠFOR ĠANY ĠCLAIM , ĠDAMAGES ĠOR ĠOTHER Ċ Ġ* ĠLIABILITY , ĠWHETHER ĠIN ĠAN ĠACTION ĠOF ĠCONTRACT , ĠTORT ĠOR ĠOTHERWISE , ĠARISING ĠFROM , Ċ Ġ* ĠOUT ĠOF ĠOR ĠIN ĠCONNECTION ĠWITH ĠTHE ĠSOFTWARE ĠOR ĠTHE ĠUSE ĠOR ĠOTHER ĠDEALINGS ĠIN ĠTHE Ċ Ġ* ĠSOFTWARE . Ċ Ġ*/ Ċ Ċ @ file : Suppress (" unused ") Ċ Ċ package Ġdan iel k na uf . li ved ata kit Ċ Ċ import Ġandroidx . annotation . MainThread Ċ import Ġandroidx . lifecycle . Mutable LiveData Ċ Ċ @ MainThread Ċ fun Ġ< T > ĠMutable LiveData < List < T >> . add ( ĊĠĠĠ Ġelement : ĠT , ĊĠĠĠ Ġindex : ĠInt Ġ= ĠUNS PE CI FIED _ INDEX Ċ ) Ġ{ ĊĠĠĠ Ġval Ġlist Ġ= Ġvalue ?. to Mutable List () Ġ?: Ġmutable ListOf () ĊĊĠĠĠ Ġval Ġis Invalid Index Ġ= Ġ! list . validate Index ( index ) ĊĠĠĠ Ġif Ġ( is Invalid Index ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . add ( element ) ĊĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġlist ĊĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlist . add ( ĊĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex , ĊĠĠĠĠĠĠĠ Ġelement Ġ= Ġelement ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvalue Ġ= Ġlist Ċ } Ċ Ċ @ MainThread Ċ fun Ġ< T > ĠMutable LiveData < List < T >> . addAll ( ĊĠĠĠ Ġvar arg Ġelements : ĠT , ĊĠĠĠ Ġindex : ĠInt Ġ= ĠUNS PE CI FIED _ INDEX Ċ ) Ġ{ ĊĠĠĠ Ġval Ġlist Ġ= Ġvalue ?. to Mutable List () Ġ?: Ġmutable ListOf () ĊĊĠĠĠ Ġval Ġis Invalid Index Ġ= Ġ! list . validate Index ( index ) ĊĠĠĠ Ġif Ġ( is Invalid Index ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . addAll ( elements ) ĊĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġlist ĊĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlist . addAll ( ĊĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex , ĊĠĠĠĠĠĠĠ Ġelements Ġ= Ġelements . toList () ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvalue Ġ= Ġlist Ċ } Ċ Ċ @ MainThread Ċ fun Ġ< T > ĠMutable LiveData < List < T >> . addAll ( ĊĠĠĠ Ġelements : ĠList < T >, ĊĠĠĠ Ġindex : ĠInt Ġ= ĠUNS PE CI FIED _ INDEX Ċ ) Ġ{ ĊĠĠĠ Ġval Ġlist Ġ= Ġvalue ?. to Mutable List () Ġ?: Ġmutable ListOf () ĊĊĠĠĠ Ġval Ġis Invalid Index Ġ= Ġ! list . validate Index ( index ) ĊĠĠĠ Ġif Ġ( is Invalid Index ) Ġ{ ĊĠĠĠĠĠĠĠ Ġlist . addAll ( elements ) ĊĊĠĠĠĠĠĠĠ Ġvalue Ġ= Ġlist ĊĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġlist . addAll ( ĊĠĠĠĠĠĠĠ Ġindex Ġ= Ġindex , ĊĠĠĠĠĠĠĠ Ġelements Ġ= Ġelements ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġvalue Ġ= Ġlist Ċ } Ċ Ċ @ MainThread Ċ fun Ġ< T > ĠMutable LiveData < List < T >> . remove ( index : ĠInt ) Ġ{ ĊĠĠĠ Ġval Ġlist Ġ= Ġvalue ?. to Mutable List () Ġ?: Ġreturn ĊĊĠĠĠ Ġval Ġis Invalid Index Ġ= Ġ! list . validate Index ( index ) ĊĠĠĠ Ġif Ġ( is Invalid Index ) Ġreturn ĊĊĠĠĠ Ġlist . remove At ( index ) ĊĊĠĠĠ Ġvalue Ġ= Ġlist Ċ } Ċ Ċ @ MainThread Ċ fun Ġ< T > ĠMutable LiveData < List < T >> . clear () Ġ{ ĊĠĠĠ Ġvalue Ġ= Ġempty List () Ċ } Ċ Ċ @ MainThread Ċ fun Ġ< T > ĠMutable LiveData < List < T >> . forEach Indexed ( ĊĠĠĠ Ġaction : Ġ( index : ĠInt , Ġitem : ĠT ) Ġ-> ĠUnit Ċ ) Ġ{ ĊĠĠĠ Ġvalue ?. forEach Indexed ( action ) Ċ } Ċ Ċ fun Ġ< T > ĠMutable LiveData < List < T >> . isEmpty (): ĠBoolean Ġ= Ġvalue ?. isEmpty () Ġ?: Ġtrue Ċ Ċ fun Ġ< T > ĠMutable LiveData < List < T >> . last Index (): ĠInt Ġ= ĊĠĠĠ Ġif Ġ( isEmpty ()) ĠDEFAULT _ LAST _ INDEX Ġelse Ġvalue ?. last Index Ġ?: ĠDEFAULT _ LAST _ INDEX Ċ Ċ private Ġconst Ġval ĠUNS PE CI FIED _ INDEX Ġ= Ġ- 1 Ċ private Ġconst Ġval ĠDEFAULT _ LAST _ INDEX Ġ= Ġ 0 Ċ Ċ private Ġfun ĠCollection <* >. validate Index ( index : ĠInt ): ĠBoolean Ġ= Ġindex Ġin Ġthis . indices Ċ