,:c:;;:c::::;;;,,.                                                    
                                                       .'lkkxddddxxxddxddxdoc'.                                                 
                                                   ':ldddoodollodxddddddddoooool,.                                              
                                                .,odoolc:ccccoolllllooooollllooocdoc.                                           
                                              .:dxdoloc::cccclcccccloodolllc::cccoxOkl.                                         
                                            .:ddolllll::::cc::ccloodddoolllloooxkdodxkko.                                       
                                           .lol:::::::c::;;;:cldkkxxdooddxdxxxdddlccoOkkl.                                      
                                          .cl:;,''',;::::,;oooOK0kxxxxkkkOOkkOkoddl:cddddd;                                     
                                          ;c:,.....,:loccoOO0KXXXXXXXXXK000OOOxlddl:,,:coddc                                    
                                         ';;,,.....;oxkOKXXNWWWWMMWWNNXXXXK0OOxodxdc...';ccc.                                   
                                        .,,'''...,:ck0XNNNWWMWWMMMWWWNNNNXXK0OOOkkxl;....,,,                                    
                                         '.....';oxk0XNNNNWWWNNNNNNNNXXKKKKKKKXXXKOxo,......                                    
                                         ......'lxkOKXNNNNXKK0000KXXK0OkxxdxxO0KXNNKx;.. ...                                    
                                         ......,okO0000Oxdollooddk0KKOdlc:;:::cloxkdc;..  ..                                    
                                         ......:dddxxxxdolc::ccllldxxo;,,,,,;;::;:cc''... ..                                    
                                         .........cxxddoc;,,;;:cclkXN0:''..,'.',;;;c;,,.. ..                                    
                                         .......:loxdooll::ccloxdxNMMWO:::coollccodxool....:.                                   
                                        'oo;...:dxkO000OkkkkO0000XNWMWKkxkO0OOkkOKXXK0x,..,c,                                   
                                       .ccdxo,:dkOOKXNNNXXXXK0OOXWWMMMNKOkkO000KXXXK0kxl'..''                                   
                                       'ccoooldO000KXXXXKKK0OOOXNWMMWWNX0xdkOO0KK000Okdd'....                                   
                                       ,dxkd:lxk000KKK000OOkkk0X0kkkxdccdkocldxxxoollodc'..'.                                   
                                       .xOko:xOxkkOOOOOOkxddxkko;,;;;,...''',;cc:;,'',;,..,'                                    
                                        'kOOO0Oxddxxxxxxoclx0K0xlc:;,'....:lc,',,'....','';.                                    
                                         .xO0X0Oxdddddoc;ck0KKKOkxlc:;'..':cc,''''...',;cl.                                     
                                          .lKXKOxdddool;:llllcccc:c:;,'.........,,...'',,.                                      
                                            ,ddcoxddoolcll:,;lookxOxol:,'......';'....                                          
                                                ;ddddooddxOOxxxxxxkdol:,'.....','....                                           
                                                .lddddddkOOOOOkxddollc;,'.....''.....                                           
                                                 .clooddxkOOOOkdolcc:;,'...'''.....'.                                           
                                                  .;clodxkO00000000OOkdolc:;,'...'''                                            
                                                   .lcclodxO00K000Okkkxxdc;,'.....'.                                            
                                                   .olc::cclodddolccc:;,'''.........                                            
                                                   'ddlc:;;;;;;;,,,,'''''...........                                            
                                                  .;dddolc:;,,''..................'.                                            
                                           .';,;ccccdxxdolccc:;,..................''...                                         
                                   .;:ldkOl,',,,;;,;loolc:;;;;;:;,'''..............'.,;:c;.                                     
                                  ;ddodk0Oo;.....,;;;;;;;;;;;'';:;,'..      .......,,;::lxkxo:'.                                
                                ,odododkkx:,.....,,''...''''...,,'.        .............'cdO0Ol:.                               
                              .ldooc,.,::c,,....,;.....,,''........        ......','....'c,:oc..;                               
                              'ol;'..',....''..,;,''.',,..................   ......,:;',,.....'...                              
                                .....,'';:;,,;;;;;;;;;...................     ......,,........'c;.                              
                         ..';:ccccccc::cllllc;''';:::;.  .......'.......         ....',,;::;,'',cc,                             
                    .,:ldxkkkkkkdoollcccllc::;;,,;,'...       .,c'......  ...     ....'',,;;,'...,odc,.                         
               .':oxOOOOOkkxxdxxdoolllllcc:::;,'......        .co:..........'.......'...,;'    .cxOOOOOko:'.                    
             ,lxkkOOOOOOkkOkxdoddollc;,,''''.......           .','...............',;;;;;;:'  .'lxkkOOO00000Oxl;.                
           ,lodxkkkkkOkkkkkkxxdooolllc;'........     ....................................'...:oxkxddkOO00000KK00kd:.            
          ;oolldkkkxdxxkxxdddddooolllccc;,.................................... ..... ..,,..,clododooodkOOOO000KK0000kl'         
         .colloxkxxdoddxxxdddooloollllcclc:;,'''..'''''''''''','',,,,''.............';;..';clloddddooloxkOkkxdxkkkOO00ko;.      
        .:looodxxxddooddxxxdddoololllc:;clllccc:;;;;;;;;;;;;;;;;;;;;;,,'.........';:;....,cllooodxxxdoooxdolloodxkkkkOkooo,     
       .:clooodxxddoooooddddddoolllllcc;;clllllc::cc:ccc::c:::::::::;;,'...',,;;c:,..  ..;llooooddddddooddoloooooxkkkdcclll:.   
      .clclooddxxddooooodddddooollllllc:;,:llllc:clllllccccc:ccc:::;,,''',;::clc,.    ..,clodxxdollodddoddoloddooooddl;ccc:::   
      :lllloddddddooooooodddooooollllllc:,,;lllccclllclccclcccc::::;;,,;:cclll:..  ....':loodoolllodddddddoloooooooooc;c:;;::.  
     ,llcloddddddoooooooooodooooollllllcc:,,;clccllllllccllccccccccc:::clllc:;.......',:looooooooddkkkxdddolloooolool,'c;',,;.  
    .cccclodddddoloooooooloddooooollllllc:::,;cccllclllllllccccccccccccc:;;,'.......,;clloooododdxkkxxxxxdolloooooooc.;l,''.;,  
   .:cccloddddddoloooooollloooooooolllllcc:c::;:::ccllllllccccccccc::;;,'''.......';:cllllodddddxxxdolloddlllloooool,.:c'...;:  
   ;cccclododddooooooollccclloooollllllllc:;:;;;::;:ccccccccc:c:c:;;;,..........';:ccclllooddxxxxdollllloolllloolll:.,l:....:c. 
  ,ccc;:looooddoooooolllllc::cloollllllllcc;,',,;::;,;cccc:::::::;,,,''''.....',,:clllllloooodddlccclllllollllloolc'.:c,....cc. 
 'cc:;..':loooolllodddooooolc::cllllcclllllc:,''',:c:;;:::::;;;;;,'..........,;::cllllllllllllllllollllllllloollll:.,c:,...'lc, 
.:c,.....':cloollooolcccccllllc::ccllccllllccc::;,,;::::::;;;;;,,,,,,'..',,;::cclllllllllllllccllccclllllloodxoolc,.;:;'...,o:,.