::..::..;: ..:':.::':::;:'':::.:.. ' .. .:;:'::..:::':::. ...:::''::.::.:::.. .
:.:: ':.::::':::::':::.::::..::.:::.::.:,::,:::::. , .:::::.:,::::: ::,':: .::
:::': .:::'::::.::,::.::'::..:.:::.,:::::. . ' ..  ::::. '::::,:.::.. `:::.:'::
 ':.:;:,'::::'::.'::':: ;.'::':;:':::..:'::: .:..:::'::,::':::'::::.::.::,::: :
.::;.:::':'.::::'::;;'::::,:::,::::.:::.::.::..::o8bo:'           `":::;: :..::
:':::. '::::'::'::'::`::.::''::.  ::.::  .::'.dP"'. _ qo.            `:'.:.::.'
::' :::..:::''::: .:.::::':::: :`:':: :,:.:.:88' d d8o.`8l            `::.::.::
 ..::`:::'::: .::::.::`::.:':::.:oooo::''    oo 88. `88 l8             `::':::'
::'::. ..::'::: :,::.:::'::.oP oP"""48b.     `q `8b. P' P'              :,:.::
: .:.::.'.::'::,:::' `::::jo'.o888b. `P'     b.  `+88+ '.               ::: .::
::: ::'::,.:,::': :::.:'::8l o8f  `8l. `b    `qo..____.ob  .od8go.     .::.: .:
 ' .:..:..::.:':::':'.::.:88 `4b ogP .o P      `"oggooP'  .o8o. `ob.  .::,::: :
..:.: :'::.::'': `::::.:. `4l .d.  .o8' '            .d .oo  `ob.`qo   `::.:,::
::.;:':::..:.:.::':'`::.::' ` `48gg8+'               88 8' `4o.`8b '     : .:''
.; .::.:':.'.'::':. .:.,:'     .,. .. ., .           88 4    d8 8f b     ::':::
.,':..` ' .:'::.:...':':' _..ososoososso..',. ;.:,'  `8b. qodP' ' .8     :::':'
:..'' .: '.;..:'.::..::'.o888SSSSSSSSSSSSSSosoo.'.';  `4bo.`"   .dP'    .:. :::
. .' '. .::.:`'::`:`::d8888SSSSSSSSSSSSSSSSSoooooc:.:.   "   .od+' , '.::.: .:.
 . ' . .  .:'.::'' ;.d888SSSSSSSSSSSSSSSSSoooooocci:..'           ..'   `:': ::
     `  .' . '' . ` 88SSSSSSSSSSSSSSSSSSSooooocccccii:.                   `:'.:
  ' `  .  '  .'  . j88SSSSSSSSSSSSSSSSSSoooooocccccii:'               '    :.::
                   88SSSSSSSSSSSSSSSSSSSooooooccccciii:.             . '   ':':
          . '     j88SSSSSSSSSSSSSSSSSSSoooooocccciiii:.                    ::.
        ,' .      g88SSSSSSSSSSSSSSSSSSSSSooogccccciiii:.                  .:.;
     .' .''      '      `+4ssssssSP+'         `4occiiiii:                 : ::
   ,'` '  :      looSSbo..  `4P''  _.ooSSSSSSSbo.ccciii:    .           .::..:'
 ,'   '.-":      `qgSSSoob`o.,:_.odSSSSSSSSSSoooooccoii:.      _.oooo.   `: :.
.   .'    :        .no'7+4S 88SccoSS.ssP+qSSS8oooooccoii:.'  .dSSP'.`Sb   ::':.
 .        :       .d@@. .dP,d88occb.<@@(' )PSSSoooooccccc:. .SSS'dSl `i;  ..: .
  .' _.-"":       jSSooiif,d88oSSSSoSbnbodhhSSSSoooooccci:ijSSS'.`88  i:..::':.
  .-'     :       SSSSccf,d88oSSSSSS88888888SSSSsoooociiii:iSSf.S `8 ji:.:'' .:
          :       oSSScS,j88c8SboSSSS88888SSSSooooocciiii:;iP' gPl f s' ' ' . ,
 ;  :     '      .lSScc lSS8ooo+ggSSSS888SSSoooooocciiii:::il. _.odif'
    :`.  .      '  Soccl._`"""_.  dSSSSSSSSoooooccciiii::::ild8SSoof'
'  _: .`.      '.  `Scc88SSoccccccSSSSSSSSSoooooccciii:::::ii8SSooP  :`-.
.-' :`.. `.   .   `.lSc88SSooocccSSSSoSSSSoooooccciiii:::'::: `""    : `.`"-.
    :   .' `. :      SoccP'"+""`4cooSoSSSSooooocciiii:::'::::        :._ . .'`-
    ;`.     .`       lcP.--._..._`"q8SoSSoooooccciiii::'.::::        :  `"`.
    :   ` .'   ` .    SSL._===   _.oSSoSSoooooccciii:' .:::::        : ,-'. `.'
,--':      .    `  `. lSSSooccccdoSSSoSSSooooccciii:' .::::::.     ,-''  ':"-.`
   ':`.          '`   `SSSScocccossSSSSSSoooocccii'  .::::::::   ,'  '  ' :
 .' |   `.  .  .'  `   `SSSSS88888SSSSSSooooccp+'  .::::::::::  ''    ',.-:
    :      . .'     `   `4SSSSSSSSSSSSSSooog+'   .iiii:::::::::'  .   .   :"--.
     .       `       ._  `4SSSSSSSSSSSSSP+'    .iiiiiiii:::::::   '. .  _.:
     ``.      .       ."-` `+Sggsss+"'     _.cciiiiiiiiiii:::::    '..'"  '.
      `  `.        .':    .  ` :    __...coooocccciiiiiiiii::::    .      : "-.
       `   `._ . .'  :         8scciiiccccooooooccccciiiiiii:::: .'..__.,' `.
        `     `:'    '._   .  .888Sccciiccoooooooccccciiiiii:::::      .'    `.
         `     :    .   "-,,-' 888888SsooosSSSoooooocccciiiii::::. _.-'
          `    :   .        .  88888888soosSSSSoooooccccciiii:::::"