package Ġsim Ċ Ċ import Ġde . m 3 y . k format . Table Ċ import Ġde . m 3 y . k format . table Ċ import Ġsim . rotation . Rotation Ċ import Ġsim . stats model .* Ċ import Ġjava . text . Decimal Format Ċ Ċ object ĠSim Stats Printer Ġ{ ĊĠĠĠ Ġval Ġdf Ġ= ĠDecimal Format ("# , ### . ## ") ĊĊĠĠĠ Ġfun Ġpre com bat Stats ( iteration : ĠSim Iteration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprint Pre com bat Stats ( iteration ) ĊĊĠĠĠĠĠĠĠ Ġprintln (" ACTIVE ĠRA ID ĠBU FF S ") ĊĠĠĠĠĠĠĠ Ġiteration . subject . rotation . rules . filter Ġ{ Ġit . phase Ġ== ĠRotation . Phase . RA ID _ OR _ PAR TY Ġ}. forEach Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Ġ- Ġ${ it . ability . name }") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġprintln () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprint Buff s ( title : ĠString , Ġparticipants : ĠList < List < Buff Break down >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġparticipants . forEach Ġ{ Ġrows Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"$ title \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Name ", Ġ" Applied Count Avg ", Ġ" Ref reshed Count Avg ", Ġ" U ptime Pct ", Ġ" Avg Duration Seconds ", Ġ" Avg Stack s ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( row Ġin Ġrows ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow ( row . name , Ġrow . applied Avg , Ġrow . ref reshed Avg , Ġrow . uptime Pct , Ġrow . avg Duration , Ġrow . avg Stack s ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhints Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 0 , ĠTable . Hints . Alignment . LEFT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 .. 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( i , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Flag ( i , Ġ", ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 3 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpostfix ( i , Ġ"% ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Style Ġ= ĠTable . BorderStyle . SINGLE _ LINE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. render ( StringBuilder ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprint Abilities ( participants : ĠList < List < Ability Break down >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġparticipants . forEach Ġ{ Ġrows Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Ability ĠBreak down \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Name ", Ġ" Count Avg ", Ġ" Total D mg Avg ", Ġ" Pct Of Total ", Ġ" Min Hit ", Ġ" Avg Hit ", Ġ" Max Hit ", Ġ" Min Crit ", Ġ" Avg Crit ", Ġ" Max Crit ", Ġ" Hit %", Ġ" Crit %", Ġ" Miss %", Ġ" Dod ge %", Ġ" P arry %", Ġ" Gl ance % ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( row Ġin Ġrows ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow ( row . name , Ġrow . count Avg , Ġrow . total Avg , Ġrow . pct Of Total , Ġrow . min Hit , Ġrow . avg Hit , Ġrow . max Hit , Ġrow . min Crit , Ġrow . avg Crit , Ġrow . max Crit , Ġrow . hit Pct , Ġrow . crit Pct , Ġrow . miss Pct , Ġrow . dod ge Pct , Ġrow . par ry Pct , Ġrow . gl ance Pct ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhints Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 0 , ĠTable . Hints . Alignment . LEFT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 .. 1 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( i , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Flag ( i , Ġ", ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpostfix ( 3 , Ġ"% ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 0 .. 1 5 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpostfix ( i , Ġ"% ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Style Ġ= ĠTable . BorderStyle . SINGLE _ LINE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. render ( StringBuilder ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprint Damage ( participants : ĠList < List < Damage Type Break down >>) Ġ{ ĊĠĠĠĠĠĠĠ Ġparticipants . forEach Ġ{ Ġrows Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Damage ĠType ĠBreak down \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Name ", Ġ" Count Avg ", Ġ" Total D mg Avg ", Ġ" Pct Of Total ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( row Ġin Ġrows ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow ( row . type , Ġrow . count Avg , Ġrow . total Avg , Ġrow . pct Of Total ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhints Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 0 , ĠTable . Hints . Alignment . LEFT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( i , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 .. 1 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Flag ( i , Ġ", ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpostfix ( 3 , Ġ"% ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Style Ġ= ĠTable . BorderStyle . SINGLE _ LINE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. render ( StringBuilder ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠThe Ġplayer 's Ġpet Ġis Ġconsidered Ġ" their " ĠD PS , Ġso Ġmerge Ġthem Ġif Ġpresent ĊĠĠĠ Ġfun Ġprint D ps ( subject D ps : ĠD ps Break down , Ġsubject Pet D ps : ĠD ps Break down ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġpet Mean Pct Ġ= Ġ Ġ( subject Pet D ps ?. mean Ġ?: Ġ 0 . 0 ) Ġ/ Ġ( subject D ps . mean Ġ+ Ġ( subject Pet D ps ?. mean Ġ?: Ġ 0 . 0 )) Ġ* Ġ 1 0 0 . 0 ĊĠĠĠĠĠĠĠ Ġval Ġpet Median Pct Ġ= Ġ( subject Pet D ps ?. mean Ġ?: Ġ 0 . 0 ) Ġ/ Ġ( subject D ps . median Ġ+ Ġ( subject Pet D ps ?. median Ġ?: Ġ 0 . 0 )) Ġ* Ġ 1 0 0 . 0 ĊĊĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" A VER AGE ĠD PS : Ġ${ df . format ( subject D ps . mean )}" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( subject Pet D ps Ġ!= Ġnull ) Ġ{ Ġ" Ġ- ĠP ET : Ġ${ df . format ( subject Pet D ps . mean )} Ġ(${ df . format ( pet Mean Pct )} %) Ġ- ĠTOT AL : Ġ${ df . format ( subject D ps . mean Ġ+ Ġsubject Pet D ps . mean )}" Ġ} Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" MEDI AN ĠD PS : Ġ${ df . format ( subject D ps . median )}" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( subject Pet D ps Ġ!= Ġnull ) Ġ{ Ġ" Ġ- ĠP ET : Ġ${ df . format ( subject Pet D ps . median )} Ġ(${ df . format ( pet Median Pct )} %) Ġ- ĠTOT AL : Ġ${ df . format ( subject D ps . median Ġ+ Ġsubject Pet D ps . median )}" Ġ} Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" STD DEV ĠD PS : Ġ${ df . format ( subject D ps . sd )}" Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( subject Pet D ps Ġ!= Ġnull ) Ġ{ Ġ" Ġ- ĠP ET : Ġ${ df . format ( subject Pet D ps . sd )}" Ġ} Ġelse Ġ"" ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprint Pre com bat Stats ( iteration : ĠSim Iteration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" PLAYER ĠSTAT S \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Strength :", Ġiteration . subject . strength (), Ġ" Phys . ĠHit :", Ġiteration . subject . physical Hit Pct ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Ag ility :", Ġiteration . subject . ag ility (), Ġ" Me lee ĠC rit :", Ġiteration . subject . me lee Crit Pct ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Intel lect :", Ġiteration . subject . intel lect (), Ġ" Range d ĠC rit :", Ġiteration . subject . range d Crit Pct ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" St am ina :", Ġiteration . subject . st am ina (), Ġ" Phys . ĠH aste :", Ġiteration . subject . physical H aste Multiplier () Ġ- Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Sp irit :", Ġiteration . subject . sp irit (), Ġ" Spell ĠHit :", Ġiteration . subject . spell Hit Pct ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Armor ĠPen :", Ġiteration . subject . armor Pen (), Ġ" Spell ĠC rit :", Ġiteration . subject . spell Crit Pct ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Attack ĠPower ", Ġiteration . subject . attack Power (), Ġ" Spell ĠH aste :", Ġiteration . subject . spell H aste Multiplier () Ġ- Ġ 1 . 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" R . ĠAttack ĠPower ", Ġiteration . subject . range d Attack Power (), Ġ" Ex pert ise :", Ġiteration . subject . expert ise Pct ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" MP 5 ", Ġiteration . subject . stats . mana Per 5 Seconds ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Spell ĠPower ", Ġiteration . subject . spell Damage ()) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhints Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 0 , ĠTable . Hints . Alignment . RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 1 , ĠTable . Hints . Alignment . LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 2 , ĠTable . Hints . Alignment . RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 3 , ĠTable . Hints . Alignment . LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 4 , ĠTable . Hints . Alignment . RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 5 , ĠTable . Hints . Alignment . LEFT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( 1 , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( 3 , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( 5 , Ġ 2 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpostfix ( 3 , Ġ"% ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Style Ġ= ĠTable . BorderStyle . NONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. render ( StringBuilder ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ" TARGET ĠSTAT S \ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Arc ane ĠRes :", Ġiteration . target . stats . arc ane Res istance , Ġ" Armor :", Ġiteration . target . armor ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Fire ĠRes :", Ġiteration . target . stats . fire Res istance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" F rost ĠRes :", Ġiteration . target . stats . f rost Res istance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" N ature ĠRes :", Ġiteration . target . stats . nature Res istance ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow (" Shadow ĠRes :", Ġiteration . target . stats . shadow Res istance ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhints Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 0 , ĠTable . Hints . Alignment . RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 1 , ĠTable . Hints . Alignment . LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 2 , ĠTable . Hints . Alignment . RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 3 , ĠTable . Hints . Alignment . LEFT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 4 , ĠTable . Hints . Alignment . RIGHT ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 5 , ĠTable . Hints . Alignment . LEFT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( 1 , Ġ 0 ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Style Ġ= ĠTable . BorderStyle . NONE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. render ( StringBuilder ()) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġprint Resource Usage By Ability ( participants : ĠList < Map < String , ĠList < Resource By Ability >> >) Ġ{ ĊĠĠĠĠĠĠĠ Ġparticipants . forEach Ġ{ Ġresource Type Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġresource Type . entries . forEach Ġ{ Ġresource Data Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġrows Ġ= Ġresource Data . value ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" Resource Ġby ĠAbility ĠBreak down Ġ(${ resource Data . key })\ n " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtable Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġheader (" Name ", Ġ" Count Avg ", Ġ" Total Gain Avg ", Ġ" Gain Per Count Avg ") ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( row Ġin Ġrows ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrow ( row . name , Ġrow . count Avg , Ġrow . total Gain Avg , Ġrow . gain Per Count Avg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġhints Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġalignment ( 0 , ĠTable . Hints . Alignment . LEFT ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfor ( i Ġin Ġ 1 .. 3 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprecision ( i , Ġ 2 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġformat Flag ( i , Ġ", ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġborder Style Ġ= ĠTable . BorderStyle . SINGLE _ LINE ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ}. render ( StringBuilder ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ