::: ::: ::::::::::: ::::::::: ::::::::: ::: ::: ::::::::: :::::::::: ::::::::: :::::::: :::::::: ::::::::::: ::::::::::: :::::::: ::::::::: ::: :::
:+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+: :+:
+:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+ +:+
+#++:++ +#+ +#++:++#+ +#++:++#+ +#+ +:+ +#++:++#: +#++:++# +#++:++#+ +#+ +:+ +#++:++#++ +#+ +#+ +#+ +:+ +#++:++#: +#++:
+#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+ +#+
#+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+# #+#
### ### ########### ### ### ######## ### ### ########## ### ######## ######## ########### ### ######## ### ### ###