88888888,
                               8888888888888888       ,8:::::;8
                               8 " / " / " / "8       8::::::8'
                          _,a  8" / " / " / " 8      ,8:::::;8
                  __.aaddPPP8a 8 / " / " / " /8gggggg8::::::8'
              .adP""'::;;;;;::b8/ " / " / " / 8 \ \ \8:::::;8aa,
               8:::::::::::::::8 " / " / " / "8\ \ \8::::::8\ \"Pb,
               `8::::::::::::::8" / " / " / " 8 \ \,8:::::;8 \ \ \"Pb
                `8:::aP""""b,::8 /," / " / " /8\ \ 8::::::8'\ \ \ \ "8,
                 '8::8'    ,P::8gggggmddd8888b8bbmm8;::::;8\ \ \ \ \ \8
           ,aadd888888888888""""""'''             `""8ba;8\ \ \ \ \ \8'
       ,adP"""""""888888888P  .,aggmdddd88888bbma,.    ""8a\ \ \ \ \,8
     ,dP'             "88888g8PP"'''          ``""8ba,    "8a,\ \ \ 8'
    aP'                  "*8"          8            ""8a,   "8a\ \ \8
   aP' ,add8888bbm,        8,    8     8,              "8a,   "8b \8'
  a8'.8"'        `8b       "8    8,    "8                "8b,   "ba8
  8'.8'a88a  a88a `8b,      8    "8,   ,d8b,     ,d8       "8b   "88
  8,8" __   ____    `Pb,  .d8      "8mmP"  "8mmmmP"          "8.  "8
  "8" 8P8a, dP8P     (888888'   a,                            `8.  8
   (b,   8) 8,       a8"  ,8     8,                            `8. 8
  ,8P"' dP  "b      aP'   8a      "8gggP'    ,agddd8888bbma,    `8,8
  8'  ,(8baaa8bmm, ,P'  ,8"8b,           ,ad8PP""''     ``"P8,   `88
  8, aP',a8,aga,"P88b   (8, "8b,     ,ad8PP"'    ,ggd8888a, `"8   )P
  ,88888"""""""8888 "8b, "8,  "8,  ad8P"   .,md888888888888b     aP
 a88,  `"PPPPP"    ,8""8b, "   "8md8"  ,md888888888888888888b  a8'
88 "8        _   adP'  ,8)    ,8PPP8am8"    `"888888888888888b8"
88,  ,amma,  b        a88'   ,8)\   "8(       `88888888888888"
 "88 `8  8'  `" ,8) ,88"     88\     8)        `8888888888"   ____
,88a        d   8) ,8'Pb    (8a\    .8'         8888888"  .d8I""""8b,
88"88bmmmaa8"   `888' `8'   a888bmmaP'          888888bd888888b.   "8,
"8ba,`""""'  ,8         ,ad888'    8ba,.       a88""88888888888b    "8,
   "8bma,.  ,8'   ,ad88888888(    (88888dmmmmmd888  888888888888;    `8
    888888888mm88888"' "888888,mma,88888888888888P  888888888888)     8
    888888888888888.     888888888888888888888888   888888888888I     8
   ,8888888888888888b.   8""88888888888888888888"   888888888888P     8
   I8888888888"     "8888"  ]888888888888888888"    P88888888888)     8
   8888888888"     ,8"      ""   "888888888888"    d888888888888'     8
   8888888888      ]8             d8888888888"    a8888888888888      8
   I888888888      `8,           a888888888"     a88888888888888     ,P
    "88888888,      "8,        .d88888888"     .a88888888888888)     I'
      "888888b       "8b,.   ,a8888888""      .m88888888888888P     ,P
         `"""8b       I88888888P""" I.      .m888888888888888P'     ]'
             888mmmmmd8    "8b,aaa   8m,. .m8888888888888888P'     ,P
             ,a88""888m,     "88P   .mmmm888888888888888888P'     ,P'
             8"  ,8888888maam88888"""""""88888888888888888"      ,8'
            ((   I88888888888P'    _      "888888888888P"       ,8"
            (I   `888888888P'    ,888,       "88888""         .d8)
            "I    `8888888"     i88888,                     ,d888
             "I     `"888"    ,i8888888a.                .ad8888)
              "I.           .i888888888888a,.      .,,amd8888888
                "Ima,.   .,i88888888888888888888888888888888888'
                   `""""I8888888888888888888888888888888888888"
                          `""8   `""""""'   "888888888888888P8
                             8               8""""8888888"'  I
                             8               8               I
                             8               8               I
                             8,             .8              .(
                              "\,.       .,aI8.            ,I'
                                "I888888888" "8a.       .,dP'
                                 8 (888( ('   "P888888888P"
                                 8 (888( I       (88888) I
                                 8 (888( I       (88888) I
                                 8 (888( I       (88888) I
                               ,d8 (888( I       (88888) I
                             ,8"  .d8888b)       (88888) I
                           a8" .ad88888888       (P====) I
                         .8"  (888888P ""'       8=8888' ],
                         88b.  "88888'          (88888"  ]b
                         "888888888P"           I8""   ,i8P
                           `""""""              `I888888P"
                                                   `"""