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