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