###   _____ ___ ____  _____ ____    _        _    ____   ###
##   |  ___|_ _|  _ \| ____/ ___|  | |      / \  | __ )   ##
#    | |_   | || | | |  _| \___ \  | |     / _ \ |  _ \    #
#    |  _|  | || |_| | |___ ___) | | |___ / ___ \| |_) |   #
##   |_|   |___|____/|_____|____/  |_____/_/   \_\____/   ##
###                                                      ###