,8888b
                       ________    P __ 8b
                 __d888888888888888 8""8 b
               d88P"""".      """""888 9 P
            w88P'        '._         "88b
          d8P           .-(_)-.w.       "8b.
        d8P          w /   `,  \'8        "88  ,88.
      _d8P         .8P(     | ,             "8 8  8888b
  _d888            "'   /-___-'`             88  8    8b
 d8P                                          888      8b
 8P d8                       .                88        8:
 8b "8                        :               88        8:
  8bw                         :              :8P8      8P
    "8b                       :             ,8P  888888P
     "8b                      ;           ,88P      d|
      88b                               ,88P       dP
     dP"88b                          ,888P 88b    dP
    dP   "88b____________________www88P      88bdP'
   dP       "88888888888888888888P''           88b
 d88n        d8                    .            "8b
dP          d8                      .             8b
88         8b.                       :             8b
88           88                       :            "8;
 8b       8b 88                       :             88
  8b       88P                        :             88
   "888888P'                          .             d8
       8b                            :             d8'
       ,8b                                      _d8P
       8P888b                               __d88P
       88 "8888b                        __d88P"8b
       88      "888888______________wd888P"      8b
      8P            ""8888888888888P""            88
     8P                                            88
    8P                     w_                      89
   88                       "b  w88                89
   8b                         8b"                  8P
   "8b                         8b                 dP
    "88b                       8P               .dP
      "8888b________________d888w_           ..dP'
         """"888888888888888P    "888888888888P