package Ġcom . github . lip in skip aw el . network Ċ Ċ import Ġcom . github . lip in skip aw el . board . engine . Direction Ċ import Ġcom . github . lip in skip aw el . board . engine . Move Ċ Ċ class ĠEn velope Ġprivate Ġconstructor ( private Ġval Ġencoded Data : ĠByteArray ) Ġ{ ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġmethod Ġtake ĠMove Ġand Ġconverts Ġit Ġinto ĠEn velope . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġof ( move : ĠMove ): ĠEn velope Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġmove ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. move ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġjava . lang . String . valueOf ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. stream () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. collect ( java . util . stream . Collectors . join ing ("," )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠEn velope ( Protocol Client . create Client (). convert ( data )) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠThis Ġmethod Ġconverts ĠByteArray Ġto ĠMove . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġto Move ( bytes : ĠByteArray ): ĠMove Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirections Ġ= Ġbytes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to Char () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġjava . lang . String . valueOf ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce Right Ġ{ Ġs , Ġacc Ġ-> Ġs . plus ( acc ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. split (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠDirection . valueOf ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. to Mutable List () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠMove ( directions ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġmove (): ĠMove Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġdirections Ġ= ĠProtocol Reader ( encoded Data ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. data () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . to Char () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġjava . lang . String . valueOf ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. reduce Right Ġ{ Ġs , Ġacc Ġ-> Ġs . plus ( acc ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. split (",") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ ĠDirection . valueOf ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĠMove ( directions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġto ByteArray (): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġencoded Data ĊĠĠĠ Ġ} Ċ } Ċ