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