package Ġno . nav . hel se . person . et ter level se Ċ Ċ import Ġno . nav . hel se . hen del ser . Per i ode Ċ import Ġno . nav . hel se . hen del ser . Per i ode . Companion . gr upper Sam men h eng ende Period er Med H ens yn Til Hel g Ċ import Ġno . nav . hel se . hen del ser . til Ċ import Ġno . nav . hel se . person . B ok st av Ċ import Ġno . nav . hel se . person . Led d Ċ import Ġno . nav . hel se . person . Par agr af Ċ import Ġno . nav . hel se . person . P unkt um Ċ import Ġno . nav . hel se . person . et ter level se . Mask in ell J ur ist .* Ċ import Ġjava . time . LocalDate Ċ Ċ internal Ġtype alias ĠSam men st illing Str ateg i < T > Ġ= Ġ( other : ĠT ) Ġ-> ĠList < Sub sums jon > Ċ Ċ internal Ġabstract Ġclass ĠSub sums jon Ġ{ ĊĊĠĠĠ Ġenum Ġclass ĠUtf all Ġ{ ĊĠĠĠĠĠĠĠ ĠV IL K AR _ OP PF Y LT , ĠV IL K AR _ IK KE _ OP PF Y LT , ĠV IL K AR _ U AV KL ART , ĠV IL K AR _ BER EG NET ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġval Ġutf all : ĠUtf all ĊĠĠĠ Ġabstract Ġval Ġvers jon : ĠLocalDate ĊĠĠĠ Ġabstract Ġval Ġpar agr af : ĠPar agr af ĊĠĠĠ Ġabstract Ġval Ġle dd : ĠLed d ? ĊĠĠĠ Ġopen Ġval Ġp unkt um : ĠP unkt um ? Ġ= Ġnull ĊĠĠĠ Ġopen Ġval Ġb ok st av : ĠB ok st av ? Ġ= Ġnull ĊĊĠĠĠ Ġabstract Ġval Ġinput : ĠMap < String , ĠAny > ĊĠĠĠ Ġabstract Ġval Ġoutput : ĠMap < String , ĠAny > ĊĠĠĠ Ġprotected Ġabstract Ġval Ġkont ek ster : ĠMap < String , ĠKont ek st Type > ĊĊĠĠĠ Ġinternal Ġfun Ġaccept ( visitor : ĠSub sums jon Visitor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisitor . pre Visit Sub sums jon ( utf all , Ġvers jon , Ġpar agr af , Ġle dd , Ġp unkt um , Ġb ok st av , Ġinput , Ġoutput , Ġkont ek ster ) ĊĠĠĠĠĠĠĠ Ġaccept S pes ifi kk ( visitor ) ĊĠĠĠĠĠĠĠ Ġvisitor . post Visit Sub sums jon ( utf all , Ġvers jon , Ġpar agr af , Ġle dd , Ġp unkt um , Ġb ok st av , Ġinput , Ġoutput , Ġkont ek ster ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġabstract Ġfun Ġaccept S pes ifi kk ( visitor : ĠSub sums jon Visitor ) ĊĊĠĠĠ Ġabstract Ġfun Ġsam men still ( sub sums jon er : ĠList < Sub sums jon >): ĠList < Sub sums jon > ĊĊĠĠĠ Ġprotected Ġinline Ġfun Ġ< re ified ĠT Ġ: ĠSub sums jon > Ġsam men still ( ĊĠĠĠĠĠĠĠ Ġsub sums jon er : ĠList < Sub sums jon >, ĊĠĠĠĠĠĠĠ Ġstr ateg i : ĠSam men st illing Str ateg i < T > ĊĠĠĠ Ġ): ĠList < Sub sums jon > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtid lig ere Sub sums jon Ġ= Ġsub sums jon er . filter Is Instance < T >(). first OrNull Ġ{ Ġit Ġ== Ġthis Ġ} ĊĠĠĠĠĠĠĠ Ġif Ġ( tid lig ere Sub sums jon Ġ!= Ġnull ) Ġreturn Ġstr ateg i ( tid lig ere Sub sums jon ) ĊĠĠĠĠĠĠĠ Ġreturn Ġsub sums jon er Ġ+ Ġthis ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( this Ġ=== Ġother ) Ġreturn Ġtrue ĊĊĠĠĠĠĠĠĠ Ġreturn Ġother Ġis ĠSub sums jon Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġutf all Ġ== Ġother . utf all Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġvers jon Ġ== Ġother . vers jon Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpar agr af Ġ== Ġother . par agr af Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġle dd Ġ== Ġother . le dd Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp unkt um Ġ== Ġother . p unkt um Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb ok st av Ġ== Ġother . bok st av Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ== Ġother . input Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoutput Ġ== Ġother . output Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkont ek ster Ġ== Ġother . kont ek ster ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġresult Ġ= Ġutf all . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġvers jon . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġpar agr af . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġle dd . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġp unkt um . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġb ok st av . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġinput . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġoutput . hashCode () ĊĠĠĠĠĠĠĠ Ġresult Ġ= Ġ 3 1 Ġ* Ġresult Ġ+ Ġkont ek ster . hashCode () ĊĠĠĠĠĠĠĠ Ġreturn Ġresult ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠtoString (): ĠString Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ"$ par agr af Ġ$ le dd Ġ${ if Ġ( p unkt um Ġ== Ġnull ) Ġ"" Ġelse Ġp unkt um } Ġ${ if Ġ( bok st av Ġ== Ġnull ) Ġ"" Ġelse Ġb ok st av } Ġ[$ utf all ]" ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġfun ĠList < Sub sums jon >. er st att ( replace e : ĠSub sums jon , Ġreplacement : ĠSub sums jon ): ĠList < Sub sums jon > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġthis . to Mutable List (). apply Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove ( replace e ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġadd ( replacement ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠEn kel Sub sums jon ( ĊĠĠĠ Ġoverride Ġval Ġutf all : ĠUtf all , ĊĠĠĠ Ġoverride Ġval Ġvers jon : ĠLocalDate , ĊĠĠĠ Ġoverride Ġval Ġpar agr af : ĠPar agr af , ĊĠĠĠ Ġoverride Ġval Ġle dd : ĠLed d ?, ĊĠĠĠ Ġoverride Ġval Ġp unkt um : ĠP unkt um ? Ġ= Ġnull , ĊĠĠĠ Ġoverride Ġval Ġb ok st av : ĠB ok st av ? Ġ= Ġnull , ĊĠĠĠ Ġoverride Ġval Ġinput : ĠMap < String , ĠAny >, ĊĠĠĠ Ġoverride Ġval Ġoutput : ĠMap < String , ĠAny >, ĊĠĠĠ Ġoverride Ġval Ġkont ek ster : ĠMap < String , ĠKont ek st Type > Ċ ) Ġ: ĠSub sums jon () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġsam men still ( sub sums jon er : ĠList < Sub sums jon >) Ġ= ĊĠĠĠĠĠĠĠ Ġsam men still < En kel Sub sums jon >( sub sums jon er ) Ġ{ Ġsub sums jon er . er st att ( it , Ġthis ) Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaccept S pes ifi kk ( visitor : ĠSub sums jon Visitor ) Ġ{} Ċ } Ċ Ċ internal Ġclass ĠGr upper bar Sub sums jon Ġprivate Ġconstructor ( ĊĠĠĠ Ġprivate Ġval Ġperiod er : ĠList < Per i ode >, ĊĠĠĠ Ġoverride Ġval Ġutf all : ĠUtf all , ĊĠĠĠ Ġoverride Ġval Ġvers jon : ĠLocalDate , ĊĠĠĠ Ġoverride Ġval Ġpar agr af : ĠPar agr af , ĊĠĠĠ Ġoverride Ġval Ġle dd : ĠLed d ?, ĊĠĠĠ Ġoverride Ġval Ġp unkt um : ĠP unkt um ? Ġ= Ġnull , ĊĠĠĠ Ġoverride Ġval Ġb ok st av : ĠB ok st av ? Ġ= Ġnull , ĊĠĠĠ Ġprivate Ġval Ġoriginal Output : ĠMap < String , ĠAny >, ĊĠĠĠ Ġoverride Ġval Ġinput : ĠMap < String , ĠAny >, ĊĠĠĠ Ġoverride Ġval Ġkont ek ster : ĠMap < String , ĠKont ek st Type > Ċ ) Ġ: ĠSub sums jon () Ġ{ ĊĠĠĠ Ġinternal Ġconstructor ( ĊĠĠĠĠĠĠĠ Ġdat o : ĠLocalDate , ĊĠĠĠĠĠĠĠ Ġinput : ĠMap < String , ĠAny >, ĊĠĠĠĠĠĠĠ Ġoutput : ĠMap < String , ĠAny >, ĊĠĠĠĠĠĠĠ Ġutf all : ĠUtf all , ĊĠĠĠĠĠĠĠ Ġvers jon : ĠLocalDate , ĊĠĠĠĠĠĠĠ Ġpar agr af : ĠPar agr af , ĊĠĠĠĠĠĠĠ Ġle dd : ĠLed d , ĊĠĠĠĠĠĠĠ Ġp unkt um : ĠP unkt um ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġb ok st av : ĠB ok st av ? Ġ= Ġnull , ĊĠĠĠĠĠĠĠ Ġkont ek ster : ĠMap < String , ĠKont ek st Type > ĊĠĠĠ Ġ) Ġ: Ġthis ( listOf ( dat o Ġtil Ġdat o ), Ġutf all , Ġvers jon , Ġpar agr af , Ġle dd , Ġp unkt um , Ġb ok st av , Ġoutput , Ġinput , Ġkont ek ster ) ĊĊĠĠĠ Ġoverride Ġval Ġoutput : ĠMap < String , ĠAny > Ġ= Ġoriginal Output . to Mutable Map (). apply Ġ{ ĊĠĠĠĠĠĠĠ Ġthis [" period er "] Ġ= Ġperiod er . map Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmap Of ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" f om " Ġto Ġit . start , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" tom " Ġto Ġit . end Inclusive ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaccept S pes ifi kk ( visitor : ĠSub sums jon Visitor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisitor . visit Gr upper bar Sub sums jon ( period er ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġhar Sam me Data gr un nl ag ( other : ĠGr upper bar Sub sums jon ) Ġ= ĊĠĠĠĠĠĠĠ Ġpar agr af Ġ== Ġother . par agr af Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġle dd Ġ== Ġother . le dd Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġp unkt um Ġ== Ġother . p unkt um Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġb ok st av Ġ== Ġother . bok st av Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġkont ek ster Ġ== Ġother . kont ek ster Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinput Ġ== Ġother . input Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoriginal Output Ġ== Ġother . original Output Ġ&& ĊĠĠĠĠĠĠĠĠĠĠĠ Ġutf all Ġ== Ġother . utf all ĊĊĠĠĠ Ġoverride Ġfun Ġsam men still ( sub sums jon er : ĠList < Sub sums jon >): ĠList < Sub sums jon > Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġsam men st il te Period er Ġ= Ġ( sub sums jon er Ġ+ Ġthis ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Is Instance < Gr upper bar Sub sums jon >() ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. filter Ġ{ Ġit . har Sam me Data gr un nl ag ( this ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. flatMap Ġ{ Ġit . period er Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. gr upper Sam men h eng ende Period er Med H ens yn Til Hel g () ĊĊĠĠĠĠĠĠĠ Ġval Ġgrup pert Sub sums jon Ġ= ĠGr upper bar Sub sums jon ( sam men st il te Period er , Ġutf all , Ġvers jon , Ġpar agr af , Ġle dd , Ġp unkt um , Ġb ok st av , Ġoriginal Output , Ġinput , Ġkont ek ster ) ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsub sums jon er . to Mutable List (). let Ġ{ Ġit Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . removeAll Ġ{ Ġsub sums jon Ġ-> Ġsub sums jon Ġis ĠGr upper bar Sub sums jon Ġ&& Ġsub sums jon . har Sam me Data gr un nl ag ( this ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit Ġ+ Ġgrup pert Sub sums jon ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ Ċ internal Ġclass ĠB eting et Sub sums jon ( ĊĠĠĠ Ġprivate Ġval Ġfun net Re levant : ĠBoolean , ĊĠĠĠ Ġoverride Ġval Ġutf all : ĠUtf all , ĊĠĠĠ Ġoverride Ġval Ġvers jon : ĠLocalDate , ĊĠĠĠ Ġoverride Ġval Ġpar agr af : ĠPar agr af , ĊĠĠĠ Ġoverride Ġval Ġle dd : ĠLed d ?, ĊĠĠĠ Ġoverride Ġval Ġp unkt um : ĠP unkt um ? Ġ= Ġnull , ĊĠĠĠ Ġoverride Ġval Ġb ok st av : ĠB ok st av ? Ġ= Ġnull , ĊĠĠĠ Ġoverride Ġval Ġinput : ĠMap < String , ĠAny >, ĊĠĠĠ Ġoverride Ġval Ġoutput : ĠMap < String , ĠAny >, ĊĠĠĠ Ġoverride Ġval Ġkont ek ster : ĠMap < String , ĠKont ek st Type > Ċ ) Ġ: ĠSub sums jon () Ġ{ ĊĠĠĠ Ġoverride Ġfun Ġsam men still ( sub sums jon er : ĠList < Sub sums jon >): ĠList < Sub sums jon > Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! fun net Re levant ) Ġreturn Ġsub sums jon er ĊĠĠĠĠĠĠĠ Ġreturn Ġsam men still < B eting et Sub sums jon >( sub sums jon er ) Ġ{ Ġsub sums jon er . er st att ( it , Ġthis ) Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġaccept S pes ifi kk ( visitor : ĠSub sums jon Visitor ) Ġ{ ĊĠĠĠĠĠĠĠ Ġvisitor . visit B eting et Sub sums jon ( fun net Re levant ) ĊĠĠĠ Ġ} Ċ } Ċ