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