package Ġorg . kin . stell ar fork Ċ Ċ import Ġorg . kin . stell ar fork . Util . padded ByteArray Ċ import Ġorg . kin . stell ar fork . codec . Hex . Companion . decode Hex Ċ import Ġorg . kin . stell ar fork . codec . Hex . Companion . encode Hex Ċ import Ġjava . util . Arrays Ċ Ċ abstract Ġclass ĠM emo Hash Abstract ( ĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġ 3 2 Ġbytes Ġlong Ġarray Ġcontained Ġin Ġthis Ġmemo . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġvar Ġbytes : ĠByteArray Ċ ) Ġ: ĠM emo () Ġ{ ĊĠĠĠ Ġconstructor ( hex String : ĠString ) Ġ: Ġthis ( decode Hex ( hex String . toCharArray ())) Ġ{} ĊĊĠĠĠ Ġinit Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġbytes Ġ= Ġbytes ĊĠĠĠĠĠĠĠ Ġif Ġ( bytes . size Ġ< Ġ 3 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbytes Ġ= Ġpadded ByteArray ( bytes , Ġ 3 2 ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( bytes . size Ġ> Ġ 3 2 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠM emo Too Long Exception (" ME MO _ HASH Ġcan Ġcontain Ġ 3 2 Ġbytes Ġat Ġmax .") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġthis . bytes Ġ= Ġbytes ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠReturns Ġhex Ġrepresentation Ġof Ġbytes Ġcontained Ġin Ġthis Ġmemo . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠExample : ĊĠĠĠĠ Ġ* Ġ` ĊĠĠĠĠ Ġ* ĠM emo Hash Ġmemo Ġ= Ġnew ĠM emo Hash (" 4 1 4 2 4 3 4 4 4 5 "); ĊĠĠĠĠ Ġ* Ġmemo . get Hex Value (); Ġ// Ġ 4 1 4 2 4 3 4 4 4 5 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 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 ĊĠĠĠĠ Ġ* Ġmemo . get Trim med Hex Value (); Ġ// Ġ 4 1 4 2 4 3 4 4 4 5 ĊĠĠĠ Ġ` Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġhex Value : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠString ( encode Hex ( bytes )) ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠReturns Ġhex Ġrepresentation Ġof Ġbytes Ġcontained Ġin Ġthis Ġmemo Ġuntil Ġnull Ġbyte Ġ( 0 x 0 0 ) Ġis Ġfound . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠExample : ĊĠĠĠĠ Ġ* Ġ` ĊĠĠĠĠ Ġ* ĠM emo Hash Ġmemo Ġ= Ġnew ĠM emo Hash (" 4 1 4 2 4 3 4 4 4 5 "); ĊĠĠĠĠ Ġ* Ġmemo . get Hex Value (); Ġ// Ġ 4 1 4 2 4 3 4 4 4 5 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 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 ĊĠĠĠĠ Ġ* Ġmemo . get Trim med Hex Value (); Ġ// Ġ 4 1 4 2 4 3 4 4 4 5 ĊĠĠĠ Ġ` Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġtrimmed Hex Value : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġhex Value . split (" 0 0 "). to Typed Array ()[ 0 ] ĊĊĠĠĠ Ġabstract Ġoverride Ġfun Ġto X dr (): Ġorg . kin . stell ar fork . xd r . Memo ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ== Ġnull Ġ|| Ġjava Class Ġ!= Ġother . java Class ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġval Ġthat Ġ= Ġother Ġas ĠM emo Hash Abstract ĊĠĠĠĠĠĠĠ Ġreturn ĠArrays . equals ( bytes , Ġthat . bytes ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ 3 1 Ġ+ Ġbytes . content HashCode () ĊĠĠĠ Ġ} Ċ } Ċ