.d8888b.  888     888 8888888b.  8888888888 8888888b.       8888888b.        d8888 8888888b.  888    d8P  
d88P  Y88b 888     888 888   Y88b 888        888   Y88b      888  "Y88b      d88888 888   Y88b 888   d8P   
Y88b.      888     888 888    888 888        888    888      888    888     d88P888 888    888 888  d8P    
 "Y888b.   888     888 888   d88P 8888888    888   d88P      888    888    d88P 888 888   d88P 888d88K     
    "Y88b. 888     888 8888888P"  888        8888888P"       888    888   d88P  888 8888888P"  8888888b    
      "888 888     888 888        888        888 T88b        888    888  d88P   888 888 T88b   888  Y88b   
Y88b  d88P Y88b. .d88P 888        888        888  T88b       888  .d88P d8888888888 888  T88b  888   Y88b  
 "Y8888P"   "Y88888P"  888        8888888888 888   T88b      8888888P" d88P     888 888   T88b 888    Y88b