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