package Ġre net ik . android . store . json Ċ Ċ import Ġre net ik . android . core . kotlin . collections . at Ċ import Ġre net ik . android . core . kotlin . primitives . toArray Ċ import Ġre net ik . android . event . C SE vent . Companion . event Ċ import Ġre net ik . android . json . CS JsonObject Ċ import Ġre net ik . android . json . create JsonObject Ċ import Ġre net ik . android . json . create JsonObject List Ċ import Ġre net ik . android . json . toJson String Ċ import Ġre net ik . android . store . CSS tore Ċ import Ġjava . io . Closeable Ċ import Ġkotlin . reflect . K Class Ċ Ċ @ Suppress (" unchecked _ cast ") Ċ open Ġclass ĠCSS tore JsonObject Ġ: ĠCS JsonObject , ĠCSS tore , ĠClose able Ġ{ ĊĊĠĠĠ Ġconstructor () Ġ: Ġsuper () ĊĠĠĠ Ġconstructor ( map : ĠMutable Map < String , ĠAny ?> ) Ġ: Ġsuper ( map ) ĊĠĠĠ Ġconstructor ( data : ĠString ) Ġ: Ġsuper ( data ) ĊĠĠĠ Ġconstructor ( data : ĠCSS tore ) Ġ: Ġthis () Ġ{ ĊĠĠĠĠĠĠĠ Ġload ( data ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġval Ġevent Changed Ġ= Ġevent < CSS tore >() ĊĠĠĠ Ġopen Ġfun ĠonChanged () Ġ= Ġevent Changed . fire ( this ) ĊĠĠĠ Ġfinal Ġoverride Ġfun Ġload ( store : ĠCSS tore ) Ġ= Ġload ( store . data ) ĊĊĠĠĠ Ġprivate Ġfun ĠonChange () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! is Bulk Save ) ĠonChanged () ĊĠĠĠĠĠĠĠ Ġelse Ġis Bulk Save Dirty Ġ= Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġload ( data : ĠMap < String , ĠAny ?> ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . load ( data ) ĊĠĠĠĠĠĠĠ ĠonChange () ĊĠĠĠĠĠĠĠ Ġon Loaded () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġopen Ġfun Ġon Loaded () Ġ= ĠUnit ĊĊĠĠĠ Ġoverride Ġfun Ġclear () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . clear () ĊĠĠĠĠĠĠĠ ĠonChange () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclear ( key : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( data . remove ( key ) Ġ== Ġnull ) Ġreturn ĊĠĠĠĠĠĠĠ ĠonChange () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset ( key : ĠString , Ġvalue : ĠString ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġdata [ key ] Ġ== Ġvalue ) Ġreturn ĊĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ ĠonChange () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġset ( key : ĠString , Ġvalue : ĠMap < String , Ġ*> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġdata [ key ] Ġ== Ġvalue ) Ġreturn ĊĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue ?. toMap () ĊĠĠĠĠĠĠĠ ĠonChange () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Map ( key : ĠString ) Ġ= Ġdata [ key ] Ġas ? ĠMutable Map < String , ĠAny ?> ĊĊĠĠĠ Ġoverride Ġfun Ġset ( key : ĠString , Ġvalue : ĠArray < *> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġdata [ key ] Ġ== Ġvalue ) Ġreturn ĊĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue ?. toArray () ĊĠĠĠĠĠĠĠ ĠonChange () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġget Array ( key : ĠString ): ĠArray < *> ? Ġ= ĠgetList ( key )?. to Typed Array () ĊĊĠĠĠ Ġoverride Ġfun Ġset ( key : ĠString , Ġvalue : ĠList < *> ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġdata [ key ] Ġ== Ġvalue ) Ġreturn ĊĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue ?. toList () ĊĠĠĠĠĠĠĠ ĠonChange () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠgetList ( key : ĠString ): ĠList < *> ? Ġ= Ġdata [ key ] Ġas ? ĠMutable List < Any ?> ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠCS JsonObject > Ġget JsonObject List ( ĊĠĠĠĠĠĠĠ Ġkey : ĠString , Ġtype : ĠK Class < T >): ĠList < T >? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġis First Item JsonObject Ġ= Ġ(( data [ key ] Ġas ? ĠList <* >) ?. at ( 0 ) Ġas ? ĠT ) Ġ!= Ġnull ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is First Item JsonObject ) Ġdata [ key ] Ġas ĠList < T > Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( data [ key ] Ġas ? ĠList < Mutable Map < String , ĠAny ? >>) ?. let Ġ{ Ġlist Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . create JsonObject List ( list ). also Ġ{ Ġdata [ key ] Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠCS JsonObject > Ġset ( key : ĠString , Ġvalue : ĠT ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġdata [ key ] Ġ== Ġvalue ) Ġreturn ĊĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue ĊĠĠĠĠĠĠĠ ĠonChange () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠCS JsonObject > Ġget JsonObject ( key : ĠString , Ġtype : ĠK Class < T >): ĠT ? Ġ= ĊĠĠĠĠĠĠĠ Ġdata [ key ] Ġas ? ĠT Ġ?: Ġ( data [ key ] Ġas ? ĠMutable Map < String , ĠAny ?> )?. let Ġ{ Ġmap Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtype . create JsonObject ( map ). also Ġ{ Ġdata [ key ] Ġ= Ġit Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġsuper . toString () Ġ+ ĠtoJson String ( formatted Ġ= Ġtrue ) ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= ĊĠĠĠĠĠĠĠ Ġ( other Ġas ? ĠCSS tore JsonObject )?. let Ġ{ Ġit . data Ġ== Ġdata Ġ} Ġ?: Ġsuper . equals ( other ) ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= Ġdata . hashCode () ĊĊĠĠĠ Ġoverride Ġfun Ġiterator (): ĠIterator < Map . Entry < String , ĠAny ? >> Ġ= ĊĠĠĠĠĠĠĠ Ġsuper < CS JsonObject >. iterator () ĊĊĠĠĠ Ġprotected Ġvar Ġis Bulk Save Ġ= Ġfalse ĊĠĠĠ Ġprivate Ġvar Ġis Bulk Save Dirty Ġ= Ġfalse ĊĊĠĠĠ Ġoverride Ġfun Ġbulk Save () Ġ= Ġapply Ġ{ ĊĠĠĠĠĠĠĠ Ġis Bulk Save Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( is Bulk Save Dirty ) ĠonChanged () ĊĠĠĠĠĠĠĠ Ġis Bulk Save Dirty Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġis Bulk Save Ġ= Ġfalse ĊĠĠĠ Ġ} Ċ } Ċ Ċ //@ Suppress (" unchecked _ cast ") Ċ // open Ġclass ĠCS JsonObject () Ġ: ĠIterable < Map . Entry < String , ĠAny ? >>, ĠCSS tore , ĠClose able Ġ{ Ċ // Ċ // ĠĠĠ Ġconstructor ( map : ĠMutable Map < String , ĠAny ?> ) Ġ: Ġthis () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġload ( map ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġconstructor ( data : ĠCSS tore ) Ġ: Ġthis () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġload ( data ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġconstructor ( data : ĠString ) Ġ: Ġthis () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġload ( data ) Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġval Ġdata Ġ= Ġmutable Map Of < String , ĠAny ?> () Ċ // ĠĠĠ Ġoverride Ġval Ġevent Changed Ġ= Ġevent < CSS tore >() Ċ // ĠĠĠ Ġfinal Ġoverride Ġfun Ġload ( store : ĠCSS tore ) Ġ= Ġload ( store . data ) Ċ // Ċ // ĠĠĠ Ġfun Ġload ( data : ĠMap < String , ĠAny ?> ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġthis . data . put All ( data ) Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! is Bulk Save ) ĠonChanged () Ċ // ĠĠĠĠĠĠĠ Ġelse Ġis Bulk Save Dirty Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġon Loaded () Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġopen Ġfun Ġon Loaded () Ġ= ĠUnit Ċ // Ċ // ĠĠĠ Ġopen Ġfun ĠonChanged () Ġ= Ġevent Changed . fire ( this ) Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġclear () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġdata . clear () Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! is Bulk Save ) ĠonChanged () Ċ // ĠĠĠĠĠĠĠ Ġelse Ġis Bulk Save Dirty Ġ= Ġtrue Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġclear ( key : ĠString ) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( data . remove ( key ) Ġ== Ġnull ) Ġreturn Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! is Bulk Save ) ĠonChanged () Ċ // ĠĠĠĠĠĠĠ Ġelse Ġis Bulk Save Dirty Ġ= Ġtrue Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġset ( key : ĠString , Ġvalue : ĠString ?) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġdata [ key ] Ġ== Ġvalue ) Ġreturn Ċ // ĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! is Bulk Save ) ĠonChanged () Ċ // ĠĠĠĠĠĠĠ Ġelse Ġis Bulk Save Dirty Ġ= Ġtrue Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġset ( key : ĠString , Ġvalue : ĠMap < String , Ġ*> ?) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġdata [ key ] Ġ== Ġvalue ) Ġreturn Ċ // ĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue ?. toMap () Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! is Bulk Save ) ĠonChanged () Ċ // ĠĠĠĠĠĠĠ Ġelse Ġis Bulk Save Dirty Ġ= Ġtrue Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġget Map ( key : ĠString ) Ġ= Ġdata [ key ] Ġas ? ĠMutable Map < String , ĠAny ?> Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġset ( key : ĠString , Ġvalue : ĠArray < *> ?) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġdata [ key ] Ġ== Ġvalue ) Ġreturn Ċ // ĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue ?. toArray () Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! is Bulk Save ) ĠonChanged () Ċ // ĠĠĠĠĠĠĠ Ġelse Ġis Bulk Save Dirty Ġ= Ġtrue Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġget Array ( key : ĠString ): ĠArray < *> ? Ġ= ĠgetList ( key )?. to Typed Array () Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġset ( key : ĠString , Ġvalue : ĠList < *> ?) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġdata [ key ] Ġ== Ġvalue ) Ġreturn Ċ // ĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue ?. toList () Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! is Bulk Save ) ĠonChanged () Ċ // ĠĠĠĠĠĠĠ Ġelse Ġis Bulk Save Dirty Ġ= Ġtrue Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun ĠgetList ( key : ĠString ): ĠList < *> ? Ġ= Ġdata [ key ] Ġas ? ĠMutable List < Any ?> Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠCSS tore JsonObject > Ġget JsonObject List ( key : ĠString , Ġtype : ĠK Class < T >): ĠList < T >? Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġval Ġis First Item JsonObject Ġ= Ġ(( data [ key ] Ġas ? ĠList <* >) ?. at ( 0 ) Ġas ? ĠT ) Ġ!= Ġnull Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( is First Item JsonObject ) Ġdata [ key ] Ġas ĠList < T > Ġelse Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ( data [ key ] Ġas ? ĠList < Mutable Map < String , ĠAny ? >>) ?. let Ġ{ Ġlist Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtype . create JsonObject List ( list ). also Ġ{ Ġdata [ key ] Ġ= Ġit Ġ} Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠCSS tore JsonObject > Ġset ( key : ĠString , Ġvalue : ĠT ?) Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( value Ġ!= Ġnull Ġ&& Ġdata [ key ] Ġ== Ġvalue ) Ġreturn Ċ // ĠĠĠĠĠĠĠ Ġdata [ key ] Ġ= Ġvalue Ċ // ĠĠĠĠĠĠĠ Ġif Ġ(! is Bulk Save ) ĠonChanged () Ċ // ĠĠĠĠĠĠĠ Ġelse Ġis Bulk Save Dirty Ġ= Ġtrue Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġ< T Ġ: ĠCSS tore JsonObject > Ġget JsonObject ( key : ĠString , Ġtype : ĠK Class < T >): ĠT ? Ġ= Ċ // ĠĠĠĠĠĠĠ Ġdata [ key ] Ġas ? ĠT Ġ?: Ġ( data [ key ] Ġas ? ĠMutable Map < String , ĠAny ?> )?. let Ġ{ Ġmap Ġ-> Ċ // ĠĠĠĠĠĠĠĠĠĠĠ Ġtype . create JsonObject ( map ). also Ġ{ Ġdata [ key ] Ġ= Ġit Ġ} Ċ // ĠĠĠĠĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun ĠtoString () Ġ= Ġsuper . toString () Ġ+ ĠtoJson String ( formatted Ġ= Ġtrue ) Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?) Ġ= Ċ // ĠĠĠĠĠĠĠ Ġ( other Ġas ? ĠCSS tore JsonObject )?. let Ġ{ Ġit . data Ġ== Ġdata Ġ} Ġ?: Ġsuper . equals ( other ) Ċ // Ċ // ĠĠĠ Ġoverride Ġfun ĠhashCode () Ġ= Ġdata . hashCode () Ċ // Ċ // ĠĠĠ Ġprotected Ġvar Ġis Bulk Save Ġ= Ġfalse Ċ // ĠĠĠ Ġprivate Ġvar Ġis Bulk Save Dirty Ġ= Ġfalse Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġbulk Save () Ġ= Ġapply Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġis Bulk Save Ġ= Ġtrue Ċ // ĠĠĠĠĠĠĠ Ġreturn Ġthis Ċ // ĠĠĠ Ġ} Ċ // Ċ // ĠĠĠ Ġoverride Ġfun Ġclose () Ġ{ Ċ // ĠĠĠĠĠĠĠ Ġif Ġ( is Bulk Save Dirty ) ĠonChanged () Ċ // ĠĠĠĠĠĠĠ Ġis Bulk Save Dirty Ġ= Ġfalse Ċ // ĠĠĠĠĠĠĠ Ġis Bulk Save Ġ= Ġfalse Ċ // ĠĠĠ Ġ} Ċ //} ĊĊĊĊ