::::::::::::::::::::::::::::::::::::::::-- :::::::::::::::::-:::::--::::::::::::::--: :::::::::::::::++-==+++==-=-:::::::::::-:: :::::::::::::-===++++++++++==-:::::::::::: ::::::::::::-++++++***++++++++--:::::::--: ::::::::::-=++++++++++++*+++++=--::::::--: ::::::::::++++=++====+++++=*++=--::::::--- ::::::::::++==--=--=====++++++---::::::-:: :::::::::::=+-======-=++++++-+==::::::---: ::::::::::-----++=+===+++++=:==-:::::::--- :::::::::::=-::--=++++++++=-::--:::::::--- :::::::::::-+::--=====+-==--:=-:::::::---- ::::::::::::-::-==+=+=======-:::::::::--:- ::::::::::::::---++****++=+-::::::::::-::: ::::::::::::::-:==******+==-:::::::::::-:: :::::::::::::::--=++++*+++--:::::::::::::: :::::::::::::::--*+*++*++=--::::::::::-::: ::::::::::::::::=*++++++++----::::::::-::: :::::::::::::::-+++++++++++=-::::::::::::: :::::::::::::--:=+++*++**=++--:::::::::::: :::::::::::-:::--=+++++++++*+=:::::::::::: ::::::::::::::::-===+++++*++*+-::::::::::: :::::::::::::::---===+==++++*+--:-----:-:: ::::::::::::::::::::---=+==+++==----:---=- ::::::::::::::::::::::::::==++++==-------= :::::::::::::::::-:::::::-::=+**++==-----=