package Ġutils Ċ Ċ import Ġalgorithm . data . Attack Type Ċ import Ġalgorithm . data . MODE Ċ import Ġalgorithm . data . R ACE _ MAL IC IOUS _ EVENT Ċ import Ġalgorithm . data . R ACE _ VI CT IM _ EVENT Ċ import Ġui . Hash graph Confirmation Stats Ċ import Ġui . Hash graph Consensus Stats Ċ import Ġjava . io . File Ċ Ċ fun Ġsave Consensus Csv ( path : ĠString , Ġconsensus Data : ĠList < Hash graph Consensus Stats >) Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( path ) ĊĠĠĠ Ġfor Ġ( line Ġin Ġconsensus Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfile . append Text ("${ line . round }; ${ line . events }; ${ line . wit nesses }; ${ line . fam ous W it nesses }; ${ line . un dec ided }\ n ") ĊĠĠĠ Ġ} Ċ } Ċ Ċ fun Ġsave Confirmation Time Csv ( path : ĠString , Ġconfirmation Data : ĠList < Hash graph Confirmation Stats >) Ġ{ ĊĠĠĠ Ġval Ġfile Ġ= ĠFile ( path ) ĊĠĠĠ Ġfor Ġ( line Ġin Ġconfirmation Data ) Ġ{ ĊĠĠĠĠĠĠĠ Ġfile . append Text ("${ line . event }; ${ line . participant }; ${ line . creation }; ${ line . round Received }; " Ġ+ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"${ line . final Consensus Timestamp }; ${ line . confirmation Duration }; ") ĊĠĠĠĠĠĠĠ Ġif Ġ( MODE Ġ== ĠAttack Type . R ACE ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( line . event . toString ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR ACE _ MAL IC IOUS _ EVENT Ġ-> Ġfile . append Text (" RM ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR ACE _ VI CT IM _ EVENT Ġ-> Ġfile . append Text (" RV ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġfile . append Text ("\ n ") ĊĠĠĠ Ġ} Ċ }