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