package Ġorg . kin . sdk . base . tools Ċ Ċ import Ġorg . kin . sdk . base . tools . sha 2 2 4 . SHA 2 2 4 Digest Ċ import Ġjava . nio . ByteBuffer Ċ import Ġjava . util . Bit Set Ċ import Ġjava . util . UUID Ċ Ċ fun ĠInt . int To ByteArray (): ĠByteArray Ġ= ĊĠĠĠ Ġbyte ArrayOf ( ĊĠĠĠĠĠĠĠ Ġthis . to Byte (), ĊĠĠĠĠĠĠĠ Ġ( this Ġ ush r Ġ 8 ). to Byte (), ĊĠĠĠĠĠĠĠ Ġ( this Ġ ush r Ġ 1 6 ). to Byte (), ĊĠĠĠĠĠĠĠ Ġ( this Ġ ush r Ġ 2 4 ). to Byte () ĊĠĠĠ Ġ) Ċ Ċ fun ĠByteArray . byteArray ToInt (): ĠInt Ġ{ ĊĠĠĠ Ġif Ġ( size Ġ> Ġ 4 ) Ġthrow Ġjava . lang . RuntimeException (" Too Ġbig Ġto Ġfit Ġin Ġint ") ĊĠĠĠ Ġreturn Ġ( this [ 0 ]. toInt () Ġand Ġ 0 xFF Ġshl Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġ. or ( this [ 1 ]. toInt () Ġand Ġ 0 xFF Ġshl Ġ 8 ) ĊĠĠĠĠĠĠĠ Ġ. or ( this [ 2 ]. toInt () Ġand Ġ 0 xFF Ġshl Ġ 1 6 ) ĊĠĠĠĠĠĠĠ Ġ. or ( this [ 3 ]. toInt () Ġand Ġ 0 xFF Ġshl Ġ 2 4 ) Ċ } Ċ Ċ internal Ġfun ĠByteArray . print Bits ( ĊĠĠĠ Ġprefix : ĠString Ġ= Ġ"", ĊĠĠĠ Ġcollapsed : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġshow Byte Offset : ĠBoolean Ġ= Ġtrue Ċ ) Ġ= Ġto Bit Set (). print Bits ( prefix , Ġcollapsed , Ġshow Byte Offset , Ġsize Ġ* Ġ 8 ) Ċ Ċ internal Ġfun ĠByteArray . to Bit Set (): ĠBit Set Ġ= ĠBit Set . valueOf ( ByteBuffer . wrap ( this )) Ċ Ċ internal Ġfun ĠBit Set . print Bits ( ĊĠĠĠ Ġprefix : ĠString Ġ= Ġ"", ĊĠĠĠ Ġcollapsed : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġshow Byte Offset : ĠBoolean Ġ= Ġtrue , ĊĠĠĠ Ġsize : ĠInt Ġ= Ġsize () Ċ ) Ġ{ ĊĠĠĠ Ġfun Ġmap Bit ( b : ĠBoolean ): ĠString Ġ= Ġif Ġ( b ) Ġ" 1 " Ġelse Ġ" 0 " ĊĠĠĠ Ġprintln ("$ prefix :\ n Ġ Ġ${ bits ( size ) ĊĠĠĠĠĠĠĠ Ġ. take ( size ) ĊĠĠĠĠĠĠĠ Ġ. reversed () ĊĠĠĠĠĠĠĠ Ġ. map Indexed Ġ{ Ġindex , Ġb Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( collapsed ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmap Bit ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ% Ġ 8 Ġ== Ġ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġprefix Sym Ġ= Ġ( if Ġ( index Ġ== Ġ 0 ) Ġ" |" Ġelse Ġ"") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( show Byte Offset ) Ġ"$ prefix Sym ${ ( size Ġ- Ġ 1 Ġ- Ġindex ) Ġ/ Ġ 8 }) Ġ" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ"$ prefix Sym ${ map Bit ( b )}" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ% Ġ 8 Ġ== Ġ 4 Ġ-> Ġ" Ġ" Ġ+ Ġmap Bit ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġindex Ġ% Ġ 8 Ġ== Ġ 7 Ġ-> Ġmap Bit ( b ) Ġ+ Ġ" |" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġmap Bit ( b ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ. join ToString ( separator Ġ= Ġ"") }" ĊĠĠĠ Ġ) Ċ } Ċ Ċ internal Ġfun ĠBit Set . bits ( size : ĠInt Ġ= Ġsize ()): ĠList < Boolean > Ġ= Ġwith ( ArrayList < Boolean >( size )) Ġ{ ĊĠĠĠ Ġfor Ġ( i Ġin Ġ 0 Ġuntil Ġsize ()) Ġadd ( this @ bits . get ( i )) ĊĠĠĠ Ġthis Ċ } Ċ Ċ fun ĠUUID . toByteArray (): ĠByteArray Ġ= ĊĠĠĠ Ġwith ( ByteBuffer . wrap ( ByteArray ( 1 6 ))) Ġ{ ĊĠĠĠĠĠĠĠ Ġput Long ( most Sign ificant Bits ) ĊĠĠĠĠĠĠĠ Ġput Long ( least Sign ificant Bits ) ĊĠĠĠĠĠĠĠ Ġarray () ĊĠĠĠ Ġ} Ċ Ċ infix Ġfun ĠByte . sh l ( i : ĠInt ): ĠByte Ġ= Ġ( toInt () Ġshl Ġi ). to Byte () Ċ Ċ infix Ġfun ĠByte . ush r ( i : ĠInt ): ĠByte Ġ= Ġ( toInt () Ġ ush r Ġi ). to Byte () Ċ Ċ fun ĠByteArray . sub ByteArray ( startIndex : ĠInt , Ġlength : ĠInt ): ĠByteArray Ġ= ĊĠĠĠ ĠByteArray ( length ). apply Ġ{ ĊĠĠĠĠĠĠĠ ĠSystem . arraycopy ( this @ sub ByteArray , ĠstartIndex , Ġthis @ apply , Ġ 0 , Ġlength ) ĊĠĠĠ Ġ} Ċ Ċ fun ĠByteArray . sha 2 2 4 (): ĠByteArray Ġ{ ĊĠĠĠ Ġval Ġmd Ġ= ĠSHA 2 2 4 Digest () ĊĠĠĠ Ġmd . update ( this , Ġ 0 , Ġthis . size ) ĊĠĠĠ Ġreturn ĠByteArray ( 2 9 ). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġmd . do Final ( this , Ġ 0 ) ĊĠĠĠ Ġ} Ċ } Ċ