  ....::::::::...            ..:--+**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
   ....:::::::...             .:-=+**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    ....:::......             .:--=+*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 .      .........             .::-=+**#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
 :-===-.-+*=                  .::-=++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    .-@@@@@*=*+=-.            .::-==+*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%
    .#@@@@@@@@@@@#           ..::-==+*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%
    .*++@@@@@@@@@@=          ..::-==+*#%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#
       -@@@@@@@@@@@-         ..::-==+**#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#
     . =@@@@@@@@@@#:         ..::--=++**###%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%##
    ...:@@@@@@@@@@%:         ..::--==+*****#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%#*
    ....#@@@@@@@@@@@#=       ..::--==++++++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##*+
    ...:@@@@@@@@@@@@@@#:     ..::--========++*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####*+
    ...#@@@@@@@@@@@@@@@@#=   ..:::--====---==+*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%####**+=
     .%@@@@@@@@@@@@@@@@@@@+  ...:::----------==+*##@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%###***+++=
    .%@@@@@@@@@@@@@@@@@@@%.  ....::::-----:::--==+**%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%%##**++++=-
   .%@@@@@@@@@@@@@@@@@@@@* .. .....:::::::::::::--=+*#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###**+++=--
   *@@@@@@@@@@%@@@@@@@@@@# .   .......:::::......::-=+*#@@@@@@@@@@@@@@@@@@@@@@@@@@@%%###***++=-:
   %@@@@@@@@@@*%@@@@@@@@@%..     .................::-=+*#%@@@@@@@@@@@@@@@@@@@@@@@@@@%#####**+=--
   %@@@@@@@@@#=+%@@@@@@@@@-       ...........    ...:-=+*#@@@@@@@@@@@@@@@@@@@@@@@@@@%%%%###*++=-
  .@@@@@@@@@@--=@@@@@@@@@@#          ........      .::-=+*#%@@@@%%%%%%@@@@@@@@@@@@@@@@%%%%#***++
  .@@@@#*#%@*:-%@@@@@@@@@@@=                        .::-=+*##%%%%%%%%%@@@@@@@@@@@@@@@@@@%%%#****
   =#+=:.+@@%:#@@@@@@@@@@@@@.                       ..::-=+***######%%@@@@@@@@@@@@@@@@@@@%%%%##*
     .  :@%==*@@@@@@@@@@@@@@#                       ..::-=++***#####%%@@@@@@@@@@@@@@@@@@@@@@@%%#
     ....#%:+@@@@@@@@@@@@@@@@=                      ..::--++***#####%@@@@@@@@@@@@@@@@@@@@@@@@@%%
     ....-++@@@@@@@@@@@@@@@@@@:                   ...::---++**#####%@@@@@@@@@@@@@@@@@@@@@@@@@@%%
    ...:::*@@@@@@@@@@@@@@@@@@@#                  ...::---=++**#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%%
     ....*@@@@@@@@@@@@@@@@@@@@@+                 ..::--====+**#%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#
       .#@@@@@@@@@@@@@@@@@@@@@@@-               ..::--=====+**#%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%#
      :#@@@@@@@@@@@@@@@@@@@@@@@@#               ..::--=====+**##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@%*
     .%@@@@@@@@@@@@@@@@@@@@@@@@@@.             ..:---=++===+**##%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@*
     +@@@@@@@@@@@@@@@@@@@@@@@@@@@:             .:--==+++++=+***##%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@*
     %@@@@@@@@@@@@@@@@@@@@@@@@@@@=        .....:---=++++++++*****#%@@@@@@@@@@@@@@@@@@@@@@@@@%#*+
     ::--:=@@@@@@@@@@@@@@@@@@@%-:        ....::--===+************##%%@@@@@@@@@@@@@@@@@@@*=-=====
           :==-*@@@@@@@%=---=-          ...:::-===++**##********###%%%%%@@@#+%@@%-:.::-:.::-----
               =@@#.:@@#               ...::---==+***#######******#%%%%%@@@*-+@@%      ...::::--
