package Ġorg . on flow . sdk Ċ Ċ import Ġcom . google . common . io . Base Encoding Ċ import Ġcom . google . protobuf . Timestamp Ċ import Ġjava . security . Message Digest Ċ import Ġjava . time . LocalDateTime Ċ import Ġjava . time . Zone Offset Ċ Ċ fun ĠByteArray . bytes To Hex (): ĠString Ġ= ĠBase Encoding . base 1 6 (). lower Case (). encode ( this ) Ċ Ċ fun ĠString . hex ToBytes (): ĠByteArray Ġ= ĠBase Encoding . base 1 6 (). lower Case (). decode ( ĊĠĠĠ Ġif Ġ( this . lowercase (). startsWith (" 0 x ")) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . substring ( 2 ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġthis ĊĠĠĠ Ġ} Ċ ) Ċ Ċ fun ĠTimestamp . as LocalDateTime (): ĠLocalDateTime Ġ= ĠLocalDateTime . of Epoch Second ( this . seconds , Ġthis . nan os , ĠZone Offset . UTC ) Ċ Ċ fun ĠLocalDateTime . as Timestamp (): ĠTimestamp Ġ= ĠTimestamp . newBuilder () ĊĠĠĠ Ġ. set Seconds ( this . to Epoch Second ( Zone Offset . UTC )) ĊĠĠĠ Ġ. set Nan os ( this . nano ) ĊĠĠĠ Ġ. build () Ċ Ċ fun ĠByteArray . sha 3 2 5 6 Hash (): ĠByteArray Ġ= ĠMessage Digest . getInstance (" SHA 3 - 2 5 6 ", Ġ" BC "). digest ( this ) Ċ Ċ fun ĠByteArray . sha 2 2 5 6 Hash (): ĠByteArray Ġ= ĠMessage Digest . getInstance (" SHA 2 - 2 5 6 ", Ġ" BC "). digest ( this ) Ċ Ċ fun Ġfixed Size ( bytes : ĠByteArray , Ġsize : ĠInt ): ĠByteArray Ġ{ ĊĠĠĠ Ġif Ġ( bytes . size Ġ> Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠ Ġthrow ĠIllegalArgumentException (" must Ġhave Ġno Ġmore Ġthan Ġ$ size Ġbytes Ġlong ") ĊĠĠĠ Ġ} ĊĠĠĠ Ġreturn Ġif Ġ( bytes . size Ġ< Ġsize ) Ġ{ ĊĠĠĠĠĠĠĠ ĠByteArray ( size Ġ- Ġbytes . size ) Ġ+ Ġbytes ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġbytes ĊĠĠĠ Ġ} Ċ } Ċ