package Ġorg . jetbrains . sk ia Ċ Ċ class ĠI Point ( val Ġx : ĠInt , Ġval Ġy : ĠInt ) Ġ{ ĊĊĠĠĠ Ġfun Ġoffset ( dx : ĠInt , Ġdy : ĠInt ): ĠI Point Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠI Point ( x Ġ+ Ġdx , Ġy Ġ+ Ġdy ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġoffset ( vec : ĠI Point ): ĠI Point Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġoffset ( vec . x , Ġvec . y ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġval ĠisEmpty : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġx Ġ<= Ġ 0 Ġ|| Ġy Ġ<= Ġ 0 ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ=== Ġthis ) Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġif Ġ( other Ġ! is ĠI Point ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġif Ġ( x Ġ!= Ġother . x ) Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġreturn Ġy Ġ== Ġother . y ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠPR IME Ġ= Ġ 5 9 ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġ 1 ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġ* ĠPR IME Ġ+ Ġx ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġresult Ġ* ĠPR IME Ġ+ Ġy ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ" I Point (_ x =$ x , Ġ_ y =$ y )" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠZERO Ġ= ĠI Point ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġto I Point ( p : ĠLong ): ĠI Point Ġ= ĠI Point (( p Ġ ush r Ġ 3 2 ). toInt (), Ġ( p Ġand Ġ- 1 ). toInt ()) Ċ