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