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