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