package Ġnl . ent re co . domain . model Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġentre co Ġon Ġ 1 6 / 0 1 / 2 0 1 8 . Ċ Ġ*/ Ċ data Ġclass ĠLive Stat ( val Ġplayer Id : ĠLong , Ġval Ġtotal Score : ĠInt , Ġval Ġn D arts : ĠInt , Ġval Ġn 1 8 0 : ĠInt , Ġval Ġn 1 4 0 : ĠInt , Ġval Ġn 1 0 0 : ĠInt , Ġval Ġn 6 0 : ĠInt , Ġval Ġn 2 0 : ĠInt , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġn At Checkout : ĠInt , Ġval Ġn Check outs Ġ: ĠInt , Ġval Ġn Break s Ġ: ĠInt , Ġval Ġhighest : ĠList < Int >, Ġval Ġhighest Co : ĠList < Int >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Totals : ĠMap < Int , ĠInt >, Ġval Ġset D arts : ĠMap < Int , ĠInt >, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Out s : ĠMap < Int , ĠInt >, Ġval Ġset Le gs : ĠMap < Int , ĠInt > ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĊĠĠĠ Ġoperator Ġfun Ġplus ( live Stat : ĠLive Stat ?): ĠLive Stat Ġ{ ĊĠĠĠĠĠĠĠ Ġlive Stat ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhigh Ġ= Ġscore List ( live Stat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġhigh Co Ġ= Ġcheckout List ( live Stat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Totals Ġ= Ġset Totals ( live Stat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset D arts Ġ= Ġset D arts ( live Stat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Out s Ġ= Ġset Out s ( live Stat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġset Le gs Ġ= Ġset Le gs ( live Stat ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġcopy ( total Score Ġ= Ġtotal Score Ġ+ Ġlive Stat . total Score , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn D arts Ġ= Ġn D arts Ġ+ Ġlive Stat . n D arts , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn 1 8 0 Ġ= Ġn 1 8 0 Ġ+ Ġlive Stat . n 1 8 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn 1 4 0 Ġ= Ġn 1 4 0 Ġ+ Ġlive Stat . n 1 4 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn 1 0 0 Ġ= Ġn 1 0 0 Ġ+ Ġlive Stat . n 1 0 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn 6 0 Ġ= Ġn 6 0 Ġ+ Ġlive Stat . n 6 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn 2 0 Ġ= Ġn 2 0 Ġ+ Ġlive Stat . n 2 0 , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn At Checkout Ġ= Ġn At Checkout Ġ+ Ġlive Stat . n At Checkout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn Check outs Ġ= Ġn Check outs Ġ+ Ġlive Stat . n Check outs , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġn Break s Ġ= Ġn Break s Ġ+ Ġlive Stat . n Break s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhighest Ġ= Ġhigh , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhighest Co Ġ= Ġhigh Co , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Totals Ġ= Ġset Totals , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset D arts Ġ= Ġset D arts , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Out s Ġ= Ġset Out s , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Le gs Ġ= Ġset Le gs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġscore List ( live Stat : ĠLive Stat ): ĠList < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhigh Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ Ġhigh . addAll ( highest ) ĊĠĠĠĠĠĠĠ Ġhigh . addAll ( live Stat . highest ) ĊĠĠĠĠĠĠĠ Ġreturn Ġhigh . sorted (). reversed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġcheckout List ( live Stat : ĠLive Stat ): ĠList < Int > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġhigh Ġ= ĠArrayList < Int >() ĊĠĠĠĠĠĠĠ Ġhigh . addAll ( highest Co ) ĊĠĠĠĠĠĠĠ Ġhigh . addAll ( live Stat . highest Co ) ĊĠĠĠĠĠĠĠ Ġreturn Ġhigh . sorted (). reversed () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Totals ( live Stat : ĠLive Stat ): ĠMap < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtotals Ġ= ĠHashMap < Int , ĠInt >( set Totals ) ĊĠĠĠĠĠĠĠ Ġlive Stat . set Totals . forEach Ġ{ Ġ( set , Ġtot ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġtotals . get OrDefault ( set , Ġset Totals [ set ] Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtotals [ set ] Ġ= Ġcurrent Ġ+ Ġtot ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġtotals ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset D arts ( live Stat : ĠLive Stat ): ĠMap < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġd arts Ġ= ĠHashMap ( set D arts ) ĊĠĠĠĠĠĠĠ Ġlive Stat . set D arts . forEach Ġ{ Ġ( set , Ġtot ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġd arts . get OrDefault ( set , Ġset D arts [ set ] Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġd arts [ set ] Ġ= Ġcurrent Ġ+ Ġtot ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġd arts ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Out s ( live Stat : ĠLive Stat ): ĠMap < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġout s Ġ= ĠHashMap ( set Out s ) ĊĠĠĠĠĠĠĠ Ġlive Stat . set Out s . forEach Ġ{ Ġ( set , Ġtot ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġout s . get OrDefault ( set , Ġset Out s [ set ] Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġout s [ set ] Ġ= Ġcurrent Ġ+ Ġtot ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġout s ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġset Le gs ( live Stat : ĠLive Stat ): ĠMap < Int , ĠInt > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġle gs Ġ= ĠHashMap ( set Le gs ) ĊĠĠĠĠĠĠĠ Ġlive Stat . set Le gs . forEach Ġ{ Ġ( set , Ġtot ) Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġcurrent Ġ= Ġle gs . get OrDefault ( set , Ġset Le gs [ set ] Ġ?: Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġle gs [ set ] Ġ= Ġcurrent Ġ+ Ġtot ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġle gs ĊĠĠĠ Ġ} Ċ }