##  ##  #####                  ##    ####   #### #### ####   
 ##  ## #######    #           ####  ##  ## ##  ## ##   ##    
 ##  ## ########    #         ##  ## ##     ##     ##   ##    
 ###### ########   ###        ######  ####  ##     ##   ##    
 ##  ## #######    ####       ##  ##     ## ##     ##   ##    
 ##  ## ########   ## ##      ##  ## ##  ## ##  ## ##   ##    
 ##  ## ##### #    ### ##     ##  ##  ####   #### #### ####   
         # ### #       # ##