#!/usr/bin/ruby

var c1 = "\e[0;31m";
var c2 = "\e[1;30m";
var z = "\e[0m";

var arch_logo = <<"LOGO";
                  #{c1}###{z}\t\t\t
                 #{c1}##{c2}###{c1}##{z}\t\t\t
                #{c1}##{c2}#####{c1}##{z}\t\t\t
               #{c1}##{c2}#######{c1}##{z}\t\t\t
              #{c1}##{c2}#########{c1}##{z}\t\t
             #{c1}##{c2}###########{c1}##{z}\t\t
            #{c1}##{c2}#############{c1}##{z}\t\t
           #{c1}##{c2}###############{c1}##{z}\t\t
          #{c1}##{c2}#################{c1}##{z}\t\t
         #{c1}##{c2}###################{c1}##{z}\t\t
        #{c1}##{c2}########{c1}#######{c2}########{c1}##{z}\t\t
       #{c1}##{c2}########{c1}##{z}      #{c1}##{z}#{c2}########{c1}##{z}\t\t
      #{c1}##{c2}#########{c1}##{z}      #{c1}##{z}#{c2}#########{c1}##{z}\t
     #{c1}##{c2}##########{c1}##{z}      #{c1}##{z}#{c2}##########{c1}##{z}\t
    #{c1}##{c2}#######{c1}####{z}          #{c1}####{c2}#######{c1}##{z}\t
   #{c1}##{c2}#####{c1}###{z}                  #{c1}###{c2}#####{c1}##{z}\t
  #{c1}##{c2}###{c1}##{z}                          #{c1}##{c2}###{c1}##{z}\t
 #{c1}##{c2}##{c1}##{z}                              #{c1}##{c2}##{c1}##{z}\t
LOGO

arch_logo = arch_logo.lines.map{.trim_end}.join("\n");

var escaped0 = arch_logo.gsub(/\e/, '\e').quotemeta;
var escaped = '\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\#\\#\\#\\#\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[0m\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[0m\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[0m\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\#\\#\\\\e\\[0m\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\#\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\#\\\\e\\[0m\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\#\\\\e\\[1\\;30m\\#\\#\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\
\\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m\\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\ \\\\e\\[0\\;31m\\#\\\\e\\[1\\;30m\\#\\\\e\\[0\\;31m\\#\\\\e\\[0m';

var escaped1 = <<"LOGO".trim_end;
                  \e[0;31m##\e[0m
                 \e[0;31m#\e[1;30m##\e[0;31m#\e[0m
                \e[0;31m#\e[1;30m####\e[0;31m#\e[0m
               \e[0;31m#\e[1;30m######\e[0;31m#\e[0m
              \e[0;31m#\e[1;30m########\e[0;31m#\e[0m
             \e[0;31m#\e[1;30m##########\e[0;31m#\e[0m
            \e[0;31m#\e[1;30m############\e[0;31m#\e[0m
           \e[0;31m#\e[1;30m##############\e[0;31m#\e[0m
          \e[0;31m#\e[1;30m################\e[0;31m#\e[0m
         \e[0;31m#\e[1;30m##################\e[0;31m#\e[0m
        \e[0;31m#\e[1;30m#######\e[0;31m######\e[1;30m#######\e[0;31m#\e[0m
       \e[0;31m#\e[1;30m#######\e[0;31m#\e[0m      \e[0;31m#\e[0m\e[1;30m#######\e[0;31m#\e[0m
      \e[0;31m#\e[1;30m########\e[0;31m#\e[0m      \e[0;31m#\e[0m\e[1;30m########\e[0;31m#\e[0m
     \e[0;31m#\e[1;30m#########\e[0;31m#\e[0m      \e[0;31m#\e[0m\e[1;30m#########\e[0;31m#\e[0m
    \e[0;31m#\e[1;30m######\e[0;31m###\e[0m          \e[0;31m###\e[1;30m######\e[0;31m#\e[0m
   \e[0;31m#\e[1;30m####\e[0;31m##\e[0m                  \e[0;31m##\e[1;30m####\e[0;31m#\e[0m
  \e[0;31m#\e[1;30m##\e[0;31m#\e[0m                          \e[0;31m#\e[1;30m##\e[0;31m#\e[0m
 \e[0;31m#\e[1;30m#\e[0;31m#\e[0m                              \e[0;31m#\e[1;30m#\e[0;31m#\e[0m
LOGO

escaped == escaped0 ||
    die "escaped-error";

escaped1 == arch_logo ||
    die "double_escaped-error";

var apply = escaped.unescape.apply_escapes;
apply == arch_logo ||
    die "apply_escapes-error";

say apply;