package Ġxyz . cap y bara . clam av . commands . scan Ċ Ċ import Ġxyz . cap y bara . clam av . Invalid Response Exception Ċ import Ġxyz . cap y bara . clam av . Scan FailureException Ċ import Ġxyz . cap y bara . clam av . commands . Command Ċ import Ġxyz . cap y bara . clam av . commands . scan . result . Scan Result Ċ Ċ internal Ġabstract Ġclass ĠScan Command Ġ: ĠCommand < Scan Result >() Ġ{ ĊĊĠĠĠ Ġoverride Ġfun Ġparse Response ( response String : ĠString ): ĠScan Result Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġwhen Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRESP ONSE _ OK Ġmatches Ġresponse String Ġ-> ĠScan Result . OK ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRESP ONSE _ V IR US _ FOUND . contains Match In ( response String ) Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġadd Ġevery Ġfound Ġvir uses Ġto Ġthe Ġscan Ġresult , Ġgrouped Ġby Ġinf ected Ġfile ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfound V ir uses Ġ= Ġresponse String . split ("\ n ". to Regex ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map NotNull ( RESPONSE _ V IR US _ FOUND _ LINE :: match Ent ire ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġit . groups . reversed () Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġkey : Ġfile Ġpath ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġvalue : Ġvirus Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. groupBy ({ Ġit [ 1 ] !!. value Ġ}, Ġ{ Ġit [ 0 ] !!. value Ġ}) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠScan Result . V irus Found ( found V ir uses ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRESP ONSE _ ERROR Ġmatches Ġresponse String Ġ-> Ġthrow ĠScan FailureException ( response String ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠInvalid Response Exception ( response String ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠIllegalStateException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow ĠInvalid Response Exception ( response String ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠRESP ONSE _ OK Ġ= ĠRegex ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( . +) ĠOK $", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegex Option . UNIX _ LINES ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠRESP ONSE _ V IR US _ FOUND Ġ= ĠRegex ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( . +) ĠFO UND $", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġset Of ( Regex Option . MULT IL INE , ĠRegex Option . UNIX _ LINES ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠRESP ONSE _ ERROR Ġ= ĠRegex ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( . +) ĠERROR ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegex Option . UNIX _ LINES ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠRESP ONSE _ V IR US _ FOUND _ LINE Ġ= ĠRegex ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ"( .+ : Ġ) ?( .+ ): Ġ(. +) ĠFO UND $", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠRegex Option . UNIX _ LINES ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} Ċ }