╔══╦══╗╔══╗╔══╦╗╔╦╗╔╗╔╦╗╔╦══╦╗
║╔╗║╔╗║║╔╗║║╔╗║║║║║║║║║║║║╔═╣║
║║║║║║║║║║║║║║║║║║║║║║║║║║║─║╚══╗
║║║║║║║║║║║║║║║║╔║║║║║║║╔║║─║╔═╗║
║║║║╚╝╠╝╚╝╚╣║║║╚╝║╚╝╚╝║╚╝║╚═╣╚═╝║
╚╝╚╩══╩════╩╝╚╩══╩════╩══╩══╩═══╝
╔══╦══╗╔══╗╔══╦╗╔╦╗╔╗╔╦╗╔╦══╦╗
║╔╗║╔╗║║╔╗║║╔╗║║║║║║║║║║║║╔═╣║
║║║║║║║║║║║║║║║║║║║║║║║║║║║─║╚══╗
║║║║║║║║║║║║║║║║╔║║║║║║║╔║║─║╔═╗║
║║║║╚╝╠╝╚╝╚╣║║║╚╝║╚╝╚╝║╚╝║╚═╣╚═╝║
╚╝╚╩══╩════╩╝╚╩══╩════╩══╩══╩═══╝