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