/** Ċ Ġ* ĠCopyright Ġ( c ) Ġ 2 0 1 8 - 2 0 1 9 ĠDr . ĠFl orian ĠSch mid t Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ package Ġorg . dr x . e vo leq . data ĊĊ Ċ sealed Ġclass ĠSum < D , E > Ġ{ ĊĠĠĠ Ġdata Ġclass ĠFirst < D , E >( val Ġvalue : ĠD ): ĠSum < D , E >() ĊĠĠĠ Ġdata Ġclass ĠSecond < D , E >( val Ġvalue : ĠE ): ĠSum < D , E >() Ċ } Ċ Ċ sealed Ġclass ĠTrip le Sum < D , E , F > Ġ Ġ{ ĊĠĠĠ Ġdata Ġclass ĠFirst < D , E , F >( val Ġvalue : ĠD ): ĠTrip le Sum < D , E , F >() ĊĠĠĠ Ġdata Ġclass ĠSecond < D , E , F >( val Ġvalue : ĠE ): ĠTrip le Sum < D , E , F >() ĊĠĠĠ Ġdata Ġclass ĠThird < D , E , F >( val Ġvalue : ĠF ): ĠTrip le Sum < D , E , F >() Ċ } Ċ Ċ sealed Ġclass ĠQuad Sum < D , E , F , G > Ġ Ġ{ ĊĠĠĠ Ġdata Ġclass ĠFirst < D , E , F , G >( val Ġvalue : ĠD ): ĠQuad Sum < D , E , F , G >() ĊĠĠĠ Ġdata Ġclass ĠSecond < D , E , F , G >( val Ġvalue : ĠE ): ĠQuad Sum < D , E , F , G >() ĊĠĠĠ Ġdata Ġclass ĠThird < D , E , F , G >( val Ġvalue : ĠF ): ĠQuad Sum < D , E , F , G >() ĊĠĠĠ Ġdata Ġclass ĠFour th < D , E , F , G >( val Ġvalue : ĠG ): ĠQuad Sum < D , E , F , G >() Ċ } Ċ Ċ sealed Ġclass ĠQu int Sum < D , E , F , G , H > Ġ Ġ{ ĊĠĠĠ Ġdata Ġclass ĠFirst < D , E , F , G , H >( val Ġvalue : ĠD ): ĠQu int Sum < D , E , F , G , H >() ĊĠĠĠ Ġdata Ġclass ĠSecond < D , E , F , G , H >( val Ġvalue : ĠE ): ĠQu int Sum < D , E , F , G , H >() ĊĠĠĠ Ġdata Ġclass ĠThird < D , E , F , G , H >( val Ġvalue : ĠF ): ĠQu int Sum < D , E , F , G , H >() ĊĠĠĠ Ġdata Ġclass ĠFour th < D , E , F , G , H >( val Ġvalue : ĠG ): ĠQu int Sum < D , E , F , G , H >() ĊĠĠĠ Ġdata Ġclass ĠFifth < D , E , F , G , H >( val Ġvalue : ĠH ): ĠQu int Sum < D , E , F , G , H >() Ċ } ĊĊĊ Ċ fun Ġ< D , E , F > ĠSum < Sum < D , E >, F >. flatten (): ĠTrip le Sum < D , E , F > Ġ= Ġwhen ( this ) Ġ{ ĊĠĠĠ Ġis ĠSum . First Ġ-> Ġwhen ( this . value ) Ġ{ ĊĠĠĠĠĠĠĠ Ġis ĠSum . First Ġ-> ĠTrip le Sum . First ( this . value . value ) ĊĠĠĠĠĠĠĠ Ġis ĠSum . Second Ġ-> ĠTrip le Sum . Second ( this . value . value ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġis ĠSum . Second Ġ-> ĠTrip le Sum . Third ( this . value ) Ċ }