package Ġnet . d ank ito . bank ing . f ints . messages Ċ Ċ import Ġnet . d ank ito . bank ing . f ints . util . Message Utils ĊĊ Ċ abstract Ġclass ĠN ach richt ente il ( protected Ġval Ġmessage Utils : ĠMessage Utils Ġ= ĠMessage Utils ()) Ġ{ ĊĊĠĠĠ Ġabstract Ġfun Ġformat (): ĠString ĊĊĊĠĠĠ Ġopen Ġfun Ġmask Message Part ( message Part : ĠString , Ġsepar ators : ĠList < String >): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġvar Ġmasked Message Part Ġ= Ġmessage Part ĊĠĠĠĠĠĠĠ Ġval Ġbinary Data Ranges Ġ= Ġmessage Utils . find Binary Data Ranges ( message Part ) ĊĊĠĠĠĠĠĠĠ Ġval Ġun masked Mask ing Character Indices Ġ= Ġmessage Utils . find Separator Indices ( masked Message Part , ĠSepar ators . Mask ing Character , Ġbinary Data Ranges ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġmessage Utils . does Not Mask Separator Or Mask ing Character ( it , Ġmasked Message Part ) Ġ} ĊĊĠĠĠĠĠĠĠ Ġmasked Message Part Ġ= Ġmessage Utils ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. mask Character At Indices ( masked Message Part , ĠSepar ators . Mask ing Character , Ġun masked Mask ing Character Indices ) ĊĊĊĠĠĠĠĠĠĠ Ġsepar ators . forEach Ġ{ Ġseparator Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmasked Message Part Ġ= Ġmask Separ ators ( masked Message Part , Ġseparator , Ġbinary Data Ranges ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġmasked Message Part Ġ= Ġmask Separ ators ( masked Message Part , ĠSepar ators . Data Element Groups Separator , Ġbinary Data Ranges ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġmasked Message Part ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprotected Ġopen Ġfun Ġmask Separ ators ( un masked Message Part : ĠString , Ġseparator : ĠString , Ġbinary Data Ranges : ĠList < Int Range >): ĠString Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġseparator Indices Ġ= Ġmessage Utils . find Separator Indices ( un masked Message Part , Ġseparator , Ġbinary Data Ranges ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( separator Indices . isNotEmpty ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġmessage Utils . mask Character At Indices ( un masked Message Part , Ġseparator , Ġseparator Indices ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġun masked Message Part ĊĠĠĠ Ġ} Ċ Ċ }