::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::cccccccccccccclllllllcccccccccllccccllllllooooooolllllllllllooooooooooooollllloooooooooolc:cllllc::;:::ccc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            ::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::cc:::::::::::ccccccccccccccclllllllccllcccccllllllllllooooooooolllllllllloooooooooooooooollllooooooooolcccllllcc:;::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            cc::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::cc::cc:::c:::ccccccccccccccccccllllllllllllllccccllllllllooooooooolllllllllllooooooooodddoooollloodddoooollccccllllc:;;:::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            cccccccccccc:::::::::::::::::::::::::::::ccc:::ccccccccccccccccc:::::::::::::::::::::::::::::::cccccccccc:ccccccccccccccccccccccllllllllllllllllcccllllooooooooooooolloooolllllooooooooodddooooolooodddoollllccccclcc:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            cccccccccccccccccc:::::::::::::cccccccccccccccccccccccccccccccccccccccccc::::::::::::::::::ccccccccccccccccccccccccccccccccclccllllllllllllllllllcllloooooooodddddooooooooolllloooooooooodddoooooooodddoollccccccccc::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc::cc:::::::::::ccccccccccccccccccccccccccccccccccllllllllloooooooooc:cllllooooooodddddddooooooooolloooooooddddddddooooooooodooolccccc:::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
            cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc:::::cccccccccccccccccccccccccccccccccccclllllloooooooooooc;,:cllclooooddddddddddoooooooooooooooooddddddddooooddooooooolcccc:::::::::;;;;;;;;;::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::::;;;;;;;;
            cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclllooloooooooooooc;'.,;clllcllodddoloodddoooooooooooooooooodddddooooodddoooooolccccc::::::::::::;;:::::::::::::;:::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::;;;;;;;
            ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclloooooododddddol:,'',;',colcccool:cllcllodooooooooooodddddoodddoooooooddoolllllc:::::::::::::::::::::::::::::::::::::;::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::;;;;;;;;
            cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccllloooooodoodddllc::,';col;,locccclllodlc::cooooooooooodddddddddddollllooooolccccc:::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::::::::::::::;;;;;;;;;
            cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccllllloooooddolcldc,;ccllllooc:oxdoollcloddllc;:lloooooooodddddddddddolllllloollccc:::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;::;;;;;;;;;;;;;;;;::::::::::::::::::;;;;;;;;;
            cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccllllloooddddl;.';:::,;lddddolccollloooodxxooolcc:clooooooodoodddddddollllllllllccc:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;;;;;;;;::::::::::::::::::::;;;;;;;::
            ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccllloooodddxxd:'...':;;;:odddxoolccllooloddooollodl:;clooooooooooooodoollllllllllc:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;;::::::::::::::::::::::;;::::::
            ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccllooodddddxd:'...';';:;:ldxdddoollllooooooooooolool:;:cooooooooooooollllllllllccc:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
            cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccllooddddddxdc'...';,',:cc:ldxxdodooooooooolooooooooool:;coooooooolllccccccccccccc::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
            ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclllllloodddddddc'...':,,,,:c::::lxdlooooooooxxdddooooooooooc::loooooollccccccccc:ccc:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;
            cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclllccccccccccccccccccccccccccccccccccclllllllllooddddddc'...':,,;;;::::,,:lodoooooooddxxxxxdoooooolldocccllllllccccccc:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::;;;
            cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclllllllccccccccccccccccccccccccccccccccllllllllllodxddooc'...';;,;;::,,:,,odolloooooooodxxxxxddoloolc:codlcllllccccccccc:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::cc:::::::::::::::::::::::::::::;;
            cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclllllllllllccccccccccccccccccccccccccccclllllllllooodxxxl;'...,:;,;;;:,':;,:oollllooooooodxkxkxddxdooollllodol:cllccccccccc:::::::c:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ccc::::::::::::::::::::::::::::::;
            ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclllllllllllllllccccccccccccccllllllllllllllllloooloodxxxdl,...,:;;:;::,';;;:lol::cloooooooodkkkdcclddoooollloolc::cccccccccccccccc:cccc::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::ccc::::::::::::::::::::::::::::::::;
            lccllccccccccccccccccccccccccccccccccccccccccccccccccccccccccccclllllllllllllllllllllllllllllllllllllllllllllooooooodxxxxl,...,:;;::::,';;;:cllclcclolloooooodkkdl::coddoollodololclllcccccccccccccccccccccc::::::c::::::::::::::::::::::::::::::::::::::::::::::::::cccccc:::::::::::::::::::::::::::::::::
            lllllllllllccccccccccccccccccccccccccccccccccccccccccccccccccclllllllllllllllllllllllllllllllllllllllllllllloooooooodxkxl;...,:;;::::',:::cclllldxolooooodoooodxkkdc::lddooooddolloccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::::::::::::::::::::::ccccccc::::::::::::::::::::::::::::::::::
            lllllllllllcccccccccccccccccccccccccccccccccccccccccccccccccclllllllllllllllllllllllllllllllllllllllooollllooodoooodxkxo;...,:;;::::'':;;cccllddxkkxdddddddddooodxkxdc:cdxdoloooooool:ccccccccccccccccccccccccccccccccc::::::::::::::::::::::::::::::::::::::::::ccccc:cc:::::::::::::::::::::::::::::::::::
            llllllllllllllllllcllllcccllllllclllllllllccccccccccllcclllllllllllllllllllllllllllllllllllllllllllooooooooooooddddxxko;...,c:;::c:',:;;cc;;ldxdxkOOxdddddddddddoodxkxlccoxxdlooodooooccccccccccccccccccccccccccccccccccccccc::::::::::::::::::::::::::::::::ccccccc::ccc:::::ccccccc:::::::::::::::::::::::
            llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllooooooooooddddddxddl;...,c:;::c:',:::cc:,,cdxxxkkOxddddddddddddddddddxo::oxxoooddddddolllccccccccccccccccccccccccccccccccccc::::::::::::::::::::::::::::::ccccccccccccccccccccccccc:::::::::::::::::::::::
            lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllloooooooooddddddxxxxxl,...,c:;::c:,,;',cc:,';ldxxdkkOkddddddddddddddddddxxxloxxxdooodddddollllccccccccccccccccccccccccccccccccccc:::::::::::::::::::::::::::cccccccccccccccccccccccccc:::::::::::::cccccccccc
            lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllloooollooooooooooddddddddxxxxkd:...,c::c:c:';c,';c:,,,;cdxxdkOOkdoddddddddddddddddddxxxxxxkxdoooodddolllllcccccccccccccccccccccccccccccccccccc:::::::::::::::::::::cccccccccccccccccccccccccccc:::::::::::ccccccccccccc
            lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllooolloolloooooooodddddddddxxkkkd:'..,c::c:c:';lc,,ll;,,,;ldxxdkOOkdodddddddddddddddddddddxkkxxkxddooodollllllcccccccccccccccccccccccccccccc::ccc::::::::::::::::::::cclcccccccccccccllcccccccccc::::cccc::ccccccccccccccc
            llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllloooooooooooooooooodddddxxxxkkkd:'..,c::c:c:';clc,,oxll:;looxxdxkOOxoddddddddddddxkxddddddodxkxxkkxxdoodollllllcccccccccccccccccccccccccccc:::cccccc::::::::::::::::cclcccclllllcccllllcccccccccccccccccc::ccccccccccccccc
            llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllollooooooooooooooooddddddxxxxkkkxc'..,c::c:c:';cllc;,oxdxdoc:lxxdxkOOxdddddddddddddxxdddxddddodxxxkdloxxdodollllllccccccccccccccccccccccccccccccccccccc::::::::::::cccclcccllooollllllllllcccc::cccccccccc:::::ccccccccccccc
            lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllloooooooooooooddddddddxdddxxxxxdoc'..,c::c:c:,;clllc;;okxxd:',ldkxxkOOkdddddddddddddxxc:ldxxxolodddkxc:ldxdooollllllllccccccccccccccccccccccccccccccccccc::::::::c:ccccllllodoooooolllllllcccc::::ccccc::::::cccccccccccccccc
            llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllloooooooooooodddddxxxxxxxxxxxxxxo:'..,c::c::;,;cccclc;;oxxxo,,cldkxxkOOkxdddddddddddddxc.',codxdoddddxdlccoxxooocclllllcccccccccccccccccccccccccccccccccccccccccccccccllloddxxdoooooolllccccccccccc:cc:::::::ccccccccccccccccc
            lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllooollllllllllloooooooooooodddxxdxxxxxxxxxkkkxl'..'c::c:,',;clccccc;;oxxdc;clldkxooxOOkxddddddddddxdxd;'..,:lddddoldxxdlclxxdooccclllllcccccccccccccccccccccccccccccccccccccccccccclodxxdxxxdoooolllccccccccccccc::::::::::cccccccccccccccll
            llllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllloooollllllllllooooooooooooodxxxxxdddddxxxxkxl,..'c::cc:;;:clcccccc;;oko:;cllldko::ldkkxddddddddddddxxc,,'..:ddoddddddxxdlcoxdoolccllllllccccccccccccccccccccccccccccccccccccccccllodxxxxxxxdddolcccccccccccccccc:::::ccccccccccccccccccclll
            lllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllllloooooooddoddddxxxxxxdxxxxxl,..,c::ccc:;cccccccllc;;oo::clllloolcloddxddddxdddddddddc,..,,,cxOxloxxdddddxdclxxdollllllllllccccccccccccccccccccccccccccccccccccllooddxxkkkxxddollcclccccccccccccc::cccccccccccccccccccccllll
            ooooooooooolllllllllllllllllllllllllllllllllllllllllllllllllloooolllllllllllllllllooooooooddxdddxxxxkxxxxxdl;..,c::c:,;;:ccccccllc:;;:::lllc:cllllldxxxxddxxxxdddddoc.   ..,cdkOc,coddoodxkxdxkxooollllllllllcccccccccccccccccccccccccllccccccllodddxxkkkkxddoolllllcccccccccccccccccccccccccllccccllllllloo
            ooooooooooooollooooooooolllllllllllllllllllllllllllllllllllllooooollllllllllloollloooooooddxxxxxxxxkkkkkkko,..,c::cc;,;:lllcccllcc:;,;cllllcclccllldxxxxxxxxxxxdddddl.     .,lxOd,.,cddooddxxkkkdoddooollllllllcccccccccccccccccclllccllccccllloodxxxxkkxxddollllllcccccccccccccccccccccclllllcllllllllloooo
            ooooooooooooooooooooooooooooollllllllllllllllllllllllllllllllooooooolllllloooooolloodooooodddxxxxxxxkkkkko;..,cc:ccc;:clxxlclllccc:;;:llc:clllllloodxdddxxxxxxxdddddd:.      .;dkl,',:oddddddxkkxdodocclllllllllllcccccccccccccllloolllllccllloodxkkkxdddooolllllccccccccccccccccccccccllllllllllllllllooodd
            oooooooooooooooooooooooooooooooooooooollooollllllllllllllllllloooooolllllloooooolooooodddoodddxxxxxxxkkkd;..,cc:c::::coxxxlclcccccc;;:llccllllllodc::oddddxxxxxxddooddl:..     .;:;;,,ldddddddxxkxdolc;,:lllllllllllccccccclllllllloollollllodxkkOOOkxdoollllccccccccccccccccccccccclllllllllllllllloooodddd
            oooooooooooooooooooooooooooooooooooooooooooooooollollllllllloooooooolllllllooooooooooooddddddxxxkkkkkkkd:..,cccc:,,;codcldlllcccccc:;::cllollooooc:ccclcldxdxxxxxdolodxdlc;.     .';lclxkxodddddxxdddooclolllllllllllllcclllllllllooddooddodxO000OOkkdolllcccccccccccccccccccccccllllllllllllllllooooooddddd
            oooooooooooooooooooooooooooooooooooooooooooooooooooooooollooooooooooooooolloooodoooodddddddxxxxxkkkkkko;'.,cc:cc:;:cdd:,ldllccccccc;;::clolllodl:cloxxdlccldxxxdxxdoodddxddl;.     .,;cdOkllxxddddddddddoooooolllllllllllllllllllloodxxxkkkkO00Okxdoollcccccccccccccccccccccccllllllllllloooooooooddddddddxx
            oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooodddddodddxdddxxxxxxkkOOx;..,cc:clc;:cddc,,:llcccccclc;;:llloocloc:clloxxxxdolcdkxxddddddolodxddo:.     .'cdOo,:dxdddddddoooooooooooooooolllloolllloodxxkkkkOOOOOkxollllcccccccccccccccccccccllllooooooooooddddddddxxxxxxxxxxxx
            ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooodddxdddddxxxxxxxxkkxxkkxc'.,cccclc;;coxo;,'..';:cclllc;;cllll:,;c:clllldxxxxxxddxkkxdddlllccoxxddxdc.     .'lo,':oxxddddddddolooooodddddoooooooolodxxxkkkkkxxkkkxdoollllllllllollllllllloooooooodddxxxxxxxxxxxxxxxxxxxxxxxddddd
            ooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooddddxxdddddxxkkkkkkkkkkxc'.,cccllc;;clxxc;..  .':cllllc;;clll;'..:lclllldxxxxxxxxxxxkkkxolc;:odxdodxxdc.     .';,',cdxxdddddddooddddddddxddddddddddxkkkkkkkkxxxxxddoooooooddddxxxxxxxdddddddxxxxxxxxxxxxxxxxxxxxxdddddoodooooooo
            oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooodddddxxxdddddxkkkkkkkkOkxc'.,cccllc;:ccdkd:.    .,clllccc;;clc;'...;lllllldxxxxxxxxOOkxxkOkxdlccdxo::oxxxl,.     .';,:dkkxddddddxodxooddxxxxxxdxxxxxxxkkxxkkkkkxxdoooloooodddxxxxxxxxxddddddddxdddddddddddxxxxxxxddooooooooooooood
            oddodddooodddddddooooooooooooooooooooooooooooooooooooooooooooooooooooooooddddxxxxxxkxxxxkkkkkkOOOxc'.,cccllc;:lcokkl.     ':cclcclc;;odc,.   ,lllllloxxxxxxxxkOOOkxxxOOkdlodll;:ddxxddc'.    .';okOkxdddddkxl,..:dOOkxxxxxxxxdddxddxkkkkkkdollllooooooooooodddoooooooodddooooooooooddxddddoooooooooooooooodo
            dddddddddddxxxxxxxdddddddddddddooddddoooooooooooooooooooooooooooooooooooddddxxkkkkkOOOkOOkkkOOOOkl,.'cccllc;:llcdxc.    .'ccclllclc;;dkdc.   ,lllllloxxxxxxxxkOOOOOkxdxOOkko;;clooxkxxddo;.     .cxkxxdddodxo'...'ckkddxkkkxxxxddodxxkkkkkxoolllolllllooooooooooooooooooooooooooooddddddoooooooooooodddddooo
            kxxxxkkkkkOOOOOOOOkkkkkkxxxxxxkxxxkkkkkxxddddddddddddddddddddddddddoooodddxkkkkOOO000O000000000Oo,.,cccllc;:llcloc.    .;:ccclllcldoldkxo;'..cooolllodxxxxxxdxOOOOOOOxddxkOkc'';cddodxdxkxo;.    .,ldxxxxdooo:,....';cdkOOOkkkkkxdxxxddddxdoolllllllllloooooooooooodddooooooooooddddddddoooooooooooodddddddd
            xxxxxxxxxxxxxxxdddddddxxxxxxxxxxxxkkkkkxxxxxxddddddddooooooooooooooooooodddxxxkkkOO0OOO0000000Oo,.,cccllc;cllclc;.    .;cclclllclxkkOkxxollloolollllodxxxdxxxxxkOOOOOxddddxkx;.',;coooooxdooo,     .;ldxxxxdol::,....,lk0OOOOO00OOkdollooddollllllllooooooooddddddddddoooooooooodddddddooooooooooodddddddddd
            oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooddxxkkkkOOOOkkkOOOO0kl,.'cccllc;:llccc;.    '::cllccccokxc:lldkd:ldc:lollllldxxxddddxdxxkOOkkddxdxdd;....';lxxoodxddo:'.    .,ldxxxoolc:;,....:xO00000OOkxollloddoooollloooooooddddddxxxxdddooooooooooodddddddooooooooooodddddddddd
            oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooddxkkkkOOOOOOkkOOOOko;.':ccccc:clcccc,    .':;:clcccldkoc:;,:dko:c:';loolllldxxxxdxxxxxxxxxkkxdxxxxx;.....,lx0kolldkxddo:.    .,coxdllolc:;,...'cxO0OOkkxdoooodddooooooodddoddddddddddddddddooooooooooddddddooooodddodddddddddxxxxx
            oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooddxkkOOOOO000OOO0Oxo;.':ccl:,;clcclc'    .,:::cllcclxkl:cc;;:dkdco;.;lollllldxxxxxxxxxxxxxxxxxddxxxxl.  ..:odOklll:lxdoxxd:.    .'cdxl:lolc::;'..,lxkkkkkxdddoooodddddddddddddddddoooddodddoooloooooodddddoooooddddddddddxxxxxxxxxx
            oooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooddxkkkOOOOO000000xl;.':cclc::cllcc:'    .;::ccooccokxc:ccc;;:dkdco:.;lolllllodxxxxxxxxxxxxxxxxxxxxxxxo;.,lcldk0l';ccooodxxxd:.    'oko,':lolc::;'..,lxkkxxdddddddddddddddxxxdddddoooooooddoooolooooooddddddoddddddddddxxxxxxkkkkkkk
            oooooooooooddddddddddooddddddooooooooooooooooooooooooooooooooooooooooooooddxkkkkkOOOOO000ko;.':ccc:;:cllcc:.    .;;;:ldOdcdkdcccccc:;:dkdcol,:lclolllodxxxxxxxxxxxxxxxxxxxxxxxOOdlolcdx0x,.';looodkxxxo;..;lxxxl..':lolc::;'..;lxkxdddddddddddddxxxxxxxddddooooooooooooooooooddddddddddddddddxxxxxxkkkkkkkkk
            oddoooddddddddddddddddddddddddddooooodddoooooooooooooooooooooooooooooooodddxxkOOkkOO0000Od;.':cclc;:cllllc.    ';:::ldkOddkl:cccccc:;:dko:llcccoooolloodxxxxxxxxxxxxxxxxxxxxxxkkddkocoxk0c...';lxxdxddxdl:cdxxxx:...':lolc::;...;lxxxxxxxxddddxxxxxxxddddooooooooooooooooddddddddddxxxxxxxxxxxkkxkkkkkkkkkkk
            ddddddddddddddddddddddddddddddddddddddddoooooooooooooooooooooooooooodddddxxxkkOOOOOO0000x:''::ccc::loollll:.. .:::coxxxOkxc:ccccccc:;:dkdcclclxkdollloodxxxxxxxxxxxxxxxxxxxxxxkkl,clcldx0x. ..,cxOxdolloxddxxxxxd,.'..,:lolc::,...;lxkkkxxxxxxxkkxxxdddoooooooooooooooodddddddddxxxxxxkkxkkkkkkkkkkOOOkkkkkk
            ddddddddddddddddddddddddddddddddddddddddoddddddoooooooooodooooooooddddddxxxxkkO000000K0x:'':c:c;;:ldxolllll:,';;:coxdloxd::cccccccc:;:odllccoxxkxoolloodxxxxxxxxxxxxxxxxxxxxxxxkd;.:ocodOO; .';ldkkccoccoxxxxxxxkl...''',:lllc:;,...;okkkkkkkkxxxxxxddddooooooooooddddddddddxxxxxxkkkkkkkkkkkkkkOOOOOkkkkkkk
            dddddddddddddddddddddddddddddddddddddddddddddddddoooodddddddddddddddddxxxxxxxkkO00KKKKOc.':cccc::ldollllllcc:::ccdxo:cddc:cccc::cclc;:lllclddxkkdoool:',:oxxxxxxxxxxxxxxxxxxxxdolc',olldx0x;'cccoxOo';cldxooxxxdxx;....''',:llc:;,.'cdkkkkkkkxxxxxxdddddooooooooddddddxxxxxxxxxkkkkkkkkkkkkOOOOOOOkkkkkkkkkx
            dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddxxxkkxxxxxxxxxxxxkxkkOO0KKOl'':ccl:;:ldoclolllcccc:cldxo:,:xklcccc:::cdkkoclccodloxxdoooc'.....,coxxxxxxxxxxxxxxxxdoccllcolcddk0OddocodOk;.,;cddodxxxxkd,.....''',:cc:coxkkkkOkkkkxxxxxxddddddooooooddddxxxxxxxxkkkkkkkkkkkkkkOOOOOOkkkkkkkkxxxxx
            ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddxxxxkkkkkkkkkkOOOOO00KOl'':cclc::cddc:lollccccccoxxl;,,ckxcccc::clxOOOxlcoxdlcodoool;..'',;,'.';ldxxxxxxxxxxxxxxdoc:clollodx0OdxxcldxOd,..,lkxldxxxxkl..........':dkkkkkOOOOkkkkxxxxxxddddooooodddddxxxxxxxxxkkkkkkkkkkOOOOOOkkkkkkkkkkxxxxxxx
            dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddxxdddxxxxxkkkkOOOO000K0l'.:cll::cloxo:lolllcccccokdc;,;;ckxc::c:cokOdcllldkxdlooooo:...'..',,,;,''';lxxxxxxxxxxxxxddoolclooddk0o,clcodkk:,;:oxxccxxxxxx:....','.'cdkOOOOOOOkkkkxxxxdddddoooooooddddxxxxxxxxkkkkkkkkkOOOOOOOOkkkkkkkkxxxxxxxxxxx
            dddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddxkxxdddxxxxkkkOO0000K0o'.;cclc::ldkkoodlcllcccclxOxl;,;':kd::::lxOklcc::dOkkdooooc,..''',;col;,,,;,'',:oxkkxxxxxxxxdxOkdocclodkx;'olldxOl;lcldkxolodxdkd,..',;;;;dOOO0OOkkkxxxxxxdddooooooodddddxxxxxxxxkkkkkkkkkOOOOOOOOkkkkkkkkkkxxxxxxxxdddd
            ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddxxkkkkkkkOOkOOO0000KK0o,.;cclc::looxkodxlcllcccclkOkdll;,dOd::cokOdccll::dOkdoodl;..''',:llloddoc:,,;;,'',:oxxxxxxxxxxOOkxxolclodl;cdlodkOoolcoxkkxodxxxxl,,;;,;,.':okOOOkkkkxxxxdddoooodddddddxxxkxxxxkkkkkkOOOOO00OOOkkkkkkkkkkkxxxxxddddddddd
            ddddddddddddddxxxxxxxxxxxxxxxddddddddddddddddddddddddddxxxxxxkkOO0000000KK00000KKd,.;cllc:;ldllxdoxdllllcccclxOkdododOOo:cxOklcclllc:dxdoooc...''':ll:,..;coddoc;;cc:,'',coxxxxxxxkOkxdxxdollooodlldxOOkxclxxkOOkxxxddc;;;;;'...':dkkkkkxxddddddddddddxxxxxxxxkkkkkkkkkOO000OOOkkkkkkkkkkkkxxxxxdddddddddddd
            xxxxxxxddddddxxxxxxxxxxxxxxxdddddddddddddddddddddddddddxxxxkkkOOOO0KKKKKXX00KKKKx,.;cllc::ldd:okoodollllccclddxOdoxdokOookOdcclllllc:loool,..,;,;cl:'.......,codoccloc;;,'',cdxxxxxkkkdodxkkdllloooddkOollcdxxxkOOkxxddc;,,,;;,'..':odxxxdddddddddddxxxxxkkkkOOOkkkOOOOOOOkkkkkkkkkkkkkkkkxxxxxddxxxdddddddo
            xxxxxxxxxxxxxxxxxxxxxxxddxxxxxdddddddddddddddddddddxddxxxkOO00KKKK00KXXK0KKKKKKx;.;ccll::cokolkxololllccccoxkkkkolo:lOOkOklcclllccc:;col;..';c:;cc,............,clcccc:,,;;,'';cdxxxxxxdoxkO0OxollooddOd:llldxxddxkkkxxd;',,,;;;,'..';lxxxxxxxxxxxxxxxkkkkOOOOOOOOOOOOOOOOOOOOOOOkkkkxxxxxxxxxxdddxddddddooo
            xxxxxxxxxxxxxxxxxxxxxxxxddddxxxddddddddddddddddddddxxxxxkOO000KXXKKK0KXXKKK0KKx;.,clll::clxkoxkdollllcccldkddOOkodl,lOOOdcclclc:coolcc:...'';;,;,.........'.....,c:clodoc;cl:;,'';ldxxxxxxkO000Okdollodxllocoxxxdxdxkkkxl. ..',;;;;,..';lxkkkkkkkkkkkkkkkkOOOOO00000000000OOOOOkkkkxxxxxxxddddddddddddddoooo
            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxddddddddddddddddddxxxxxkOO0KKKXXXXXXXXXXXKKKk:.,cllcccllokxdxdolcllccclxxlcxOOxodo;lddlcccll::ldooolc,.''',::;,;cc,....,:lc;'':oooc,':odl::c:,;,'',:oxxxxxxk0K00kxdollooodlcdxkddxkkxxdoc,.  .',;;;;,'..;oxkkkkkkkkkkkkOOOO000000000OOOOkkkkkkxxxxxxxxxxxxxxxddddddddddoodd
            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxdddxxxdddddddddddddddddxxxkkO00KXXXXXXXNNNXXXXXO:.':ll::cllldxdxxolllllcclxxc:ck0Oxodooxl:cllcc:codlcccccc:'':c:'.:lcdxo:,,'',;::llc::l, ..,:cccll:,::;'',:oxxxxxk00OxdxxdolloooodkxdxxkOkdoll;.   ..',;;,;,..,lxkkkkOOOOO00000OOOO000OOOkkkkkkkxxxxxxxxxxxxxxxxdddddddddoooodd
            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxddxxxxddddxxxxxxxxxdxxxxxxkO0KKKXXXXXXXXXNNXX0c.';ccc:clllcdxooocllllcldkd:::lO0Odlodoc:ccllc:ldoc:,;;;::;;::'...;:;;;c:,'';;;,,;,..;:'...;clcclddl:llc;,'',:oxxxxkkkdodkkxdlloooxxxxxxOOkxdo:.      .',,,;'.':dOOO00000000000OO000OOOkkkkkxxxxxxxxxxxxxxddddxdddddddddddddddd
            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkxxxkkkkkkkkxxxxxkkkkkOKXXXXXXNNNNNNNNN0l.':cc::cllcllxxolcccoocldxl::::oOOkolxo.'cclc:cool:;,,::;;,,,,,,.. .'''''''','';:;,''.':c:;:oooo,.':lc:cc:;,;,'',coxxxxxddxOO0kdollodddxxkOOkxxd'        .',;:;d00000000OOOOOO00000OOkkkkkkkxxxxxxxkkxxxddddddddddddddddoooddddd
            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOOOO00OkkkOOOkkkk0KXXXXNNNNNNNNNN0l.';::::clccllddolccldkdlxxc:c:::dOkxdlc:'.;::clolc;,,:loolc:;,:lll;.....''.'....';;,,;;,,,,:;,,;:' ..;cccodoc:ll:,'';cdxxxxxkO000kxdolloddxxkOkxkl.         ..;d0KKK000OOOOO00000OOOkkkkkkxxxxxkkkkxxdddddoooodddddddddoooooddddd
            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkOOO0000K0OO000000KK0OOOOk0KK00KKKXXXXXX0l'':c:::ldoclloddlccldkkxxdc:c:::cxkxko::c:..:lodl;,,;codxdoolcc:;;::;'.'''........,,,,;;;:;,'...'::''codl;';loc:c:;;;,',;ldxxxxk00Okxxxollodxxkkxxx:       ... .lkKK000000000000Okkkkkkxxkkkxkkkkxxddddooooooodddddddddddddddddddd
            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkkO000KK0000000000KKKKOOOOO0KK00KKKXX0c',:cl::ldollllodlcclxddkko:cc::::lxkxl:ccc:..;dddc,,clodxOOkxdol:,...'.''.......';;cl,...',;;,,,,,,;:::;:c,. .;cccooc;cl;,',:ldxdxkOOxodkkooxxxxxxxkd'           ,oxO0K0KKKOOkkkkkkkkkkkkkxxxxxxxdddooooooooodddddddddddddddxxxxxxx
            xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxkOOOOOOOO000KXXXXXXK0KKK0KXXKKKKXXOl',cllc:lddlllllllccoxdcodl:ccc:::lddlc:cccclc..lo:::cldxkkkOOOOkdlc;'........    .,';c'    ...,;;;:;,''..'c;..;lol;;lol:c:;;,,',:odxdxxxdxOkdxxxxxkxxkl.          .cooxO0Kkoclddooxkkkkkxxxxddddddddooooooooodddddddddddxxxxxxxkkxxx
            xxxxxxxxxxxxxxxxxxxxxxxxxxxkkkxxxxxxkkOOO00KKXXXXNNNNNNNNNNNXNNNXXKKXKl',cllc:lxxolollllcloxd::oo:ccc::cokxc:ccc:codo;..;;;:oxkkxxxkkkkOxoolc:,.....      .,;c,..      ..',;;,',,,;::cc:cl, .,cccooc:cc;',;coxxxxxkOxxxxxxkkxkx;       .,::looddxxc:clodooodxxxxxxddddddddddddddddddddddddddxxxxxxxxkkkkkkkk
            xxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkxxxxkkkOO0KKXXXXXXNNNNNNNNNNNNNNNNNX0o',cllc:ldkxollllllldkxc,,ol:ccc:cdOxc:ccccldoodl. ';cokkkxxxkOOkkkxoooolc:'...   ....,;c;......     ..',;;;:;,,,'.,c,.,col;;colcc:;;,',;ldxxxkxxxkkkkkkxkd'.''';ccddcclddxdl;;:cloooooodxddddddddddddddddddddddddddxxxxxxxxxxkkkkkkkkk
            xxxxxxxxxxxxxxxkkkkkxxxxxxxxxxxxxxxxxkkkkkOO00000000KKKXXXXNNNNNNNNKo''cllc:lddxdolllllldxOOo:ldc:ccclkkocccc:coooddc;. .:oxkddxkkkOOOOOkkxddollc;,. ......',::,;;'......     ..',;;,',,,;::c::l,..,ccloo::l:,,,:ldxxxxxkkkkkkxxl;;odxxocdoccoddxxocccodooooooddxdddddddddxxddddddddddxxxxxxxxxxkkkkkkkkkkkk
            xxxxxxxxxxxxxkkkkkkkkkkkkxkxxxxkkkkkkkkkkkOOOOOOOO0OOO000KKKKXXNNNXo'':llc:cdddxdolllloxdokOdoxdc::cdOxlcccclcloodl;'... ,odolokxdxkkkkkOOOkkxoll;'.........'::'';;;'........    ..',;;::;,,'.':;.;loc;;llllc:;;,,,:oxxxkkkkkkxxxc;looodooooclodxxxddoldxdoooooodxxxxxxxxxxxxxxxxxxxxxxxxxxxkkkkkOOOkkkkkkkk
            xxkkkkkkkkkkkkkkkkkkkkkkkkOkkkkkkkOkkkO000OOO00O00KKKKK0KKKKXXXXNXd''cllc:coxdddolllloxocokkddko:clkOoccccclooodoc,'.... .colloddxOOOkkkxxkkkxollc;.........'::.....',,:;,'.....   .,,',;;;,,,,;;::::c'..:ccodc:c:,,,;cdxkkkkkkxkd::cccclooxdcldddxxxddddddddddoxxxxxxxxxxxxxxxxxxxxxxxxkkkkOOOkkkkkkkkkkkkk
            kkkkkkkkkkkkkkkkkkkkkkkOOOOOOO0OOO00OO00KXK00KKKKKKXNNNXXXXXXNNNXd,':llc:cldxddolllcoxd:;dOkodxlcdOxlccc:cododdl;''....''.,ooodxkkkOOOOOxoooddollc,..  .....';:'.   ....',,'''''.. .ldl...',;::;,'..':;,col;';ccllc:c:,,:ldkkkkkxxo:c:;::ccoolcodddddxxdddddloddxkkkkkkkkkkkkkkkkkkkkkkkOOOOOOOOOkkkkkkkkkkk
            kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOO0KXXNNNXXXXXXXXNNNNNNNNNNNNXx,.:ll::lllxxooolllcdOxcckOdoxdoxOoccc::looddo:,''..'';;;..:dxkkxdxkkkkOkdoooololc'... .....';:,.     ...,,',;:::'..,cl,    ..,;;,,,;;;:;;:,..:ccldocc:;;,;:lxkkxxxl:cc:;:::ccclodxddxxxxdddolooodxkOkkkkkkkOkkOOOOOOOOOOOOOOOOOkkkkxkkkkkxx
            kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOOOOOO0KXXXNNNNNNNNNNNNNNNNNNNNNXx,';llc:clclxdoolllclxOkoxd:,;cxkxlccc:cloodoc,''..',;:,..:.'xkxxdxkOOkkkxdooooooll,... .....';:;. ......':c;;;,,;,..'cl:...    ..',;:;,''.,::coo;.':ccol:cc,,;:oxkxdlldocc;;:::cldxxkxdxxxxdddooooodxkOOOOOOOOOOOOOOOOOOkkkOOOOkkkxxxkkkkxxx
            OOOkkkkkkkkkkkkkkkkkkkkkkkkkkkOOO00KKXXXNNNNNNNNNNNNNNNNNNNNNNXx;.:lcclllldddollccloxkxdo;...,doccccclooddc;''...',col'.,o;.:ddxkkkOOOOOkkxxddooll,... .....';c;. .....;ccllolc:;;'..:lc,.....    ..',;;;;;;;,,:;';lc;:llllc::;,;coxdclodolc;;:::coxkkkddxxxdxdddodddkkkkOOkOOkkkkkkkkkkkkkkkkkkxxxxxxxxxxxx
            OkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkOO00KKXXXXNNNNNNNNNNNNNNNNNNx,,cc:oollodolllccldkkOxo;.   .;:ccccloddl;''...',:,:dd:ldol..cdkxdxkkkOOOOOOOkdool;......','',c:.....'':oolooolccc,..;ll:;;;'.....    ..,;:;,,,;;:::c,.;lcldlcc:;,,;c:;;;:ldoc;,,,;ldxkxloddoddxxddddkOOkOkkkkkkkkkkkkkkkxxxxxxxxxxxxxxddddd
            OOkOkkkkkkkOkkkkkkkkkOOOOOOOOOOOOOOOO0000K000KKKXXNNNNNNNNNNNNk;;lc:odllodollllcoxdxOko,     .;ccclodoo:,'....,;;..;xxxdolo:.,dxddkOkkkkkkkkOOxool;.......''',:c;'''',,:ododdolllc;..,clc:;;;''','...  .,:,',;:;,,'';::lo:.,cclol:;,,::cc;;ccllc,.'cooxOdccodxoldxdddxxkOOOOOOOkkkkkkxxxxxxxxxxxxxxxdddddddd
            OOOOOOOOOOOOOOOOOOOO0000000000K0000000000KKKXXKKKXXXNNNNNNNNNO:;llclddlllolcodooxocdxc.   ...;:cloddl:;,....';;'. 'oxdllolol,.cxxxkOOOOOkdoddxdool:..........,:c:,,,;;;;ldoxdooccc:'.'cllllc:;;,;:;,'.. ;dc. .',;;;;;;,';:;coc;;lo;.',,,:::cc:;::;;;cddkOdcldkxddxxxdddddkOOOOkkkkkxxxxxxxxxxxxxdddddddddddd
            OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO000KKXXNNNNNNNNNNN0:;loccdxollllcoxxxdl:ll,.   .',;cloddo:;;::,'.':,. .cxkxookxllol',xkxxkOOOOkdoooooooo:........''';::,,;;;;:lxodxxxoll:'..:llcclllc:;:::::' .:c,.   ..';:;,;;:::::.....   .....';c:;',c:clooxkdooxxxxddddxxddddkOkkkkkxxxxxxxxxxxxxxxxxxxxxxxxxx
            OOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOO0000000000KKXXXNNNNNNNNN0c;locclxxllllldxxkdcclc.   ..';:codddo:;;clc:;,co,'cdxoxkoxOxloxkc.cxdxkkkkkkdooooooooc........''';::;,,,;;:cdookxxxool;..;llccooocc:coc::,..;oc'...   ..',::;,,'..         ... ..';::c::clclllccldxxkxooddodxddddxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
            xkO000000000000OO00000KKK0000000000000KKKKKKKXXXNNNNNNNNNNKc;loccl:ccllclddlooccl:.    .,;clodddc,',cooc::;oxodkocokkoxOxloxkd,'okkOOOOkkxddooooolc'.......'',,::,..';;;:cccoddxxxdc'.'clcclooooccolllc'.'ll:;;;'...  ..,;;:,                   .';cl:cllolcccllodxdlolloodxddodxxxkkkkkkkkkkkkkkkkkkkkxxxkk
            ':xKKK0000KKKXKKKXXXXXXKK0000000000KKKKKXXXXXXXXXXNNNNNNN0l;loccoc..,clldkxllccl,   ...,:codddl;'..;looc:::oxddkolkOxdxkdlodolc':xkOOOOOOOOkkxdoooc'.......'',,;,... ..',;:;;:cooddl;..:cllokkkxlcloool,..:oc:::;,,;,,. .:,.. .                    .';coddddolccllcc:coooldxxxlcc:ldxkkkkkkkkkkkkkkkkkkkkOOO
             'kXXXXXNNNNNNNNNXXXKKKKK000000KKKKXXXXXXNNNNNNNNNNNNNNNKc,cocldl. .:loddxxolc:.   ..,;:ldddoc,''.':oolc::cdd,;xooOOxdkkdlllcld:'lxkkkkOOOOOOOkdool'....',''''';;....     ..',;;;::::'.,lllokOOkdclooooc. 'llll::::cco:..:,.........                  .,c:clolc::;,;;;:lodxxxxocllllloxOOOOkkkkkkkkOOOOOOOOO
              :0XXXXNNNNNNNNNXXNNNNNXKKKKKKKKKKKXXXXXXXXNNNNNNNNNNNXo,clccdl. .:llxooxdol;.   .';::ldddc;,''',;loolcc:cxo':xodOkxdkkdllllldo,,xOkkkkkxxkkOkdool;....',....';;,........    ...,,;;'.';cccokkOxllddxxd;..:lllll:;ccc:'.,:..''''.....                 .;c:::;;;;;;,'.'::coxxdxdccllllldkOOOOOOOOOOOOOOOkOOO
            ;;:xKXXXNNNNNNNNNNNNNNNNXXXXXXXXXXXNNNNNNNNNNNNNNNNNX0Ol;clccoc. .:llokdxkdlc:c:..,::coddl:,'''';coooolcc:lko,lxoxOkxdxlcclllodxl'lOOOOOkdoodddoool;........'.';:clc:,......      ...',;,;cccodxdlcoxxkkl..,lllolc;cdoc;..::';;,;'........              '::cc:::;,;;,'';;:ldxdloooddlcllolodxO00OOOOOOOOOOOO
            00XNXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKx:,clccodl'':ccldxxkxolcdxc,;;;codoc,'..';;;lxooolcc:oko;oxlxOkdc::clooxxkkk:,xOOOOOxdoooooool;... .',;;'.,:clccolcc:,...         ..',:c:;::c:codkOx:..clcodoc:lool'.,c,..',,;;,'..'....            ......'',;;,'',;cdkkklcdxddollllllllokOOOOOOOOOOOOO
            OOKXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOc,clclooxd::cclxkxxkdooxdc:::'.cdl:'...,;;.'oxooolcc:okl;dxlxxlcclllldkkkkxl,';ccodxxoooooooll;... .,'.,'',:clc:oollclll:;,'..      .,:,. .';;;;;ldxl'.,lldOOo:loddc..;;''.,'..,;;;,,'''.                    .''',,:oxxxOkdoxxdoc:lllcllclxO0OOOOOOOOOO
            O0XXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0l,:lcldoodlcloodxko:ccdxlc::cllclooc;,'':;.'lkxoooccccdkc;xxcccccc::clokxoc:;cdxdlccc:;cooooool:.....,'';'.,:clooddddlclooolll:;;,. .;;,.     ..',;:c:,..cllk0kocoxkk:.'c:;';c,...'',;:::;.                      ...'ckkxxxxddxxooc:lolllllclk0000000000
            0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXo,:lcldxoddloxxdlxx,..,lc:ccloooooodl:;;:ocldkkdoolccccxkc:llcccc:::cllod:':dxxkOOOOOkxddxxdoooo:'....';,'...;::clodxxdoooddl:loooll,.,::;.        ...';,,;cclxkdclxOKd..;c;,.coc,.,;...;;::,.  .....                .'oOOOkxdodxxddollclllllclx000000000
            0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXd;:ccldxdoolodxdcld;.  .;c:coddooooddl:::lxxxlokdoolccclxxccclc:::ccllllcc:cdxxxxkOOOOOOOOkOkdoooc'...........;:::::::cclloddoooddocl:..:c::;,...        ..',;;ldoc:lx00c.':;,.,ll:..cl'.....;,..'''''...               :xkkOkkxooxdlolllc:oollcldxO000000
            0XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0occcloddoollddlcc:.  ..,:clodoccloxdlc:::oodxcdkdoolccclolllc::cclllllllllcldxdodxkkkkkkkkOOkxoooc.............,;:ccc:col:::ccloxkxdol..;cccllllc;,..        ';;;..;::lkd'.;c:;':dl;.,c:..,'..:,.,,,;;,'.....           ;kkkkdodolloccc:cllodlcclllok0KKKK
            KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0dlcodl,':lcoxdll;.  .';:lodoc,,ldxxdlc::cdlldcxkooolccclllc::clllloollllllclodddkOOOkkkxdddxxdooo:..................',;loc:::ll::cclll,.;lllllodoloooc:,'.. .;:.   .',;cc;.':ll;,ldo,.:l;.,:;.;l'.,;,,;;;,''....     ..'lOkodxxdlcc::::;;:clooc:oolcloxO00
            KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKxdloxo'.'cldxxoc'   .';clddl;'.:dxkOxlc::lxlddckxooolcllc:::clllodxxdllllclodxxxxkOOOOOOxooollllllc'.......................',;loc:::ll:;';::cldxxxooddolodoc'.,:,.     ...',;;clo:;dxc.'oo,.;c,.,..';,.';',;::::'.   ..,:lkOxloxkOkdlc:cllccdxddllddlllloxO
            XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXNXxddodo'.,coddkx:.  .',:lool:,..'cxO0kocc::oxlxolkxolllcc::cllllodxxxxdlllloxxxkkxxkOOOOOOkdooooooool,.',od;.... ..................',;locc::::::cloddddddoodooc..::;,'.       ..',::;cOOc.;xo.'ll'.'.;ll:,:;..,;:lo;':loodxOOOOxoodxxOkddlcldlcodddooddoolllo
            XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKKXOddool..,ldxloko:;'.,;cooo:;;,'.;dOOOkocc:cxdoxloxollcc::clllodxxxxxxxdlllldkkkkxdddkkkkkkkdooooooolc;'';xXd.             ...............',,;:ccc::::ccclodkkxo,.;cclooc:,'.     .co:;d0k;.lOl.,dc....cl:',l;.,,.';,ck00OxxkOOOkxdoddkOxoddldxoodoodxdxxdoooo
            XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0xddxxdoc'.;coxolxkddl;;:lodl;,:c:,;lkOOOxlcc:lxooxlloll::cclloodxxxxxxxxxdllloxkxddddxkOOOkkkkxxddddc,''''.,xXk:,''..                .............',;::ldl:::ccllo:.'cccoxooddocc:..:xko;:xko.,O0:.lkc...,c:;';l,.;'.,..cxOOkddkkkkxdddxdkkllkxodkddxocoddxdddxd
            KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXkdddxxooo:;codxloxkdl::clol:'.;lc;;:dO00Odlcc:okolollc:;:cllodxkxxxxxxxxxxdlolooolldxxxkOOOOOOOOOOkkxc';cl:.,dX0oc:cxkl;'....                ............',;;col::lc;,::cdkkxxxddxdl..oOOl;cdl,.:kd''kO;.',:ll:,:l..;'';.'::looooollccloddxOkddkxoxkodxdoooodxxdd
            KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0ddddxdoolclddkdlodlc:ccool;...coc;;cxO0OOoccccodllcc::cllodxxxxxxxxkxxxxxxdooolllloxkxxkOOOkOOOOOOOOOl,;lc..'lxo:,';kXOoc:,,,;,......              ............'',clccc::cclooddxkxd;.;kOx:,;...,cc,.;ko'';;loo:,ll.,;.,,.:doc::ccccc::::clokkdxOxoxxookxdxoloddx
            KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKxoodxxollcodxxkoooc::cooool;'.,ll:;:okOOOkoccccllcc:clloodxxxxkkkxxkkxxxxxxooooololoxkxddxkkxkkkkOOOOOo'...  .''..',;xXk:lkkxo:::,',,''......            .............'',::cccllcloddl''ldl;.;'  ...'.':c;.,::ldd:;dc.::.;,.l0OdddollcclddddddkxdxOxdxxodxdoxxddxd
            KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXOdodxxdlccoxdoxkxlc:cloooloo:,,coc:;cdO000klccllc:ccllodxkkkxxxxkkkkkkxxxxxxolooollllddddxkkkxxxxxkkxxdc'  ..''','.';;dX0lcodxo;:oc,;l;'cc:;,'..''...          ..............',:cccol:l:;:;,,.,l,.. ..  ..'.';::oxd;:x:.l:'c,'d00OOxxddlcldxO0OOkxxxkxdxxoodooxxxkx
            KNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKdodxxxollodxodkxl::cooc:lool:;:loc:;lxO00OdcccccclllodxxxxxxxxxxkxxxxkkxxxdoollooooodxxxxkOOkkkkkxoc;,..',',cl:,,..';,oKX0Okxdddk0Oc:ko,ldoddl:,:o:,,'........       ..............,;;cllcc;,,'lxdl,';,. ..  .',cdxo;lo.,o;,o,,k0O0Okkkxoooclk00000kxxdoxxoodddxddk
            XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXkddxxddoodxkxoxxl:clol;':dxo:;;col:::ok000OoccclllodxxxxxxkkkkxxkkxxkkxxdooooolooddxxkxxxxkOkkkdlol;..   ';,:c:;,,....'l0X0O00KKKXXK00KOo:oOOdlc;;:;:cc;,cxxlcloc;....         ...........';;,,',okxo,;xd:',;'..:coxxc;c;.,:.:l':O0O0OxxkOOOkxkkkOOkkxxxoodooddodxxd
            XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOddxddddoddxkoodoccll:'.'lkOd:;:loc:;cdO000klclllodxkkkxkkxkkxxkkkkkxxddooooooodxkkxxxkxxxxxkkkxdc:c;.    ';.......',;;;:loc:lodxkkOO000KOodO0Oxxxkkoccdd:cO0dxkdOxdkkdlc:,'..       ...,:;..,,,'.,ldxc'lkx:;dkc':c;cdd;',. .'':,.:kOO0d:coxO0OOOkkxoclllllccclooodkx
            XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKxdddlloloolddooccloc;;,';kKOl:;:ooc::coO000xclodxxxxxkkkkxxkkxkkxxdddooddooooooxkkkxkkxxddodxxxdolcl:,.   ..    .;::;'..''''''',,,;;::cldxxkOO000KKKK00KKkxK0xko;lxkKklldddddoolc:;;;:coxOx. ..';:'';cl::odl,:kkc,,,cl:,':,  ....'.,cdO0ocodxO0OOkxxdolc:lllloolldddk
            XNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN0xdoc:clclcclccccol;,:c;;o0Kxc:;lolccccd000Odcoxxxxxkkkxkkkkkkkxxdooddddddddoc;:xkkxxddddddxkkkxdolll:,...,'. ....;dkl.    ............'',,,;;:cclodxkO0000KKOk0Kkkk0XOlc:::cclldkxkOOxodxkOl. ..,;..',:cccccccldl,',:dl;',oo,.'... .,lk00dodxxOOdccccccc:cdxlldoodxkk
            XXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNKkdol;:ccooloo::cl:,.,c:;ckK0d:::oolccccx000Ooldxkkkkkkkkkkkkxxddoddddddddl:,.. ,dddxdddxxxxxkkxxxdlll:;::cc;';cll;;xKd' .            ....';cc::;,..',,;;:ccoddxO0K0OO0000Okxdoolc:;;lOOddxkOx;....      ....,;::ccllc:lo:;';xd;:o,';';k0000doxxk0Ol::ccccc:lxkxxdlldkd
            NXXNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNX0kdoc:;,,,;;,;;,:lc;,,cl:;o0KOl::cllccccoOK00klldxkkkkkkkkxxdddddddddddoc;'.     ;ddxxxkkxxxxxkkxxxolc:cllodo:;loc;',xKk;',,'''......     ..;oddxxo'..........'',;;:clllodxkkOOOOOkxxddO0ddkOOkdc:;,'.....       ...',;,.,;,'.;lc,co;co;cO000Oddxxk0kc:ccccccccl:,,..;xk
            Xx;lKNNNNNNNNNNNNNNNNNNNNNNNNNNNNNXkoddc:,........,;cdl:;:oc;cxKKxc:ccccclood0000xloxkkkkkkxxddddddddddol;'.         ;xkxxxxxxxxxxxxxxxxxdddddxxd:.':'..,dKkc,;;;;;;;,,,''.. .',;lxxxxx;         ........';;;;;;;::ccodxkOO00kdxOOOOxoolllcc::;,'.......',;,  .';:,':ccl:;lc,lO0O0kodxxk0xc::cccccc:,;:,..:x
            o'..oXNNNNNNNNNNNNNNNNNNNNNNNNNNNKOxxddl;....   .,llodl::lo::lOK0occccclodxdx00kkoldxkkkkxddddddddddl:,..          ..;xkxxxxxddddddxxxxxxxxxxxxxo:,',,;;:okkl;:::::;;;;,,,'...',;ldxxxxoc:;'''..      ..'cddxo,......'',;;:lxkxxkOOOkddddoooooolllccccloolcc'.........',;::::cdOOOOdoxxxO0xc:cllccc:::ll,..:
            OxxOKXNNNNNNNNNNNNNNNNNNNNNNNNNXOkxdddo;.      .,::cddc;col::x0Xkc:cllodxxxxxkdooooxkxxddddddddddl;'.          ......:xxdodddddddxkkkkkkkxxxxxxxdc:ccllooc::::::cc:::;;;,,,'. .;;cdxxxxxOOOdoxko'  .  .,,cdxkx:      ......'cdOOOOOOOxddddddddddooddddddolllol:,'....     ..';codxOkdxxxxk0d:ccccllc;;col,..
            NXNNNNNNNNNNNNNNNNNNNNNNNNNNN0xkkxdoddo:'''....;;,:odl::loc:cxKKdclodxxkxxxddolodoodxdddddddddddo;...      ..........:dddddxxxxxxdkkxxkkkkkOOkkkkxxxxkkkkc,',,,;;;::;;;;;,,'. .,;:dxxxxxxkkxox0O:   . .,,:dxkko,.....    ..,ldkOkOOO0Odlodddxxxxddxxxxxxxdddxkdoolcc:;,'..';;cdxdk0000OOOkOkdol,'''...,,....
            NNNNNNNNNNNNNNNNNNNNNNNNNNNNKxdkkxodddxdodo::;;',:dkdl:cdocclkX0oldxxxkkxkxoodxxdodddddxdlc,'lxdoc;;'  ...........'''cxxxxxxxkkkxxkkkkO0000000OOOOOOOkkkkl'.....'''''''',''.. .,;:oxxxxxxkkkodO0o.  ...,;;lxxkxc,,,,,''. .',cdxkkOOOOkc''',,;;:ccloddxxxxxddxxddxdddooollloooooxxk0OOOOOOOOOOxc.. ....,:'...
            NNNNNNNNNNNNNNNNNNNNNNNNNNNKkxxkkdoodddooolcc;'';lkkoc:llccco0Xkldxxxkkkkkxodxkxdddddoc;'.  .lxdoc::,.......'''''''''lxkkkkkkkkxxdxkkkkkOOkkOOOOOOO0Okkkko:::::;;,,'''''''... .';;ldxxxxxkOOdok0k,  .. ';;cdkkko:;;;;,,'..,,:odkOOOOOOxc:;;,'''..'',,;;:codddxxoodxxddddodxdooldkkOKK00OOOOOOkl;'.....',;:,'
            NNNNNNNNNNNNNNNNNNNNNNNNNNKxxxkkxdddddolol:;:;,;cxOdlc:c:cllx00doxkkkkkkxdddxkkxdol:'..     .cdollc:,........''''.'.,lkkkxxxddoooodxxxxxxxddxxxxxxkkkkkkkxddxxddoc;',:c:c:'... .;;cdxxxxxO00koxK0c.... .;;:dxkkxc;;;;,,'..',,cdxkOOOOOOxlccc;:ccc:;:ccc,.,ddddxo:;:cclloodxxdolldkxOKK0OO00K0Od;'........:ol
            OOxKNNNNNNNNNNNNNNNNNNNNNXxdxkkxxoodooloo:':l;;clkkocccccodxkOkodkkkkxxddddkkkkkc,.      ....cdddlcc,........''''''.'lxdooodddddxxkkxxxxxkkkkkkkkkxkkkkkxxolcc:;;;'',;clll. .. .;:cdxxkxxOKKKdd0Kd......,::oxkkkl,,,,,'....,,:odkOOOOOOklcllc:loloc:oddo,.:xdddxdc;,'''',::::loloxkxO00Okxxk000x:,'',,,;::ox
            ..,ok0XNNNNNNNNNNNNNNNNNN0xxxkxxdoooodxdo:;oo;ccdOxlccloxkkkxkdoxkxxddddddxkkxxdc;,.  ......,oxxdlcc'.....''',:c:;,''cddddxxxxxxxxkxldo:cooollloxkkkOOkOkd;....';;;;;,;c::.  . .;::oxxkkkdlclccod:'.... .::lxkkkd;,,''.....',;ldxOOkOOOOxoodo::lclo::dxdl..ododxxdl:;;;::coc.'loldxdk0K0Oxc,,ck0xolllolooood
            .. ..,kNNNNNNNNNNNNNNNNNKxxxxkxxdododxxdo:cdc:lldkocodxkkkkkkxooxdddxxoc;cdxkkxoc:;. ...'''':dxxdllc'........o0Odc:,,okxxxxxxxxxxxkdlddclolcccclxOkkOkkkOx:'.'.'lolcloccc:'  ...,::lxxkkkd:''','',''... .;:cdkkkx:''...  ...;;coxkOkOOOOOocllc;;::::;cddo;.,ooddxxdl:;lolcoxc.;oolodxk000koc:;lO0kdl:;;;,,;:
            :doc,.dNNNNNNNNNNNNNNNNXkdxxxxxdooccoddol:ll:clodxooxkkkkkkkOxodxxxdc,. .ckxxxdocc,.....',,'cxxxdllc'... .. .dK0xlc;:okxxxxxxxxxxxkdcclcccccccccdOkkOkkkOko;''.'cl::cdl:::'  .. '::ldxkkkxc,,,'',''''....'::lxkkko::::;. ...,;:ldxOOOOOOOl..''....''',;;;;..cddddxxoc;;clccdd;.:olodxkO0000Ox:,:oxxoclol::cd
            xxdoc,oXNNNNNNNNNNNNNNN0ddxxxdollclooddo:col:cldxdodkkkkxxxkOxdo::do;'. .cxddddolc,.....'',,lxxxdooc........,clc:;;,:dkxxxxxxddddoddollcllododddxkkkkkkkkko;',,':l:::ol:cll. .. .::cdxkkkko;,,,,;'....'. .::cdkkkxooodo,. ...;;coxkOOOOOOx;.','..'..........'oxddddlcc:::,,:lc'.loloxxkO000x:...'.;::ldxdllc
            c;ckkclKNNNNNNNNNNNNNNXkoxxxdoollldxoodl:ooccldxxodkkxxdddxOOo,. ,dl:;. .cdddddolc'....',;:ldxxxdooc.....','.....;,.;dxdddddddddddxkkkkkkkxxkkkkkkkkkkkkkxl;;;;,:olccooldOO; .. .;ccoxxkkkdc,,,,;,........;:coxkkxolllo;. ...,::ldxOOOOOOOkoodo;;o:;cc,,;;,. ;dddddolc;,;:;'','.'ooloxxk000kc'. ''..,cllol:c
            ,:x0OxkXNNNNNNNNNNNNNXOddxxdodxolodo;:lcldlldxkxdodxxdddllkOxc,. 'olc;..'ododddolc....';cccoxkxxooo:.....'..'',;::,.;dxdddxxxxxxxxkOkkkkkOOkOOOOOOOOkkOOOko;,,,,,:::::::dkOc  . .;ccoxkkkkxc..,,;;.'...'..'c:lxkkkdloool'. ...::codkkkOkkOkdoddl;cl:cl:;odd:..cdododoc;''coc;cl;.;olloxxkO0Oo;' .:' .;ddooc;
            coOOONNNNNNNNNNNNNNN0xddxxxoodddolc::clcoddxkkkkxddxdl;..:xxoc;. ;dlc,..;ddodxdoo:.....;c::oxkxxooo;.....''''''..''.cxkkxxxxxxxxdxkOkkkkkOOkOOkkOOOOkkOOOko;,,,,...',,;:oxdc. .. ,cclxkkkkkl...',,.'. .'...:ccdxkkxocccl:. ...,::odxkOOOOOOxlccc;,::;,,':lol, .oddoool:,,;lo::oo,.:olldxxk00Ol. .ll'..:dxdd:
            lkOkOKNNNNNNNNNXXNNKdodxxxdodddol::cclldxdxxxxxkdl:co:...lxdoc;..ldlc'..:ooodxdoo;....,odlxOxxxxdoo,.....'...';:;;,.:xxkxxxxxxxxxxkOkkkkkOOkkOkkkkkkkkkkOkd,......',;,;;ll:,. .. 'ccldkkkkkd,..'',.....'...;ccoxkkkdc::c:'. . .;:codkOOOOOOOd;,;;'','','',;cc. ;dooodoc;',;ll;:ll'.colodxxkOOx:.,ol,.::co;,:
            xOO000NNNNNNNXKO0X0doodxxdddol:;:ccccodkxddddxkkl'.:l;'.:kOxoc,.'ddl:..,lolooxdoo,....;loc:okkkxool'....',...,;:::;'cxxxxxxxxxxxxxkOkkkkkOOkkkkkkkkkkkkkOOd'     .'''...:c'.  .. .ccldkkkkkx:','',,........'ccldkkkx:'.';,.   .,::odxkkkkkkkd;';:,.:lcc;'';:c:..coooodoc;,,:lc,:c'.'looodxxOOOkc;lo;..',,. .
            O00NNNNNNNNNKkkxkkc:dxxxxxdl:,,:cccclodkdoo:cdkdc;,co:,;oOOxlc'.:xol;..;cccloxddl....,;;;,;dkkkdool'....','',;:ldo:.ckxxxdddddoooodxxkkkkkkkkkxxxxxkkkkkkkd,     .'..',,;:'.  .. .:lcokkkkkkl,''.''.   ... .:ccoxkkko,..,;.. ...::lodkkkkkkkkl'''...,;:,..',,;' 'lloloolc:;,coc,....;llolcoxkkxd::lc.   ..  
            0OkOOkkkkkkkxxxxkd:cxxxdoc;;;;;::::loodd:;c:lxxo;':oo:,:x0kdl:..lxol,..;ccc:oxddc....;:cc,cxkkxdooc......,'':lodxd;.:dddddddddddddxOOOOOOOkkkkkkkkkkOOOOOOx,........';c:;;'.   ...;lloxkkkkko;,'.'......'...,ccoxkkkd:,,,,'. ...;:codxOOOOOkOx,.......,,......;. ;lclcllc;',:ll,.....:oc.  'oOOko;:l,.      
            0xollooccllcloddxlcdxdcc:.':;,;:lccoc;ll',clxkxl;,coc;':kOxol;.,ddoc'.,cllccdxdd;...';;:c,:xkkxdoo:.....';,;cldxko;.cxxxxxxxxxxdddkkkkkxkkkkkkkkkkkkkkkkOOx;..',....,:c:;;'.   .. ,lllxkkkkkdc,'..'.:Ox;... .ccldxkkxl::;,,.. ..'::loxkOOOOOkOl'',,...'....,;,c;..llcclloc'.;:c;.... .;'     .:odl,:;.      
            Olccccloollc:cccc:loc:cc;.,;,,;::;;:;:l:':loxkdc,;oo:;,:dddol,.cxdo:..;cll:cdxdo,...';;:c,cxxxxdod:.'...,;,;::lxxo,'lxxxxxdxxdddddkkkkkkkkkkkkkkkkkkOkkkkOk:..',....':cc;;,.   .. 'clldkkkkkxc;,'.'..::.... .:ccoxkkko;,,;;,. ...;:codxkkkkkkkd;,:c,..,,'...,;;,. ,cclcodl,..,,'. ...          .;dc,.       
            xccllloddooooddl;;ll:;,...;,,;;;;;c:;lo;;c:okkdc:odlc;,;:cdoc.'oxol,..:ccc:lxxdl'...,;;:;;oxxkxdod;.'...,,..',:odl,'lxxxxxxxxdddddkkkkkkkkkkkkkkkkkkOkkkkOkc'','...,collll;..  .. .clloxkkkkkl'.'.'...  ... .;ccldxkkd:,,:c;.  ..'::ldxkOOOkkkxl,;;....;:,...,;.. .;llcldo:...,'....             .;;..      
            doddooolodddoodocod:.....,,,,,,,;loccol;cccdkxocldoc:,,coddo;.,xxol'.,ccc::oxddc....,;;:,'okxkxdoo,.....,,..',cddl,'oxxxxxxxxdddddxkkkkkkkkkkkkxxkkkkkkkkkkl.''....,oxxkkd;..  ....:lloxkkkkko'........ .... 'cccoxkxxc',;;,'.   .:ccodkOOkkxdool;;'. '::cc,..,'.. .:,',;:c,..';;:'.               .'..     
            dxkxddlcoolcll;;loc'.....''..',';loclo::cldkkdlcodoc;,cxxdol'.cxdo:..,c:::cdxdd;...';;;:,:dkkkxddl......,'.'',cddc',lddddddddooooodxxxxxxxxxxxxxxxkkkxxxkkxl. .   .'ldxO0d;..   ...;lloxkkkkkd'.'........... .:ccoxxxxo;:c;''.   .,ccldxkkxdocclc:c:;.,c::lc..;::,. ,;...'::...,,.                 ';.      
            xxxddo::cl::lc,,:c,..........,,,collol:cllxkxoccodlc;;loodoc..oxoo,..,col:cxxdo'...',,:::lxkkkxddc......;;;cccdkxc,;oxddddddxxddddxkkkkkkkkkkkkkkkkkkkkkkkko'...  ..,:;coc,'.   ...,llldxxkkkx:.............. ,ccldxkxxl:c:;''. ...:ccodxkxdoc:clc:;,..,,'... ...   .;,..........'..   .           .,.      
            dolool;;,,,,;:;;:,... ......',';locloc:lccdkxlcldoc:,;::ldo;.,xxol'..,oxc;lxxdl....,,,:::oxxkxxdd:.....',,;;,,lxd:.'dkxxxxxxxxxdddkOkkkkkkkkkkkkkkkkkkkkkkkd,............',,..  .. .clloxxkkkkc.......... ... .:ccoxxxxo'......   .,ccldxOkkxdlclc.   ..             .'',,.   ....,'.....                   
            ...;;'',.';,,,...  .   .....',':dlcloccl:cdkdccodoc;'..,odl'.cxdo:..'.,;'.cxxdc....,;;;''lkxkxddd;.....''..',;ldl,.,dkxxxxxxxxxdddkOOkkkkkkkkOkkkkkkkkkkkOkd,     ...........    ...:lloxxxxxko. ..'.. .. ... .;ccldxxxd'    ...   .:ccodkOkxxollo'  ... .. ..  .     'looc.......',,.....                  
              ..  ..  ....  ..      ....'.,loccol:cl;lxxo::odl:,'..:ddc..oxoo,.,:,',';dxdd:....,;:::cdkxkxddo,.....'';ccloxkx;.:xkxxxxxxxxxxxdxOOOOkkkkkkOkkkkkkkkkkkkkx;      ...           ...;llldxxxxkd,......     ... 'cccoxxxxc.......   .,ccldxkxxdolco:. ... ...... .  .. ...''...........  .   .               
               ...,.  .';,........  ......;lc;:c::l:;oxdl;cdoc,...'ldo;.;xxoc..;:,,,':xxxd,...';;;:;cxkxxxddo'.....'';cccldOx;.,xkxxxxxxxxxdddxOOOkkkkkkkkkkkkkkxxxkkkkx:.     ..    ...     .. ,llldxxxxxx:......     ... .:ccoxxxxd,.......   .llodxkxxddolod:. ..   ....  ....   .';;'.....  ..  ...  .              
            . .,'..',,,;;;;,,,''...     ..',,:clcloc:dxd:;odl:'...'odl'.lxdo, .;;'''':xxdl....,;;;;;cxxxxxddl......,,,,,,,:c;'.;dddddddddooooodxkxxxxxxxxxxxxxxxxxkkkkkx:.    ....           .. .clloxxxxxkl. ....     .... ,ccldxxxxl,...'..   .cxddxOOkkxdoodo'..... .'... .'...   .','.   .....  ...  ..             
            :...............            ..  .;cllooodxOd:lxxo;,,..;ddc.'odlc. ,:;,;,,lxxdc...',,,,,;okxxxxddc..................;dxdxxdddoooooodxkkkkkkkOOkkkkkkkkkkkkkkkc.    .,,...     ... .. .:llodxxxxxd'  ....    .... .ldodxOOOOOc..''..   'odddkOOkxdolodc......''...  ....    .... .......    ..  .           ..
            ,.         ..',,'.         .....,,',colodkOl:xkkl;okkxxxd:..'.....;:''..'oxdo,...',,,,,;okxkxddd:......''..'''.....:xkxxxxxxxdxxddkOkkkkkkkkkkkkkkkkkkkkkkkkl.    .,;''..   ....... .;llldxxxxxxc......     ... .cxddxO0000x'..'.... .cdddxkOkxxolloo,.. ................  .      ....    ..  ..    ...   ..
            .   .      ...:c;,..  .. ......'cdooolcoxkd;lkkd:;xkOkkko,..'... 'oxddoclxkxd' .',,,,,,:xkkkxddd;......''...'......:xxxxxxxxddddddxkkkkkkkkkkkkkkkOkkkkkkkkko.     ','.',,;:::oxxl'. ,ooodxkkkOOOk:....'..  ...  ;dxddk0000O:.''....  'odddxkkxxdolldc..  ....'''''''..           .                  ...    
                     ....';;,;,..''',;;;;;,;loool;;lxxc;dkxl,ckkkkkxc:;,;....;xxkOO00OOOd. .',,,,,:okkkkxddd, ....',,..........:xxxxxxxxddddddxkkkkkkkkkkkkkOkkkkkkkkkkkd'     .''.,xOO0kooxxo,. 'oxxdxO000000o....::.  .... .oxddxO0000o........ .cdddxkkxxdolloo;.   ..........                                .......
            ,,,,'',;;:::ccc::::::;;:::::;,'';;;,'',;:c:lxdo:;dOkkkxo,...  ...cxxkOOOOOOOl...',,,,:x0O0Okkkkx;.....',,..''......ckxxxxxxxddddddxkkkkkkkkkkkkkOOOkkkkkkkkkd;.    .',,:xOOkxolxxd;. .lxxxxk00OOO0x,...'........ .cxddxO0OO0k,    ...  ,odddxkkxxdollol,.  ...........            .   ..    ..      .''....,
            xkkdllloooolllllclllcc::cc:::;;,,,,,;;;;;;;:cllclxkkxxdc.........oxxkOOOOOkk:...',,,,cO000OOOOOx,.....','.........'cxddxxxxxddddddxkkkkkkkkkkxxxxxxxkxxxxxxkxxo,   .;ddxxddlc;ckkkc. .cxxxdkOOOOO0O:............  ,dxddkOOOOOl.   ...  .cdoddkkkxxoc:::,..  .................................... ...  ......
            OOkoloodoloolllooooollcllcccccccccc::::::::;;;:;;:lodol;;oo::;. ,dxxkOOOOkkx, ...''',lO000Okkkkd'.....','........;oddddddddddooooodxxxxxxxxxxxxxxxkkkkkkkkkkkkkc.   ,odo,.    ,ddl:. .:dxxdxOOOOOO0l....''''..... .lxxdxOOOO0x'    .....,clloddolc:,...'..   ...............................................
            xxoloooddooooooolllllllllccccccccccccc::::::;;;;,,,;cllcokkdl,..cxxxkkOOOkko. .......o0O00Okkkko..''',,,.... ....:xxxxxxxxxdddddoodxkkkkkkkkkkkkkkkkkkkkkkkkkkOl.....lol,..''',,'...  ,ddddxkOOOOO0d'.''''.......  ;dddxkOOOOO:....',,,;;:c::::,,,,......    ....'..........................................
            Okdlooooolooooooloolllllllllcccccccccccc::::::;;;;;;;;::clooc'.;dxdxkkOOkkkc.........d0O00Okkkkl...',,,,,''.'''..cxxxxxxxxxxddddddxkkkkkkkkkkkkkkkkkkkkkkkkkkkOo,''',;;,,'''......... 'oddddkOOOOOOk:.'..'........ 'looodkOOOOd;,;::ccccclc:;,,,',''.''.....................................................
            xxdoooooooooooollllllllllccccccccccccccc::::::::::;;;;;;;;:cc',looodxkkOkxd;..','...'x0O0Okkkkxc......'......',,,lkxxxxxxxxxxxddddkOOOOkkkkkkkkkkkkkkkkkkkkkkkOd,''.................. .lddddxOOOOOOOl,,'.......'''.';:::cldxddoc::::cllccc:::;;;;;:;;:;;,;;,,,'....'...............''.........''............
            doododdooloooolooololllllcccccccccc:cc:::::::::;;;;;;;;;;;;;'.,:::clodxxddl:,,,'....;O0O0Okkkkx:''......     ....lkxxxxxxxxxdxxxddkOOOOkkkkkkkkkkkkkkkkkkkkkkkOd,.................... .:ddddxOOOOOOOo;,,,,,;;,,;;;::clcccc::::::c:;,;;;;;;;:ccccc:;;;;,'''.........'''''.''....'''''.........''''''''.......
            xoodoodoooooooololllllcllcccccccccc::cc::::;::;:;;;;;;,,,,,,'..',;;;:cloooooolc;'...cO0O0Okkkkd;''.....         .lkxxxxxxxxxxxxxddkOkkkkkkkkkkkkkkkkkkkkkkkkkkOx;................'''...;odddxkOOOOkOx:,;;;::ccclcccccc::cc:;,,,,;;,,::;;;;:;;:::::;,,,''''............'''','.....'''''.'''''.''.......''....
            xlooodoooloooolllllccllcllccclcccccc::c::::;;:;;;;,,,,,',,,,''''''''',;:ccooodddolc:dOOOOOkkkxl'.'',,'.         .lkxxxxxxxxxxxxxddkkkkkkkkkkkkkkkkkkkkkkkkkkkkOk:'.............',,;;'..,oddddkOOkkkkdc:ccc:cclllllllc:;''...........',,,;;;;;;,,,''''....''''''''''..''''''......''.'''....'''..'''.........
            lcooolllllllollllllllllcccc:clcclc:clc::::::;;:;;;;;;;;;;;;,,,,,,,,',,,,',:cllllclloxOOOOOkxxo;..''','.         .okxxxxxxxxxxxxxdxxkkkkkkkkkkkkkkkkkkkkkkkkkkkOkc'.........  ...,,,;,'.'cllooxkkxxxdocccc:::cccc:;,'.............................'''''''.....''''''''....'''.........''...'''.........'.....
            clolodlcllcllc:llclllcll::lc:ccccc:ccc:c::c:::c::::::::;;;;,;;;;;,,,,,;,,;,,;::::cc::lldxddol:;,,;,,'..         .okxxxxxxxxxxxxxxxxkkkOOkkkkkkkkkkkkkkkkkkkkkkOOl,..   .........',,,;;;;;:cccllolcllcc:::;,,,''.................................''''..''......''''''''..''''..''.'''''''''''''..'...........
            :lllddllddlodollllclccclc:cccccc::cccccccccccccc:::;::::;;;;;;:;;;;;;,,;;;,,,;,',;:ccc:::clooool:,...           'dkxxxxxxxxxxxxxxxkOOOOOkkkkkkkkkkkkkkkkkkkkkkkOo'..........'',;,;;;;;;,,;::c:ccc:::::;'......................................''.'''...''......'.''''''''''''''''''....'''''.......''''.....
            oxooxxlldoccoolcllcclc:clcllcccccccccccc:cclc:::::::::::::;:::;;;;;:;;;;,,,,;;;;;;,,,;:::clllloooolc:,..        'dkxxxxxxxxxxxxxxxkOOOOkkkkkkkkkkkkkkkkkkkkkkkkOo''''''.',,;;;,,,,,,,;;;,;,,,;:clc;;cc:;;;,,,,,,'..............................'''.''''..''''.'''...'''..'''''''..........'''.........'''''.
            O0kk0Oxdkxodxdololcllccllllcllcccccccccc::c:;:ccc:c::::;::;:c:;:;;;:;;;,,,;;;;;;;;;;;;,,,;:ccllclloooool:;'''',':xkxxxxxxxxxxxxxxxkOkkkkkkkkkkkkkkkkkkkkkkkkkkkOd,';;;,',,'',,,,,,,;;;;;;;;;;;,,;;;:c:;ccccccc::::;,''......................'........'''.',;,'''''...''''''.'''''..'''....'''''...........''
            xxdxOkxk0OkkOOkxxxddoollllcccllllccccccc::::::c::::;;;;;;;:::;;;,,;;:;;,;;;;;;;;;,,;;;,,,,,,,;:cllolllllooooollcoxkxxxxxxxxxxxxxxxkOOkkkkkkkkkkkOkkkkkkkkkkkkkkkdc:ll;.....',,,,;;;;;;;;;;;;;;;;;,,,;,;:clllc:;;;,''..........'........'.....'..'....'''..'''''...''..''''''''''''''.....''''''..'''''''''..
            lllddoodkkkxkOkkOOkkkkdloocclllccclcccc:::::cc:::::::;;;;:;;;;;;;;;::;;;;;;;,;;;;;,,;;,;;,,;,''',;::cllllllllcccoxxxxxxxxxxxxxxxxxkOOOkOOkkOkkkkkkOOOkkkkxxxdooolclcc;. . ...',,,,;;;;;;;;;;;;;,;;;,,,,;:cc:;,,'''................'''....''...'''''...'''...........''...''''...'''''''...'''.'''''''''''''.
            olloollodollddooxxddxxdooolcc:::cccccccccc:cc:::::::::;;::;;;;;;;;;;,;;,,;;;::;;;;;:;,,,,,,,',,',,'',;;clollc:;,:ododdxxxkxxxxxxxxkOkkkkkkkOOOOOkkxxddooolccccll::::::. ........,;;;;;;;;;;;;;,,,;;;,,,'',,'''............'.........'''...''....''''...'''....'......''......'...'''''''',,''..'''''.....'''
            ollooollllcclllllllcccllllc:c::c::c::c:cccc::::::;;;::;::::;;::;;;,;;;;,,;::;;;;,,;;;;;;,,,,,,,',,,','',;;::::::;coc::clodxxxxxxxxkkkkOkkkkxxddolllccc::::ccc:;;;:clcc:;..........',;;;;;;;;;;;,,,,'''.''''''''''........'....'.....''''...........''..''''...'''.....'''..'''''..'''''...''''..''''''.....'
            oooooolcccccclccc::ccllclclc:lc:c:::;:c:cc:c::::c::c::::c:::c:;;;;::;;;;;;:;;;;,;;,;::;;;;,,,,',,,,,,',,'''''',,;::;;:;::cclodxxxxxkxxdoolc::::ccclcc:;::ccc::ccc:cc;;cl:;;;''.......',,;;;;,,'''..''''''''''''.........''....''..'''''...................'''....''...''''....''''''''''''''..''''''''.'''''
            xdxkxdoooolccllcc::lcccclcclcclcc::c:;c::c::::ccc::c:::::::::cc::::;;;,;::;;;,,;;;;::;;;;;,;;;,,;;,,,;;,,;;,,,''....,;:cccc::llllooc:;;;;,;;;::c:::cccccllcc:;:ccoocc::clccllol:::,''...'''''...'''''''''..'.....'.........''.''.''..''............',,,,...'''...',,''...'''''....''.....''''....''''.....''
            xdxOkxxddollodocc:;cc::::ccccclc:cc:ccc:::::::c::c:::;;;:::;:;:cc:;;;;;::;;;,;::;;::;,,;;;,;::,,;;;,;;;;;;,,,;;,,'....';clcc:col:c:;,,;;;;;;;:;,,,;;cccllcccccclccccccclolllooloooooc;'...'''''''''.'''''.....'...'...,;;,,'.'''..'''''............',,.''..''.....',''''..'''.''..........................''
            xdxkxxxxkxoooodooc:loccc:cccl::ccc::::c::c::c::c:::;;;;;,;:::;;:::::;;:::::,,::;,;:::;;:;,,;::;;;;;:;;;;;,,;;,;,''''.'',;::ccclc:c:;;;ccccc::;,'''',::cclllloc:ccclllc::ccoool:::::;'''.'''''''''''''.'''''.''.......',,,;;'..'''...'''''..'','.'.''''....'''....''''..''''''...'''''.....'.'.....'''.......
            dodxooddxxoooodolllloc:c::llc:;;cc:;::::::c::c::cc:;::::;;:;;:;::;,;:;,;cc:,;::;;:cc:;;::;;;,;:;;;;;;;;:;,;;:::;,;:;,,,;;,'',;:;',;:;::ccclo:,::;::llcc:clcc:;:clcclolc:c::c:;,'''''''....'''''''.....'...'',...'..'...''','....''.'...''....''''....'''...''''...''''''...''''..'''''....''''....'''.......
            c:lollclodlc::llcc:cloc:c:cllc;;;cc:cc;::;:c::c:::;;:;;;;;::;,;c:,,;:;;:cc;,:cc;,;cc:;,;::;,,;;,,,;;,;;,;::;,,;;,;;;;,,;,,;;;,','.';;::c::cll:cc:ccllc::;;cccclc::ccc::;,,''.''''....''''''...'''...''''...,''''......'''','.'''','....''''...'''''..',,,''..''''''..',,,'''..''..''''''.....'''......'''...
            lcoolc:cll:;;;ccc::cclc:::;:l:cl:cl:clc;:c:;:c:c:;:;;::,;:c:,;cc;,;::;,clcc,,::;'';::,,;;;,,;;;;;;;:::;;;:::,,;;;;;;;,;:;;::::::c::lllcc::clcclllllllccc:clllllc:::;,,,,,''....'''''....'''..'''....''''...''..'.........','',''.'''........ .''''''..'''','..''''''..',,,,,..''''''...''''.....''.....'',,'
            lloocc::loc:::clc::c;:c::c::c::cc:clc:c:;::;;:::c;;:cc;':c:,,;::,,:c:,,:cc:;,::,';::;,,,;:;::;:::;;:c:;,::::;;;;,;::;,;:::clloocclllcloolooloddolccllllllllc::;;,,,'''..''''..''''''''......'''...'''''...''...'''''....''','.'...'''''.......'...''......''...''''''..''''''...','','...'',,'.....''''....'
            coooccccool::c:cc;cl::c::lc::c;;cc:cc:::;;:;;cll:;clc:::c:;;;;;;,;cc:,,:c:;;:c:;;;;::;;,,:c;,;::;,,;;,;,;;;,;::;;:::cllllclllcccccloolooollodddllcc:clcll::::,''''''''..''',,''.'..'''....'.....'',,,''',,,'...''''....''''....''''''.''...'...'...'''''...''''''...'...''..''...,'.'''...'',,,,'...',,,'''.
            :cllc:l::c::lccll::l:;c:;:l::cc:::;;:::clc;;ccc;;cc::c:::,';::;,;:cc;,:c:,,;:cc:;,';:;,,;;;,';;;;;;;;'',;;;;::cc:cclddoolclocclolllccc:coooddooollc:::;;,,;;,,''.''',,,,,'''''''''''....'''''..',,,''.''''''...'......',,,...'''''.''.''''','..'''',,''.....''''.....''''''............''''''..',,''''..''''
            ::lc:cccllcclc;cl:;:;,:c::lccll::lc;,ccc:,;:::c::c:,;ccc:;;cc:;,:::;;;:::::,,;:;,;:::;,;;;;;,;;'',;,;,,;;:::clc:clooloooooollloddolc:cclooolllccc::;;;;;;,',,,,''',,,',,,'..',,,,,'''.'''''..'''',''''',,,,...'''''..''','..'''''...,'''''......',,,,','..''''''....'''''...''''''''....''''''...''''''....'
            :llc:c::ll;;cc:cl::c::cc;:ol,,ccc;,;::;:c:::;;clcc,,:cc:;;::,,;;;::::,,:c:,,;;:;;:::::;;;,';;;;;,;:::::lllollc::cddolooddddllcccclooclolccc::::;,,,,;,,,,,,;;;;;,,''',,,''',,'''...''',,,..',,,,,'.',,',,'...'''''.....''...,,,'''..'''''''.',,''''''..'''''....'..''''..'...',,,,,,'...'''''''...''''''....
            ;ll::c:cllcclc:cc,;ll;:lll:;;;::::;:c;',ccc;',cc:;;::::::;::;;c:;::::::::;,:c:c:;::;,;;::;,;::cccccllccllclc:::clllllllodddoool::coollc:;;;::::;,'',,,,;;;;;,,',,,,,,,.',,,,,'..'''''''.',,,,,''...''',,;'..',,,,,...''''...''''''...''''',...'.'''''..''''''...,',,,,'......''''.',,,'..''....''...''''''..
            oooll:,cdl;:l;,:cc::llclcc;;ll;,:llc;,;::;;:c:c::;;::;,::,;:;;::;;:,,::::;;::,,:::;;;:clllllccclc::cc:cl:::cc:clolllllllollollllcc:::;;;,,,,,;;,,,,,,;;;;,,,;;,,;;,,,,;;,,,,...',,,,,''';:::::;...''''''...''''''...'''''...'''''...'''''.........'''. .'''''''...'''''........''.';::cc:::;'..''''''....'''
            llc:,,;:llcccc;:cc:;cl;':ccc;:ccc::::;;::;,:cc:,;:,,::::lc::;';cccc;;:;,;::;;;,;::::clooooo:::::cllccldocccclllllcclllllccccc:c:'',;;;;;,,'',;;;:;;,''''',;::::;,'',,,,,,,,,,,;,,,,,'.',,,,,,,..''',,,,..',,,,,,'..,,,,,'...''','..''.''''..'''''''.....''....'...'''''.....''''..',;,,;;;:c:'..'''''''...''
            lllc:;;:llc,,c:coll:::::clc;.,cc:;.,cc:,;cc::cc:::,;:;',cc::,,:::c::;;,,;:;:;:ccccc:cllllll::llloolc:clccclolllllllolcc::c:;;;;;,'.',;;:;;,''',,,,;;;:::;;,,'',,;;:;;;,'...,;;;;;,',,;;;;,,'...''''''...''''''''...''',,,..,;;;;,...''''''...''',,,...,,,,'',...............'',,,,,,,'.',,,,,,'''..'''''....
            clllc;,:lolc::,,ccc:.'clc:,.'::;;:::cll:;::,;c:,,;:::,';::::ccc,.,;;;,,::cccclllllllcllcldooooccccc::;;;;collollllllc:;,,;;;;;,,''';:::c:::;'...,;::::::;;,,'.',,,;;;'',;,,,,''....'''',,,'..',,,,,,'..,;;;,,,'..','''''...''''''..'',,,,''...''''''..''',,,,,..,;,,'''.....''''''''''..',,,,,,,,,...'''''''
            llloc,,:ccc;',:cccc;,;:;:::;;::,;cl:,:c:;;cccc;,;::::::;',::::;,;::ccccc;:cccc:cooc::cc:cloollc:c:;;::;::cllccccc::::::;'.'',,,,,,'',;;;;;,;;;:;;,;;,''.'',,;;,,,....';::;;;;,..',,,,'''''''''''..'''',''',,,,...''''''. .,,,,,,'...'''''''...,,,',,,,....''''...'''''''...''''',,...''''',,'''''''. ..'''''
            loolc,',:cc;';c:::c::c;.,cl:,:cc:;cc:;;:::::::,,;;:::::,',;;;::;clccoccolcoooocclol:::;;:lolllclc::clc:::;;;;;,;:::::;;'.',;;;;;;;;,.''',;::::::::;'....',,;;:;,''''',,,,,,,'.','',,,,'.',,,,,,,'...,,,,''''....'''''''...''',,,'..''''''''...''''''.'...'.''''''................''...,,,,,,,,...'''...''...
            lcccccccllc;;c:;:cc::llccloc;:::,':::;'.,;:::::;',:::::;;c:;;cl::oocllclccooolloddlcc:;,:ccccclll::ccl:;;;;;;;;,,,;;,,,,'''',;;,,,,,,;;,,,,;;:,',;,,,;;;,,,'''..',;;;;,,'..,;;;,,''..'''''''',,'...',,;;,,,'...',,,,,,'..','',,,...''''''''..,,,',,''...'..............''........''.. ..'''''''...''''''''..
            lc,':ccllcc:cccclcc,,loc,,:ccc;,::::cc:;.':cccc;';ccloc;;;;;;cllcc::ccloollclolcloc:::ccccloddoc::::,,,;::;;,,''',;::;;::;,..''.,,;:;;;;;;,',;,',;;;;;,,,,,,,'',,,'''''..',;;;,;,,'.',,,,,'''...'','''''''....'''.''''...''',,,,...''''''....''''',,,,..,,,,''''..............'',,,,''...''.'...'...........
            lc:::''ccc:',col::ccc::c::::;:;;,;:cccc;,:lllolc,,cllclc:;,:c:clccc:::ccccclcll:lxocc:cccodollc:;;::;,.';;;,,,'',;;;;;;,,,,,,;,,,,;::;,,,;;;;;::;;;,,,,,'.',,;;,,;,..''','',,'''''.'''',,,,'..',,,,,,,,'...',,,,'''...........'...'''','''. .,,'''''....',,,,,,,,,..''.............''''...''''''','...''''''
            cc:cl::cclc::cc::clcc,.,:cc:::::;;clccl::llcccc::c:ccloloc;ccclccllc::cccccllllccc::cccc:::;:::;;;;;,,'',;;;;;;,'',,,,,',;;;;;;;;,'',,'';::;:::::;,'',;,,,,''.''..'',,,,,,,,'..',;;,,''''.....'''',,,,'...''',,,,''...',,,,,,,'...',,'..... ',,,;;,,..'''''''''',,. .''''.'''''...................'.. ..''''
            oc,:ol;,:cll;;ccc::cccc;';ccc:;,colc;cocclllc;;;::::llc::cll:cl;;:;:::ccc::c::lc:::;;:;;;,'.,;;;,,'..';;;;;;;;,,'',;,',;;;;;;;,,,;,,;::;;,,,;;,''',;;;;;;;;;,'....'..',,,,'..';;;;;;;;,'...,;;,,''''....',''''''''...''''',,,;'..,,,,,,,''...'''',,'..,,,,,,,,'..''..........',...'''''''''.  ...'''........
            olccllc:cccc;;;,clccc:;;::cllc:,;c:,:dl':ooooc:::,,::;:ccccll:cc;;:::;;;;;:::loc:;;;;,;,,,,..,;;;;;,''',;;,,'',,;::::;'.',,,,',;;;::;;;;;;'.'''''''',,;;;;,',,,;;;,'.........'''',;;,'...,,,,,,,,,,'..',',,,,,,''..',;,,,'''''..'',''',,,'..''..'''...''',,,,,,,..,''''''''..........''...''...',,,,,,,'.. .
            cc:,;ccccccccc;':c:cc:;:c:;;;,;;,;:;:c:;::;cc:::c:;clcloddoooccc:cc::loocccc::;,,;;;;;,'',,,;;::;;;;;;'','',;;:::;;;;;,'.,;;,,,,;;;;;;,'',,,,,,,,,'........',;;;;;;;,'. .';;;;;,'.....,,,''..',,,,....''''',,,,'..',;;;;;;;,'..',,,''...'...'''''''...,,,,'''''....'''''''''...,,'''..'''.......'''',',,,,..
            lllc:,;cc:c:,;ccllcc;;;::,;;',cc,::;ll;::,,:cc:cllc:coollodoooc:cllooolc:::::::;'';,,,,'.':::::;;;,,,,',,,'';:::;;;,,,,;;;;;;;;'.,;,,'..',,;;,,,,,,''''',;,''',;;;,''..',,,,;;;,,...',;,,;;,'......',,,''''.......'''',,;;;,...,,,,,,,,,'.........'....',;;;;,'..''............','''''',,,...'......'''...'.
            olcc:;;ccclc;:cl:;,;;,,;;,;:;;l:;llc:;:;:ccccccclc::cc:clolodc:::cccc::::::cc:;;'',;;::;,..';;;,,,,,;;;;;;'.',,,,;,..,;;;;;;;;;,'.,,,,'.'',,,,,,'''.';;;;;::;,'''''',,,,,,''..''...',,,,',,,,'. .',,,;;,,,,.. .',,,,''...''.....'.''''''.............'''.'',,,'..,,,,,','''........'''''','..''',,,;;,,'. ..
            c,':lllllll:;,,;:;',,';::,',:ccccooc,;ccc:;::;;clcc::::clllllc:;,';::::cc:;,',;;;::::;:::;..''',;;;;;;,,,,,,,,,,;;;,..';;,,'''',,;;;;;;,'...'''',,,''''',;;,,'....',,,,,,,,,'...',,'''''',,'......'',,,,,,'...''',,,,,,''...''''...............'''...',,,''''....'.''''''',. .,,,,''''.........''''',,,,'...
            l::cccccc:;;,,'',,,:l:,col;;lc;::;;::lc:c::;;;;;:cc:::::cc::;;;;'.':::;,,;,,..;c:::;;;;;,,'''..';;;,,,'.',;;;,,;;;;,'..',''..';;;;;;;;;,'...',;;;;;;;,'......',,''....',,,'.',,,,,,,,,''.....',,'''''''''...''''''',,,,,'..'''''','','................'',''''. .,,'''.....'. ..',,,,,,,,,'......''......... 
            ;;:::;;;,,,;:;':c;,lo;,cl:,:l;';;,,:oollolc;;cllll:::::::::;;;;;,..,;;;;::::;'.,::;,,,,,,,,'''',,;;;;;;,.';,,,,,,,''''',,;;,'.';;;;,,''.....,;;;;;;;;,,'..',,,,;,,,,,'.......',,,,,,,,,,,..',''',,,,''..'',,;;,,'''''''.......'''''''...'..''...... ...''''',. .,,,,,''''............'''',......'..''''.  ..
            ,:c:,,;;;;'',;cdl,;c:,,,'':c:::;;c::looolcc::clll:,,:::::;;;;;;,.',;::::::c:::,.',',,,,''...,;;;;;;;;,,,..,;;;'''',,;,,,,,,,,'..,;,...',,,'..';;;;;,'....',,;,,,,,,,,,'.........,;;,,,,'..,,,'''''','''.',;;;;;,,,,,'...'''....''''''..'''''''.'''. .''''''''. ..',,,''',...''''''..................''''. ..
            
		
Here's an overview of the functions I, as Visit Timișoara GPTs, provide:
Tourist Information and Recommendations
I offer concise answers to queries about travel, accommodation, local attractions, cultural events, and leisure activities in Timișoara. My responses are tailored to your specific interests and needs.
Event Details
I provide detailed information about local events, including thumbnail images of the events, names, and dates & times. If you're interested in an event, I can give you the event link and an option to download the event calendar entry as an .ics file.
Cultural and Historical Insights
I have access to detailed information about the churches, parks, and museums in Timișoara, including their history, architecture, and significance. This is especially useful for exploring the city's rich cultural heritage, particularly in bad weather.
Weather Forecasts
I can provide weather information for today, tomorrow, or a specific time in Timișoara, including temperature and dew point.
Suggestions for Alternative Activities
If there are no more events or specific requests, I can suggest other activities, such as dining at restaurants or visiting souvenir shops.

Background ASCII-Art: Salamon Brück House

Back to the homepage