package Ġxyz . y hs j . k music . utils Ċ Ċ import Ġjava . io . Unsupported EncodingException Ċ Ċ object ĠBase 6 4 Ġ{ ĊĊĊĠĠĠ Ġprivate Ġval Ġbase 6 4 Encode Chars Ġ= Ġchar ArrayOf (' A ', Ġ' B ', Ġ' C ', Ġ' D ', Ġ' E ', Ġ' F ', Ġ' G ', Ġ' H ', Ġ' I ', Ġ' J ', Ġ' K ', Ġ' L ', Ġ' M ', Ġ' N ', Ġ' O ', Ġ' P ', Ġ' Q ', Ġ' R ', Ġ' S ', Ġ' T ', Ġ' U ', Ġ' V ', Ġ' W ', Ġ' X ', Ġ' Y ', Ġ' Z ', Ġ' a ', Ġ' b ', Ġ' c ', Ġ' d ', Ġ' e ', Ġ' f ', Ġ' g ', Ġ' h ', Ġ' i ', Ġ' j ', Ġ' k ', Ġ' l ', Ġ' m ', Ġ' n ', Ġ' o ', Ġ' p ', Ġ' q ', Ġ' r ', Ġ' s ', Ġ' t ', Ġ' u ', Ġ' v ', Ġ' w ', Ġ' x ', Ġ' y ', Ġ' z ', Ġ' 0 ', Ġ' 1 ', Ġ' 2 ', Ġ' 3 ', Ġ' 4 ', Ġ' 5 ', Ġ' 6 ', Ġ' 7 ', Ġ' 8 ', Ġ' 9 ', Ġ'+', Ġ'/') ĊĊĠĠĠ Ġprivate Ġval Ġbase 6 4 Decode Chars Ġ= Ġbyte ArrayOf (- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ 6 2 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ 6 3 , Ġ 5 2 , Ġ 5 3 , Ġ 5 4 , Ġ 5 5 , Ġ 5 6 , Ġ 5 7 , Ġ 5 8 , Ġ 5 9 , Ġ 6 0 , Ġ 6 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ 0 , Ġ 1 , Ġ 2 , Ġ 3 , Ġ 4 , Ġ 5 , Ġ 6 , Ġ 7 , Ġ 8 , Ġ 9 , Ġ 1 0 , Ġ 1 1 , Ġ 1 2 , Ġ 1 3 , Ġ 1 4 , Ġ 1 5 , Ġ 1 6 , Ġ 1 7 , Ġ 1 8 , Ġ 1 9 , Ġ 2 0 , Ġ 2 1 , Ġ 2 2 , Ġ 2 3 , Ġ 2 4 , Ġ 2 5 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ 2 6 , Ġ 2 7 , Ġ 2 8 , Ġ 2 9 , Ġ 3 0 , Ġ 3 1 , Ġ 3 2 , Ġ 3 3 , Ġ 3 4 , Ġ 3 5 , Ġ 3 6 , Ġ 3 7 , Ġ 3 8 , Ġ 3 9 , Ġ 4 0 , Ġ 4 1 , Ġ 4 2 , Ġ 4 3 , Ġ 4 4 , Ġ 4 5 , Ġ 4 6 , Ġ 4 7 , Ġ 4 8 , Ġ 4 9 , Ġ 5 0 , Ġ 5 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 , Ġ- 1 ) ĊĊĠĠĠ Ġfun Ġencode ( data : ĠByteArray ): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġdata . size ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġb 1 : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġb 2 : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġb 3 : ĠInt ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġlen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 Ġ= Ġ(( data [ i ++ ]). toInt () Ġand Ġ 0 xff ). toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġlen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( base 6 4 Encode Chars [ b 1 . ush r ( 2 )]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( base 6 4 Encode Chars [ b 1 Ġand Ġ 0 x 3 Ġshl Ġ 4 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" ==" ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 Ġ= Ġ( data [ i ++ ]). toInt () Ġand Ġ 0 xff ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( i Ġ== Ġlen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( base 6 4 Encode Chars [ b 1 . ush r ( 2 )]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( base 6 4 Encode Chars [ b 1 Ġand Ġ 0 x 0 3 Ġshl Ġ 4 Ġor Ġ( b 2 Ġand Ġ 0 xf 0 ). ush r ( 4 )]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( base 6 4 Encode Chars [ b 2 Ġand Ġ 0 x 0 f Ġshl Ġ 2 ]) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (" =") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 Ġ= Ġ( data [ i ++ ]). toInt () Ġand Ġ 0 xff ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( base 6 4 Encode Chars [ b 1 . ush r ( 2 )]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( base 6 4 Encode Chars [ b 1 Ġand Ġ 0 x 0 3 Ġshl Ġ 4 Ġor Ġ( b 2 Ġand Ġ 0 xf 0 ). ush r ( 4 )]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( base 6 4 Encode Chars [ b 2 Ġand Ġ 0 x 0 f Ġshl Ġ 2 Ġor Ġ( b 3 Ġand Ġ 0 xc 0 ). ush r ( 6 )]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append ( base 6 4 Encode Chars [ b 3 Ġand Ġ 0 x 3 f ]) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Throws ( Unsupported EncodingException :: class ) ĊĠĠĠ Ġfun Ġdecode ( str : ĠString ): ĠByteArray Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsb Ġ= ĠStringBuffer () ĊĠĠĠĠĠĠĠ Ġval Ġdata Ġ= Ġstr . toByteArray ( charset (" US - ASCII ")) ĊĠĠĠĠĠĠĠ Ġval Ġlen Ġ= Ġdata . size ĊĠĠĠĠĠĠĠ Ġvar Ġi Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġvar Ġb 1 : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġb 2 : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġb 3 : ĠInt ĊĠĠĠĠĠĠĠ Ġvar Ġb 4 : ĠInt ĊĠĠĠĠĠĠĠ Ġwhile Ġ( i Ġ< Ġlen ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġb 1 Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 1 Ġ= Ġbase 6 4 Decode Chars [( data [ i ++ ]). toInt ()]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( i Ġ< Ġlen Ġ&& Ġb 1 Ġ== Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b 1 Ġ== Ġ- 1 ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġb 2 Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 2 Ġ= Ġbase 6 4 Decode Chars [( data [ i ++ ]). toInt ()]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( i Ġ< Ġlen Ġ&& Ġb 2 Ġ== Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b 2 Ġ== Ġ- 1 ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (( b 1 Ġshl Ġ 2 Ġor Ġ( b 2 Ġand Ġ 0 x 3 0 ). ush r ( 4 )). to Char ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġb 3 Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 Ġ= Ġdata [ i ++ ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b 3 Ġ== Ġ 6 1 ) Ġreturn Ġsb . toString (). toByteArray ( charset (" ISO - 8 8 5 9 - 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 3 Ġ= Ġbase 6 4 Decode Chars [ b 3 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( i Ġ< Ġlen Ġ&& Ġb 3 Ġ== Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b 3 Ġ== Ġ- 1 ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (( b 2 Ġand Ġ 0 x 0 f Ġshl Ġ 4 Ġor Ġ( b 3 Ġand Ġ 0 x 3 c ). ush r ( 2 )). to Char ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/* Ġb 4 Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdo Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 4 Ġ= Ġdata [ i ++ ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b 4 Ġ== Ġ 6 1 ) Ġreturn Ġsb . toString (). toByteArray ( charset (" ISO - 8 8 5 9 - 1 ")) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġb 4 Ġ= Ġbase 6 4 Decode Chars [ b 4 ]. toInt () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġwhile Ġ( i Ġ< Ġlen Ġ&& Ġb 4 Ġ== Ġ- 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( b 4 Ġ== Ġ- 1 ) Ġbreak ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsb . append (( b 3 Ġand Ġ 0 x 0 3 Ġshl Ġ 6 Ġor Ġb 4 ). to Char ()) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġsb . toString (). toByteArray ( charset (" ISO - 8 8 5 9 - 1 ")) ĊĠĠĠ Ġ} ĊĊ Ċ }