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

