From 2e80e535b381f911ba6808d8ac8506c2dd1fe6e5 Mon Sep 17 00:00:00 2001 From: 0xA0 Date: Sat, 3 Oct 2026 15:22:16 +0200 Subject: [PATCH] store side art as one ANSI file, render it with PHP (cached) --- css/style.css | 14 ++----- inc/art.php | 101 +++++++++++++++++++++++++++++++++++++++++++++ inc/art/left.html | 88 --------------------------------------- inc/art/right.html | 88 --------------------------------------- inc/art/sakura.ans | 88 +++++++++++++++++++++++++++++++++++++++ inc/footer.php | 5 ++- 6 files changed, 195 insertions(+), 189 deletions(-) create mode 100644 inc/art.php delete mode 100644 inc/art/left.html delete mode 100644 inc/art/right.html create mode 100644 inc/art/sakura.ans diff --git a/css/style.css b/css/style.css index 5aa831f..8d5e504 100644 --- a/css/style.css +++ b/css/style.css @@ -188,9 +188,9 @@ button { } /* ── side art ─────────────────────────────────────────────────────────── - Full-height sakura in both margins: colored ASCII art (inc/art/left.html - and right.html, 104x88 characters), mirrored so the branches hang in from - the outer corners. Hidden when there's no margin. */ + Full-height sakura in both margins: ANSI art (inc/art/sakura.ans, `cat` + it), turned into HTML by inc/art.php and mirrored for the right side so the + branches hang in from the outer corners. Hidden when there's no margin. */ /* The art is drawn for .6em-wide characters; system monospaces range from .5em up, which squashes it. So it gets its own: JetBrains Mono's printable @@ -219,14 +219,6 @@ button { ltr, or the bidi algorithm reorders runs of punctuation */ .side-right { right: 0; direction: rtl; } .side-right > span { direction: ltr; unicode-bidi: isolate; } -.side .a0 { color: #8c6068; } -.side .a1 { color: #a07076; } -.side .a2 { color: #ffb0cc; } -.side .a3 { color: #ff96be; } -.side .a4 { color: #f678ac; } -.side .a5 { color: #ffd4e4; } -.side .a6 { color: #e86098; } -.side .a7 { color: #ffecbe; } /* the column's shadow: the art fades out under it instead of stopping dead beside the text. Eased falloff, as wide as about a third of the margin. */ diff --git a/inc/art.php b/inc/art.php new file mode 100644 index 0000000..0c9211b --- /dev/null +++ b/inc/art.php @@ -0,0 +1,101 @@ + [] {} so shapes still read. + */ + +function ansi_color(array $p, ?string $cur): ?string +{ + static $basic = ['000000', 'aa0000', '00aa00', 'aa5500', '0000aa', 'aa00aa', '00aaaa', 'aaaaaa', + '555555', 'ff5555', '55ff55', 'ffff55', '5555ff', 'ff55ff', '55ffff', 'ffffff']; + for ($i = 0; $i < count($p); $i++) { + $n = (int) $p[$i]; + if ($n === 0 || $n === 39) { + $cur = null; + } elseif ($n >= 30 && $n <= 37) { + $cur = $basic[$n - 30]; + } elseif ($n >= 90 && $n <= 97) { + $cur = $basic[$n - 82]; + } elseif ($n === 38 && ($p[$i + 1] ?? '') === '2') { + $cur = sprintf('%02x%02x%02x', $p[$i + 2] ?? 0, $p[$i + 3] ?? 0, $p[$i + 4] ?? 0); + $i += 4; + } elseif ($n === 38 && ($p[$i + 1] ?? '') === '5') { + $c = (int) ($p[$i + 2] ?? 0); + $i += 2; + if ($c < 16) { + $cur = $basic[$c]; + } elseif ($c < 232) { + $c -= 16; + $lvl = static fn(int $v): int => $v ? 55 + 40 * $v : 0; + $cur = sprintf('%02x%02x%02x', $lvl(intdiv($c, 36)), $lvl(intdiv($c, 6) % 6), $lvl($c % 6)); + } else { + $cur = str_repeat(sprintf('%02x', 8 + 10 * ($c - 232)), 3); + } + } + } + return $cur; +} + +/** ansi_html(), cached on disk until the .ans file changes (parsing costs ~30 ms a side). */ +function ansi_html_cached(string $file, bool $mirror = false): string +{ + $dir = (defined('DATA_DIR') ? DATA_DIR : sys_get_temp_dir()) . '/art-cache'; + $base = $dir . '/' . md5($file . '|' . (int) $mirror); + $key = $base . '-' . filemtime($file) . '.html'; + if (is_file($key)) { + return (string) file_get_contents($key); + } + $html = ansi_html($file, $mirror); + @mkdir($dir, 0755, true); + array_map('unlink', glob($base . '-*.html') ?: []); // every deploy bumps the mtime + $tmp = $key . '.' . getmypid(); + if (@file_put_contents($tmp, $html) !== false) { + rename($tmp, $key); + } + return $html; +} + +function ansi_html(string $file, bool $mirror = false): string +{ + static $flip = ['/' => '\\', '\\' => '/', '(' => ')', ')' => '(', '<' => '>', '>' => '<', + '[' => ']', ']' => '[', '{' => '}', '}' => '{']; + $lines = []; + foreach (explode("\n", rtrim((string) file_get_contents($file), "\n")) as $line) { + // split into [char, color] cells + $cells = []; + $cur = null; + foreach (preg_split('/(\e\[[0-9;]*m)/', $line, -1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY) as $part) { + if ($part[0] === "\e") { + $cur = ansi_color(explode(';', substr($part, 2, -1)), $cur); + continue; + } + foreach (mb_str_split($part) as $ch) { + $cells[] = [$ch, $cur]; + } + } + $lines[] = $cells; + } + + $width = max(array_map('count', $lines) ?: [0]); + $out = []; + foreach ($lines as $cells) { + $cells = array_pad($cells, $width, [' ', null]); + if ($mirror) { + $cells = array_map(static fn($c) => [$flip[$c[0]] ?? $c[0], $c[1]], array_reverse($cells)); + } + $html = ''; + $open = null; + foreach ($cells as [$ch, $color]) { + // blanks have no color of their own; let them ride along in the open run + if ($ch !== ' ' && $color !== $open) { + $html .= ($open !== null ? '' : '') . ($color !== null ? "" : ''); + $open = $color; + } + $html .= htmlspecialchars($ch); + } + $out[] = $html . ($open !== null ? '' : ''); + } + return implode("\n", $out); +} diff --git a/inc/art/left.html b/inc/art/left.html deleted file mode 100644 index a147e51..0000000 --- a/inc/art/left.html +++ /dev/null @@ -1,88 +0,0 @@ - -+.:===+=: : ,#@@@@@@@@@%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@%%o - ,+-===-, .**. .X@@@@@@@@o*o*@@@@@@%@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ - =**=. , o@@@@@@@%###@@@@%#%@@@%xx=x@@@@@@X@#@X#@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@ -,,:+*+, -%: -%#@@@@@@@@@@@@@@%X+=@x@@-#+o%@@@X-: .-. ,@%#%*@@@@%@@@@@@@@@@@@@@@@@@@%#@ -==+***=----;;, :#@@@@@@@@@@@@@@@#,:xX*@@;==Xo@%@%= . ,*;x@@@%@%x@@@@@@@@@@@@@x+x= ---=***+++******=-:. ;+xX+@@@@@@@@@@@@%xo@@@@@@@@@%@@@@%x: ;=,*#@@@@xx@%@@%@@#@@@+, - .,,::;;-=++++++=;:xX;,,*x*.:=*o@@@@@@@@@@@#@@@@@@@@@@@@@@@%--. :*+@@@@@@@@@@X@@@@@@X:#-=: - .,;+**==+***++**+++=*Xx@@@@@@@@@@@@@@@@@@@@@@@@@@@X@+::;;;;-o@@@@@@@@@@@@@@@%+: -* - ,;===+=: ...:=o#@@@@@@@@@@@@@@@@@@@@@@oX%@xX;,.. =*o@@@@@#o@@@@@@@@@@@,,, - .*, .:+*+*=;. ;=.,*x@x@@@@@@@@@@@@@@@@#Xx. .;=-o*;:;. ;@@@@@X+,:=o@@@@@@@@#, - ,. . ;+***+-,:- ,*o+@@@@@@@@@@* :--#o ,;x@@@@@x=%@@@@@@@%%@+--o@@#@o*. - ,; *= :++-+**=;.:x*=@@@@@@@@@@#, :; :#@@@@@@@:o@@@@@@@@@@@@##@x*: - :- :- ,++: :=++o=#@@@@@@@@@@%-,.;. ,;;+@@@#%*.@@@@@@@oo+@@@@@@@@@@@@@@@o; - .o*, ,==. ;*%@@@@@@Xx#*:o=*@%@@@@@@@@@@@@:.;:*@@*o+ ;#x@%@@@@@@@+*#- - :++- o@@@@@@@@#@@@%-#%@@@@@@@@@@@#%##@*o#;;: .-,X@@@@@@@@##- - :; ,o++#x, x#@@@@@@@@@@@@#@@@@@@@@@@@@X%%%@@@@#%%. ;@@@@@@@@@##Xo;. -, .+. -- -++, , ,@@@@@@@@@@@@@@@@@@@@@%@#@@#@@@@@@@@%= *@@@@@@@%= . , -, -x: .++; :@#xX@@%@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@%%x,,,=@@@@@x=: ;:. .+=x#, -,,. .oX- -*= ;X%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+;X=*@X::, -x@@@@@@%* +X. ,*+: - ,::;;;:, +-; -*- x+:X@@@@@@@@@@@@@@@@@@@@@@%o@@+*@@Xxo. .o@@@@@@@X- . -. .,:---;+=;.,-=: ,o+@@@@@@@@@@@@@@@@@@@##*.+@@@@@@@%; ,+o@@@@#+; ;#+. - , .+o===;. +@@@@@@@@@@@@@@@x%#x+; +@%@@@@@@@o :X*X*, ; -#%: :=+;. ,#@@@@@@@@@@@@@@+,.::++;:.X#x@@%#X. . -=. :+=: =o+=-@@@@@@@@@o+o=..:-=; :X; .@@@%* - .-=, ;+==. .:%@@@@@@@@@x-;-..-=:+*X@x==x+,=- . %@@@@@% - :=; . ,;==+- ;@@@@@@@@@@@@X@+, .;%@@@@@@@@@@o ,,%@-,.:;;,x@@@#- - .. ,--. ;%+. :=++=++. ,o@@@@@@@@@#@@%#@+#%@@@@@@@@@@@@- .-@@@@@@o=#*#%#:*@@ - ,@%:=x#;+: : .::::-++#x#o *++%*@@@@@@@@@@@@@@@@@@@@@@@@@@X: .:::::,,-@@@@o-#@@@@@@@@@ -#@@@@@@@@%- ,;-;,,;-==o@@@%o+@@@@@@x%@@@@@@@@@@@@@@@@@@@@@;;-ox#*:=-::;-;;--;:=:.=; :;@xxX@XX= -@@@@@@%@#o++x: .,;:,.:;;;=-=*X;%x=@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-,,:*@@@@%@#=-:, :+ -@@@@@@@@#%@@@xX*:::,:;;-;;=++==#o. o@@@@@@@@@@@@@@@@@@@@@@X;-:::*X:.=#@@@@%#=, ;:,.xx,;+:,, x -*%@@@%#@@@@@@@x;::;-;::,.;=,o@@@#; ;-=X%@@@@@@@@@@@@@@@@@@X=-:=o%@#%* ;@@=*+,:-;.,,,,,;-@@@%%@@@@%@Xx# -x%@@%@@@@@@@#@o;:,. .=;.:@@@@Xx;-====o#@@@@@@@@@#X@@@@@@@@%o:=x@@@@=;-=+-====--==:::+%@@@@@@@@@@@#%oo -=+XX%@@@@@@@@@o...,;#@==*oXx@X#%;;;,,.,-@@@@@@@@@@@@@@@@@@@@@@x: x@@@@X:,,,,::;-;-==-,,;#@@@@@@@@%ox+,:+ -o*=-@@@@@@@@@@@@@@@@@@%@#@@@@@@%- -, x%@@@@@@@@%#X@@@#@@@@@@@@@=;=@@-=. ::. .,=-x@@@@@@@@%@@X-;=X -@@@@@@@@@@@@@@#o%%@@@@@@@@@@@@@@@=-@o *@##@@x%-,@@@@@@@@@@@@@@@@@@@%@@%o: ,;,:,.x@@@@@@@X%@%@@X#%@ -@@@@@@@@@@x%@@@@x-@@#@@xX@@@@@@@@@@@%X+x@@@o.;%@#@@@@@@@@@@@@@@@@@@@@@@@@@@X :-.,*%@@@@@@%@@@@@%%@@@ -@@@@@@@@X=,=@@@@@@@@@@@:=#X%@@#@@@%@X**x%@##*#@@@@@@X@@@@@@@@@@@@@@@@@@@@@@*:xo=%@@%%@@X@@@@@@@@@@@@@@@@ -@@@@@@@@@#@@@@@@@%@@@@+,.,+;+. :=.*%X@X,*@X*@@#@@@@@%@@@@@@@@@@@%#@@@@@@**-;-%@@@@@@@@@@@@@@@@@@@@@@@@@@ -@@@@@@@@Xo#@@@@@=*%@+++: ,*. =%@@%@%#@@@@@@@@@@@@@@@@@@@@@@@@@@%X: :@@@@@@@%@@@@@@@@@@@@@@@@@@@@#% -@@@@@@#o*x@@@@@@@@@@%x;=:,=, =@@@@x#X%@@@@@@@@@@@@@@@@@@=o%@@@@@@#:,+#@@%%XXx%@@@@@@@@@@@@@@@@@@@@@ -@%@@@@@@@@%%@@@@@@X%# ,+,Xo: *@@@%*:=*%@#@@@%Xo:X@@@@@@@==#@@@@@@@@@%=:%x ;oX@%@@@@@@@@@@@@@@@@@@ -@@@@@@@@@@@@@@@@@+ + ;+-,. ,x%*+X* *#%@@@@@@o ;*@@@@@@@X: :,%@@@@@%x*+;. ,-.*o@@@@@@@@@@@@@@@@ -@@@@@@@@@@@@@@@#*, -X+@@, ,x@%@%xo; ;x@@@@@@@@=.=#@@@@@@%o- o@%X@@@+x%o, ;@@@@@@@@@@@@@@@@ -@@@@@@@@Xo%@@@@@@# :#@@@@X,-%@@@@@%*x@@@@@@@@@@%@*X@@@@@@Xo= .;=@@@@@@@@@@=. ;%@#@@@@@@@@@@@@@@@ -@@@@@@@@@@@@@@@@@%#****@@@@x+X@@@@@@@@@@@@@@@@%=%@%@X#%@@@@%= +@@@@@@@@+--:,:-+%@@@@@@@@@@@@@@@ -@@@@%@@%-%@@@@%#@%%@@@%@@@@@@@@%o:@@@@@@@@@@@@@.;: #@o;; .*-+@@@@@%X= :=x@x%@X%@@@@@@@@@@@@@ -@@@@==; ,@@@@@@#@@@@@@@@@#@%.--.,,,o%Xx@@@@@@@x-%+ ,o##@#X-.X#; ;X@@@#+xo@@@@@@@@@@@@ -@@@X:,,,*@@@@@@@@@@@@%@@#xo@; :;x- ;#x%@@@#%@@%@+ .*@@@@@* -*; ,-+@#o=*@@@@@@@@@@@@@ -@@@@@@:;@@@@@@@@@@@@@@@@@@@@#+ .:. ::=;=o%:#@@@@o:.X%: X@@@@@@* ,, -*++-. ::+-=%@@@@@@@@@@@@ -@@@@@@X%@@@@@@@@@@@@@@@@@@%@X; :+,:: X%%@@@#@@%@@*+, :@@@@@@@@@%**: -o%%= .;**-@@@@@@%X@@@ -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x..;*@%oo::;++*%@@@@@@@@@@#X; ,o@@@@@@@@@++* :=; ;+;:+o@@@@@@@@ -@@@@@@@@@@@@@@@@@@@@%#@@@@@@@@X@@@@@@%x#@@@@@@@##@@@@@@@@;,.,. .oX;#@@@@@@@@o ,=*@o@+ ;=.+X@@@@@@@@ -@@@@@@@@@@@@@@@@@#@oX#@@@@@@@@@@@@@@@XX@@@@@@X%%%%@@@@@@@@@@@@@%. ..:o;=@%X#, .%%@@%; xXo@@@@@@@@@ -*%@@@@@@@@@@@@@@ :@@@@@@@@@@@@@@@@@#-o@@@@@@@:=@@x@@@@@@@@@@@@o:. ,, -, #x+X*X@@@o; %#@@@@@@@@@@@@ -:x%@@@@@@@@@@@@x. ;X@@@@@@@@@@@@@@@@@@@@@@@@@%%X@@@@@@@@@@@@@@@%#+ .: .X#%@@@@%%@@@#.*@@@@@@@@@@@#@@ -#@#@@@@@@@#@%*oX;.**@@@@@@@@@@@@@@@@@@@@@@@@@%:#@@@@@@@@@@@@%@@*%x ; .:;@@@@@@@@@@@@@@@@@@@@@@@@@@ -@@@@@@@%@%%@%X#@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Xo@@@@o*@@@@@@@o +@o#* .*@@@@@@@@@@@@@@#+%@@@@@@@ -@@@@@@@@@@@%xx@@@@@@@@@@@@@@@@@@@@@@@@@@ox@@%%@@@@@o,.;x#@@@@o x@@@@@@;:.-;,,,;,+-o+-x%@@@@@@@%@@@@@@@@@ -#@@@@@@@@@%#x+*::X@X#@@@@@@@@@@@@@%#@@@%; ;xx%@@@@@X ,#%+o,,:@#%@@@@x@%*= ;@@@@@@@#XX#%@@@@@@@ --;:--@@@#x@X::-;;Xo;=%@@@@@@@@@@@@@@#= ,@%:;- ,:=#+ :, :@@@@@@@@@* =X@@@@@@* +#Xo@%X*: -++=--=*%@@@*-;=*;;::x@@@@@@@@@@@@@@x. -X=,::;:-o@@%@#;,x@@@@@@@@+. -=X+@@@@%X@* ,==+::- -@oo, ,@@@@@@@x,-=; ;*%@@@@@@@@@@@@@@o#o X@%@@X=:, :%@@@@@X##@@@@@@@@%X= ;: .*@@@@@@xx. ;=- . -x@@@+;*@@@@@@#x%@@@@@@%@@@@@@%X@@@@@@%=;,:;;:::+%@@@@@@# -@@@@@*X%@@%@%@@%#;=#*,,- x%@@@@@@@@XX ,+-. -@@@@@@@@@@@@@@@@@@@@@@@@@@%X x%@@%%@o.,;-:,%xx@@@@@@%#o:.xX%@#%oXx+@%*x*##=x#@@@@: +@o@@@@@@@@= ;=- -@@@@@@@@@@@@@@@@@@@@@@@@@@@@+ .:,;*.-+--::,X@@@@@@@@@@%X*,o* *x, . .:*@@@@* .,o+=*X%;-; .+: -++@@@@@@@@@@@@@@@@@@@@@@@@@*. *oox :-;,::=*@@@@@@@@@@#*x#@@@@=:%o+; ,X#o=- ,+ -%=..@X#@%@@@@@@@*o%o@@@@%-+: =#@@@%Xx:=@@X@@@@@@@@@@@+:@@@@@@+#%@%, ,:%#@%+-@X;. :x=. . -X, -%@@@@@@@@;. ,:-,+- , o@@@@%x==%@@@@@@@@@@@@@@@%@@@@@@@X:=. -*@@@@@@%@@@#+ .*: - .Xo+#*%@@@@@=: =o+@X., ,@@%@%@@X%@@@@@@@@@@@@@@@@@@@@@@@%; .=#@@@@@@@@@@%; ,, - :X@@@@*. ,o%@@@@%. ,x@@@%+ -@@@@@@@@@@#@%;@@@@@@@@@+ o#o@@@@@@@@@@= -%x +* - ;; .@@@@@@@@=x@%@@@@%@x XX;#@o,#@%%@@@@@@%*#o*%%@@%@#=#o ;o@@@@@@@@@@@X=- . ;*@@ - **. ,::@@@@@@@@@XX%X+:o=+-o#%@@@@@@@@%#@@@@@x+*x#@o+*,::, =o#@@@@@@@@@x=+ ;o@@ - x@@@%@@@@@o*@@#%@X%@X@@@@@@@@@x,=@@@@@@@%@%@@%= ,;;=X%@@@@@@@@@@@%:@xx* +%- ,o= - :- ,X@@@@@%@@@@@@@@@@@@@@o,+@@@@@@%@@x@@@@@@%@%%@= ;#@@@@@@@@@@@@X%%@@* ::. - :; :x*X@@@@@@@@@@@@@@@@-*X=*@x*-x%@@@@@@%@%@@@%@X= +@@@@@@@@@@@@X- #*-- .;. - .x%@@@@@@@@@@@@@%;. +@@@@@:oX@@@@@@@@@@@@@@#= -@o#@#@#+X@@@@@@%=;@x-@Xo- **. *@@ - ,#@@%o.-%@@@* . +@%@%o-#@@@@@@@@@@@@@@@@=,,#@@@@@%@x;x@@@@#==@@@@@@@@;..;=+@@x%%;o%% - .=;*+ .*=+= x@%@@@@@@@@@%@@@@@@@@%%+ +@@@@@@@;:@@@@@X@X@@x@o;=. x@@@@@@=,++* - :%@@@@@@@@@@@@@@@@@@@@@;** o%+@@@@@@@@@@@@@@@@%X= ,,,;#@@@@x@X - ,+o@@@@@@X%@@@@@%@@@@X;#@@@@@@@@x%@@@@@@@@@@@@@@%;#+.. ,;*%@@X, o - ,#@@@@@@@@==%@@@@@@@@::ox@X@@@@@*-#@@@@@@@@@@@@@@%@@@o ,;@@@@@- ;x - ,#@@@@=@@@@%- .x@@%@%o ;#%X@@@@@@@@@@@@#xX;X@%@@%@%%@, :%@@@@#- -* - ##+X:=@X@+ :..+- .. ,=@@@@@@@@@@@@@@@*@@%@x%@; x@X%@- -. - .. . ;X@@@@@@@@@@@@@@@@@@##%@@@%%- ,; :--%= - ., .:X@@@@@@@@@@@@@@%@%@xx#@@%@x: ++. - -@%. ,: o@@@@@@@@@@@@@@@%x--x; .-,:x= . - , ;##: X@@@#x@@@@@@@@@@#*; :%x, \ No newline at end of file diff --git a/inc/art/right.html b/inc/art/right.html deleted file mode 100644 index 87dfe8c..0000000 --- a/inc/art/right.html +++ /dev/null @@ -1,88 +0,0 @@ -o%%@@@@@@@@%@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@%@@@@@@@@@#, : :=+===:.+- -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#@@@@@@%@@@@@@*o*o@@@@@@@@X. .**. ,-===-+, -@@@@@@@@@@%%%@@@@@@@@@@@@@@@@@@@@#X@#@X@@@@@@x=xx%@@@%#%@@@@###%@@@@@@@o , .=**= -@#%@@@@@@@@@@@@@@@@@@@%@@@@*%#%@, .-. :-X@@@%o+#-@@x@=+X%@@@@@@@@@@@@@@#%- :%- ,+*+:,, -=x+x@@@@@@@@@@@@@x%@%@@@x;*, . =%@%@oX==;@@*Xx:,#@@@@@@@@@@@@@@@#: ,;;----=***+== - ,+@@@#@@%@@%@xx@@@@#*,=; :x%@@@@%@@@@@@@@@ox%@@@@@@@@@@@@+Xx+; .:-=******+++***=-- - :=-#:X@@@@@@X@@@@@@@@@@+*: .--%@@@@@@@@@@@@@@@#@@@@@@@@@@@o*=:.*x*,,;Xx:;=++++++=-;;::,,. - *- :+%@@@@@@@@@@@@@@@o-;;;;::+@X@@@@@@@@@@@@@@@@@@@@@@@@@@@xX*=+++**++***+==**+;,. - ,,,@@@@@@@@@@@o#@@@@@o*= ..,;Xx@%Xo@@@@@@@@@@@@@@@@@@@@@@#o=:... :=+===;, - ,#@@@@@@@@o=:,+X@@@@@; .;:;*o-=;. .xX#@@@@@@@@@@@@@@@@x@x*,.=; .;=*+*+:. ,*. - .*o@#@@o--+@%%@@@@@@@%=x@@@@@x;, o#--: *@@@@@@@@@@+o*, -:,-+***+; . ., - :*x@##@@@@@@@@@@@@o:@@@@@@@#: ;: ,#@@@@@@@@@@=*x:.;=**+-++: =* ;, - ;o@@@@@@@@@@@@@@@+oo@@@@@@@.*%#@@@+;;, .;.,-%@@@@@@@@@@#=o++=: :++, -: -: - -#*+@@@@@@@%@x#; +o*@@*:;.:@@@@@@@@@@@@%@*=o:*#xX@@@@@@%*; .==, ,*o. - -##@@@@@@@@X,-. :;;#o*@##%#@@@@@@@@@@@%#-%@@@#@@@@@@@@o -++: - .;oX##@@@@@@@@@; .%%#@@@@%%%X@@@@@@@@@@@@#@@@@@@@@@@@@#x ,x#++o, ;: - , . =%@@@@@@@* =%@@@@@@@@#@@#@%@@@@@@@@@@@@@@@@@@@@@, , ,++- -- .+. , - ,#x=+. .:; :=x@@@@@=,,,x%%@@@@@@@@%@%@@@@@@@@@@@@@@@@@@@@%@@Xx#@: ;++. :x- , - :+*, .X+ *%@@@@@@x- ,::X@*=X;+#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%X; =*- -Xo. .,, - . -X@@@@@@@o. .oxX@@*+@@o%@@@@@@@@@@@@@@@@@@@@@@X:+x -*- ;-+ ,:;;;::, - .+#; ;+#@@@@o+, ;%@@@@@@@+.*##@@@@@@@@@@@@@@@@@@@+o, :=-,.;=+;---:,. . - ; ,*X*X: o@@@@@@@%@+ ;+x#%x@@@@@@@@@@@@@@@+ .;===o+. , - . .X#%@@x#X.:;++::.,+@@@@@@@@@@@@@@#, .;+=: :%# -*%@@@. ;X: ;=-:..=o+o@@@@@@@@@-=+o= :=+: .= -%@@@@@% . -=,+x==x@X*+:=-..-;-x@@@@@@@@@%:. .==+; ,=-. --#@@@x,;;:.,-@%,, o@@@@@@@@@@%;. ,+@X@@@@@@@@@@@@; -+==;, . ;=: -@@*:#%#*#=o@@@@@@-. -@@@@@@@@@@@@%#+@#%@@#@@@@@@@@@o, .++=++=: .+%; .--, .. -@@@@@@@@@#-o@@@@-,,:::::. :X@@@@@@@@@@@@@@@@@@@@@@@@@@*%++* o#x#++-::::. : :+;#x=:%@, -=XX@Xxx@;: ;=.:=:;--;;-;::-=:*#xo-;;@@@@@@@@@@@@@@@@@@@@@%x@@@@@@+o%@@@o==-;,,;-;, -%@@@@@@@@# - +: ,:-=#@%@@@@*:,,-%%@@@@@@@@@@@@@@@@@@@@@@@@@@@=x%;X*=-=;;;:.,:;,. :x++o#@%@@@@@@ -x ,,:+;,xx.,:; ,=#%@@@@#=.:X*:::-;X@@@@@@@@@@@@@@@@@@@@@@o .o#==++=;;-;;:,:::*Xx@@@%#@@@@@@@@ -#xX@%@@@@%%@@@-;,,,,,.;-:,+*=@@; *%#@%o=:-=X@@@@@@@@@@@@@@@@@@%X=-; ;#@@@o,=;.,::;-;::;x@@@@@@@#%@@@%* -oo%#@@@@@@@@@@@%+:::==--====-+=-;=@@@@x=:o%@@@@@@@@X#@@@@@@@@@#o====-;xX@@@@:.;=. .,:;o@#@@@@@@@%@@%x -+:,+xo%@@@@@@@@#;,,-==-;-;::,,,,:X@@@@x :x@@@@@@@@@@@@@@@@@@@@@@-,.,,;;;%#X@xXo*==@#;,...o@@@@@@@@@%XX+= -X=;-X@@%@@@@@@@@x-=,. .:: .=-@@=;=@@@@@@@@@#@@@X#%@@@@@@@@%x ,- -%@@@@@@#@%@@@@@@@@@@@@@@@@@@-=*o -@%#X@@%@%X@@@@@@@x.,:,;, :o%@@%@@@@@@@@@@@@@@@@@@@,-%x@@##@* o@-=@@@@@@@@@@@@@@@%%o#@@@@@@@@@@@@@@ -@@@%%@@@@@%@@@@@@%*,.-: X@@@@@@@@@@@@@@@@@@@@@@@@@@#@%;.o@@@x+X%@@@@@@@@@@@Xx@@#@@-x@@@@%x@@@@@@@@@@ -@@@@@@@@@@@@@@@@X@@%%@@%=ox:*@@@@@@@@@@@@@@@@@@@@@@X@@@@@@#*##@%x**X@%@@@#@@%X#=:@@@@@@@@@@@=,=X@@@@@@@@ -@@@@@@@@@@@@@@@@@@@@@@@@@@%-;-**@@@@@@#%@@@@@@@@@@@%@@@@@#@@*X@*,X@X%*.=: .+;+,.,+@@@@%@@@@@@@#@@@@@@@@@ -%#@@@@@@@@@@@@@@@@@@@@%@@@@@@@: :X%@@@@@@@@@@@@@@@@@@@@@@@@@@#%@%@@%= .*, :+++@%*=@@@@@#oX@@@@@@@@ -@@@@@@@@@@@@@@@@@@@@@%xXX%%@@#+,:#@@@@@@%o=@@@@@@@@@@@@@@@@@@%X#x@@@@= ,=,:=;x%@@@@@@@@@@x*o#@@@@@@ -@@@@@@@@@@@@@@@@@@%@Xo; x%:=%@@@@@@@@@#==@@@@@@@X:oX%@@@#@%*=:*%@@@* :oX,+, #%X@@@@@@%%@@@@@@@@%@ -@@@@@@@@@@@@@@@@o*.-, .;+*x%@@@@@%,: :X@@@@@@@*; o@@@@@@%#* *X+*%x, .,-+; + +@@@@@@@@@@@@@@@@@ -@@@@@@@@@@@@@@@@; ,o%x+@@@X%@o -o%@@@@@@#=.=@@@@@@@@x; ;ox%@%@x, ,@@+X- ,*#@@@@@@@@@@@@@@@ -@@@@@@@@@@@@@@@#@%; .=@@@@@@@@@@=;. =oX@@@@@@X*@%@@@@@@@@@@x*%@@@@@%-,X@@@@#: #@@@@@@%oX@@@@@@@@ -@@@@@@@@@@@@@@@%+-:,:--+@@@@@@@@+ =%@@@@%#X@%@%=%@@@@@@@@@@@@@@@@X+x@@@@****#%@@@@@@@@@@@@@@@@@ -@@@@@@@@@@@@@%X@%x@x=: =X%@@@@@+-*. ;;o@# :;.@@@@@@@@@@@@@:o%@@@@@@@@%@@@%%@#%@@@@%-%@@%@@@@ -@@@@@@@@@@@@ox+#@@@X; ;#X.-X#@##o, +%-x@@@@@@@xX%o,,,.--.%@#@@@@@@@@@#@@@@@@, ;==@@@@ -@@@@@@@@@@@@@*=o#@+-, ;*- *@@@@@*. +@%@@%#@@@%x#; -x;: ;@ox#@@%@@@@@@@@@@@@*,,,:X@@@ -@@@@@@@@@@@@%=-+:: .-++*- ,, *@@@@@@X :%X.:o@@@@#:%o=;=:: .:. +#@@@@@@@@@@@@@@@@@@@@;:@@@@@@ -@@@X%@@@@@@-**;. =%%o- :**%@@@@@@@@@: ,+*@@%@@#@@@%%X ::,+: ;X@%@@@@@@@@@@@@@@@@@@%X@@@@@@ -@@@@@@@@o+:;+; ;=: *++@@@@@@@@@o, ;X#@@@@@@@@@@%*++;::oo%@*;..x@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -@@@@@@@@X+.=; +@o@*=, o@@@@@@@@#;Xo. .,.,;@@@@@@@@##@@@@@@@#x%@@@@@@X@@@@@@@@#%@@@@@@@@@@@@@@@@@@@@ -@@@@@@@@@oXx ;%@@%%. ,#X%@=;o:.. .%@@@@@@@@@@@@@%%%%X@@@@@@XX@@@@@@@@@@@@@@@#Xo@#@@@@@@@@@@@@@@@@@ -@@@@@@@@@@@@#% ;o@@@X*X+x# ,- ,, .:o@@@@@@@@@@@@x@@=:@@@@@@@o-#@@@@@@@@@@@@@@@@@: @@@@@@@@@@@@@@%* -@@#@@@@@@@@@@@*.#@@@%%@@@@%#X. :. +#%@@@@@@@@@@@@@@@X%%@@@@@@@@@@@@@@@@@@@@@@@@@X; .x@@@@@@@@@@@@%x: -@@@@@@@@@@@@@@@@@@@@@@@@@@;:. ; x%*@@%@@@@@@@@@@@@#:%@@@@@@@@@@@@@@@@@@@@@@@@@**.;Xo*%@#@@@@@@@#@# -@@@@@@@%+#@@@@@@@@@@@@@@*. *#o@+ o@@@@@@@*o@@@@oX@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%@#X%@%%@%@@@@@@@ -@@@@@@@@@%@@@@@@@%x-+o-+,;,,,;-.:;@@@@@@x o@@@@#x;.,o@@@@@%%@@xo@@@@@@@@@@@@@@@@@@@@@@@@@@xx%@@@@@@@@@@@ -@@@@@@@%#XX#@@@@@@@; =*%@x@@@@%#@:,,o+%#, X@@@@@%xx; ;%@@@#%@@@@@@@@@@@@@#X@X::*+x#%@@@@@@@@@# -:*X%@oX#+ *@@@@@@X= *@@@@@@@@@: ,: +#=:, -;:%@, =#@@@@@@@@@@@@@@%=;oX;;-::X@x#@@@--:;- --::+==, *@X%@@@@+X=- .+@@@@@@@@x,;#@%@@o-:;::,=X- .x@@@@@@@@@@@@@@x::;;*=;-*@@@%*=--=++ -. -=; .xx@@@@@@*. :; =X%@@@@@@@@##X@@@@@%: ,:=X@@%@X o#o@@@@@@@@@@@@@@%*; ;=-,x@@@@@@@, ,oo@ -.-+, XX@@@@@@@@%x -,,*#=;#%@@%@%@@%X*@@@@@- #@@@@@@%+:::;;:,;=%@@@@@@X%@@@@@@%@@@@@@%x#@@@@@@*;+@@@x --=; =@@@@@@@@o@+ :@@@@#x=##*x*%@+xXo%#@%Xx.:o#%@@@@@@xx%,:-;,.o@%%@@%x X%@@@@@@@@@@@@@@@@@@@@@@@@@@ -:+. ;-;%X*=+o,. *@@@@*:. . ,x* *o,*X%@@@@@@@@@@X,::--+-.*;,:. +@@@@@@@@@@@@@@@@@@@@@@@@@@@@ -+, -=o#X, ;+o%:=@@@@#x*#@@@@@@@@@@*=::,;-: xoo* .*@@@@@@@@@@@@@@@@@@@@@@@@@++ -. .=x: .;X@-+%@#%:, ,%@%#+@@@@@@:+@@@@@@@@@@@X@@=:xX%@@@#= :+-%@@@@o%o*@@@@@@@%@#X@..=% - :*. +#@@@%@@@@@@*- .=:X@@@@@@@%@@@@@@@@@@@@@@@%==x%@@@@o , -+,-:, .;@@@@@@@@%- ,X - ,, ;%@@@@@@@@@@#=. ;%@@@@@@@@@@@@@@@@@@@@@@@%X@@%@%@@, ,.X@+o= :=@@@@@%*#+oX. -*+ x%- =@@@@@@@@@@o#o +@@@@@@@@@;%@#@@@@@@@@@@- +%@@@x, .%@@@@%o, .*@@@@X: -@@*; . -=X@@@@@@@@@@@o; o#=#@%@@%%*o#*%@@@@@@%%@#,o@#;XX x@%@@@@%@x=@@@@@@@@. ;; -@@o; +=x@@@@@@@@@#o= ,::,*+o@#x*+x@@@@@#%@@@@@@@@%#o-+=o:+X%XX@@@@@@@@@::, .** -=o, -%+ *xx@:%@@@@@@@@@@@%X=;;, =%@@%@%@@@@@@@=,x@@@@@@@@@X@%X@%#@@*o@@@@@%@@@x - .:: *@@%%X@@@@@@@@@@@@#; =@%%@%@@@@@@x@@%@@@@@@+,o@@@@@@@@@@@@@@%@@@@@X, -: -.;. --*# -X@@@@@@@@@@@@+ =X@%@@@%@%@@@@@@%x-*x@*=X*-@@@@@@@@@@@@@@@@X*x: ;: -@@* .** -oX@-x@;=%@@@@@@X+#@#@#o@- =#@@@@@@@@@@@@@@Xo:@@@@@+ .;%@@@@@@@@@@@@@%x. -%%o;%%x@@+=;..;@@@@@@@@==#@@@@x;x@%@@@@@#,,=@@@@@@@@@@@@@@@@#-o%@%@+ . *@@@%-.o%@@#, -*++,=@@@@@@x .=;o@x@@X@X@@@@@:;@@@@@@@+ +%%@@@@@@@@%@@@@@@@@@%@x =+=*. +*;=. - X@x@@@@#;,,, =X%@@@@@@@@@@@@@@@@+%o **;@@@@@@@@@@@@@@@@@@@@@%: -o ,X@@%*;, ..+#;%@@@@@@@@@@@@@@%x@@@@@@@@#;X@@@@%@@@@@%X@@@@@@o+, -x; -@@@@@;, o@@@%@@@@@@@@@@@@@@#-*@@@@@X@xo::@@@@@@@@%==@@@@@@@@#, -*- -#@@@@%: ,@%%@%@@%@X;Xx#@@@@@@@@@@@@X%#; o%@%@@x. -%@@@@=@@@@#, - .- -@%X@x ;@%x@%@@*@@@@@@@@@@@@@@@=, .. -+..: +@X@=:X+## - =%--: ;, -%%@@@%##@@@@@@@@@@@@@@@@@@X; . .. - .++ :x@%@@#xx@%@%@@@@@@@@@@@@@@X:. ,. - . =x:,-. ;x--x%@@@@@@@@@@@@@@@o :, .%@- - ,x%: ;*#@@@@@@@@@@x#@@@X :##; , \ No newline at end of file diff --git a/inc/art/sakura.ans b/inc/art/sakura.ans new file mode 100644 index 0000000..50ec990 --- /dev/null +++ b/inc/art/sakura.ans @@ -0,0 +1,88 @@ + -+.:===+=: : ,#@@@@@@@@@%@@@@@@@@@@@@@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@%@@@%@@@@@@@@%%o + ,+-===-, .**. .X@@@@@@@@o*o*@@@@@@%@@@@@@#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ + =**=. , o@@@@@@@%###@@@@%#%@@@%xx=x@@@@@@X@#@X#@@@@@@@@@@@@@@@@@@@@%%%@@@@@@@@@@ +,,:+*+, -%: -%#@@@@@@@@@@@@@@%X+=@x@@-#+o%@@@X-: .-. ,@%#%*@@@@%@@@@@@@@@@@@@@@@@@@%#@ +==+***=----;;, :#@@@@@@@@@@@@@@@#,:xX*@@;==Xo@%@%= . ,*;x@@@%@%x@@@@@@@@@@@@@x+x= +--=***+++******=-:. ;+xX+@@@@@@@@@@@@%xo@@@@@@@@@%@@@@%x: ;=,*#@@@@xx@%@@%@@#@@@+, + .,,::;;-=++++++=;:xX;,,*x*.:=*o@@@@@@@@@@@#@@@@@@@@@@@@@@@%--. :*+@@@@@@@@@@X@@@@@@X:#-=: + .,;+**==+***++**+++=*Xx@@@@@@@@@@@@@@@@@@@@@@@@@@@X@+::;;;;-o@@@@@@@@@@@@@@@%+: -* + ,;===+=: ...:=o#@@@@@@@@@@@@@@@@@@@@@@oX%@xX;,.. =*o@@@@@#o@@@@@@@@@@@,,, + .*, .:+*+*=;. ;=.,*x@x@@@@@@@@@@@@@@@@#Xx. .;=-o*;:;. ;@@@@@X+,:=o@@@@@@@@#, + ,. . ;+***+-,:- ,*o+@@@@@@@@@@* :--#o ,;x@@@@@x=%@@@@@@@%%@+--o@@#@o*. + ,; *= :++-+**=;.:x*=@@@@@@@@@@#, :; :#@@@@@@@:o@@@@@@@@@@@@##@x*: + :- :- ,++: :=++o=#@@@@@@@@@@%-,.;. ,;;+@@@#%*.@@@@@@@oo+@@@@@@@@@@@@@@@o; + .o*, ,==. ;*%@@@@@@Xx#*:o=*@%@@@@@@@@@@@@:.;:*@@*o+ ;#x@%@@@@@@@+*#- + :++- o@@@@@@@@#@@@%-#%@@@@@@@@@@@#%##@*o#;;: .-,X@@@@@@@@##- + :; ,o++#x, x#@@@@@@@@@@@@#@@@@@@@@@@@@X%%%@@@@#%%. ;@@@@@@@@@##Xo;. +, .+. -- -++, , ,@@@@@@@@@@@@@@@@@@@@@%@#@@#@@@@@@@@%= *@@@@@@@%= . , +, -x: .++; :@#xX@@%@@@@@@@@@@@@@@@@@@@@%@%@@@@@@@@%%x,,,=@@@@@x=: ;:. .+=x#, +,,. .oX- -*= ;X%@@@@@@@@@@@@@@@@@@@@@@@@@@@@%#+;X=*@X::, -x@@@@@@%* +X. ,*+: + ,::;;;:, +-; -*- x+:X@@@@@@@@@@@@@@@@@@@@@@%o@@+*@@Xxo. .o@@@@@@@X- . +. .,:---;+=;.,-=: ,o+@@@@@@@@@@@@@@@@@@@##*.+@@@@@@@%; ,+o@@@@#+; ;#+. + , .+o===;. +@@@@@@@@@@@@@@@x%#x+; +@%@@@@@@@o :X*X*, ; +#%: :=+;. ,#@@@@@@@@@@@@@@+,.::++;:.X#x@@%#X. . +=. :+=: =o+=-@@@@@@@@@o+o=..:-=; :X; .@@@%* + .-=, ;+==. .:%@@@@@@@@@x-;-..-=:+*X@x==x+,=- . %@@@@@% + :=; . ,;==+- ;@@@@@@@@@@@@X@+, .;%@@@@@@@@@@o ,,%@-,.:;;,x@@@#- + .. ,--. ;%+. :=++=++. ,o@@@@@@@@@#@@%#@+#%@@@@@@@@@@@@- .-@@@@@@o=#*#%#:*@@ + ,@%:=x#;+: : .::::-++#x#o *++%*@@@@@@@@@@@@@@@@@@@@@@@@@@X: .:::::,,-@@@@o-#@@@@@@@@@ +#@@@@@@@@%- ,;-;,,;-==o@@@%o+@@@@@@x%@@@@@@@@@@@@@@@@@@@@@;;-ox#*:=-::;-;;--;:=:.=; :;@xxX@XX= +@@@@@@%@#o++x: .,;:,.:;;;=-=*X;%x=@@@@@@@@@@@@@@@@@@@@@@@@@@@%%-,,:*@@@@%@#=-:, :+ +@@@@@@@@#%@@@xX*:::,:;;-;;=++==#o. o@@@@@@@@@@@@@@@@@@@@@@X;-:::*X:.=#@@@@%#=, ;:,.xx,;+:,, x +*%@@@%#@@@@@@@x;::;-;::,.;=,o@@@#; ;-=X%@@@@@@@@@@@@@@@@@@X=-:=o%@#%* ;@@=*+,:-;.,,,,,;-@@@%%@@@@%@Xx# +x%@@%@@@@@@@#@o;:,. .=;.:@@@@Xx;-====o#@@@@@@@@@#X@@@@@@@@%o:=x@@@@=;-=+-====--==:::+%@@@@@@@@@@@#%oo +=+XX%@@@@@@@@@o...,;#@==*oXx@X#%;;;,,.,-@@@@@@@@@@@@@@@@@@@@@@x: x@@@@X:,,,,::;-;-==-,,;#@@@@@@@@%ox+,:+ +o*=-@@@@@@@@@@@@@@@@@@%@#@@@@@@%- -, x%@@@@@@@@%#X@@@#@@@@@@@@@=;=@@-=. ::. .,=-x@@@@@@@@%@@X-;=X +@@@@@@@@@@@@@@#o%%@@@@@@@@@@@@@@@=-@o *@##@@x%-,@@@@@@@@@@@@@@@@@@@%@@%o: ,;,:,.x@@@@@@@X%@%@@X#%@ +@@@@@@@@@@x%@@@@x-@@#@@xX@@@@@@@@@@@%X+x@@@o.;%@#@@@@@@@@@@@@@@@@@@@@@@@@@@X :-.,*%@@@@@@%@@@@@%%@@@ +@@@@@@@@X=,=@@@@@@@@@@@:=#X%@@#@@@%@X**x%@##*#@@@@@@X@@@@@@@@@@@@@@@@@@@@@@*:xo=%@@%%@@X@@@@@@@@@@@@@@@@ +@@@@@@@@@#@@@@@@@%@@@@+,.,+;+. :=.*%X@X,*@X*@@#@@@@@%@@@@@@@@@@@%#@@@@@@**-;-%@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@@Xo#@@@@@=*%@+++: ,*. =%@@%@%#@@@@@@@@@@@@@@@@@@@@@@@@@@%X: :@@@@@@@%@@@@@@@@@@@@@@@@@@@@#% +@@@@@@#o*x@@@@@@@@@@%x;=:,=, =@@@@x#X%@@@@@@@@@@@@@@@@@@=o%@@@@@@#:,+#@@%%XXx%@@@@@@@@@@@@@@@@@@@@@ +@%@@@@@@@@%%@@@@@@X%# ,+,Xo: *@@@%*:=*%@#@@@%Xo:X@@@@@@@==#@@@@@@@@@%=:%x ;oX@%@@@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@+ + ;+-,. ,x%*+X* *#%@@@@@@o ;*@@@@@@@X: :,%@@@@@%x*+;. ,-.*o@@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@#*, -X+@@, ,x@%@%xo; ;x@@@@@@@@=.=#@@@@@@%o- o@%X@@@+x%o, ;@@@@@@@@@@@@@@@@ +@@@@@@@@Xo%@@@@@@# :#@@@@X,-%@@@@@%*x@@@@@@@@@@%@*X@@@@@@Xo= .;=@@@@@@@@@@=. ;%@#@@@@@@@@@@@@@@@ +@@@@@@@@@@@@@@@@@%#****@@@@x+X@@@@@@@@@@@@@@@@%=%@%@X#%@@@@%= +@@@@@@@@+--:,:-+%@@@@@@@@@@@@@@@ +@@@@%@@%-%@@@@%#@%%@@@%@@@@@@@@%o:@@@@@@@@@@@@@.;: #@o;; .*-+@@@@@%X= :=x@x%@X%@@@@@@@@@@@@@ +@@@@==; ,@@@@@@#@@@@@@@@@#@%.--.,,,o%Xx@@@@@@@x-%+ ,o##@#X-.X#; ;X@@@#+xo@@@@@@@@@@@@ +@@@X:,,,*@@@@@@@@@@@@%@@#xo@; :;x- ;#x%@@@#%@@%@+ .*@@@@@* -*; ,-+@#o=*@@@@@@@@@@@@@ +@@@@@@:;@@@@@@@@@@@@@@@@@@@@#+ .:. ::=;=o%:#@@@@o:.X%: X@@@@@@* ,, -*++-. ::+-=%@@@@@@@@@@@@ +@@@@@@X%@@@@@@@@@@@@@@@@@@%@X; :+,:: X%%@@@#@@%@@*+, :@@@@@@@@@%**: -o%%= .;**-@@@@@@%X@@@ +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@x..;*@%oo::;++*%@@@@@@@@@@#X; ,o@@@@@@@@@++* :=; ;+;:+o@@@@@@@@ +@@@@@@@@@@@@@@@@@@@@%#@@@@@@@@X@@@@@@%x#@@@@@@@##@@@@@@@@;,.,. .oX;#@@@@@@@@o ,=*@o@+ ;=.+X@@@@@@@@ +@@@@@@@@@@@@@@@@@#@oX#@@@@@@@@@@@@@@@XX@@@@@@X%%%%@@@@@@@@@@@@@%. ..:o;=@%X#, .%%@@%; xXo@@@@@@@@@ +*%@@@@@@@@@@@@@@ :@@@@@@@@@@@@@@@@@#-o@@@@@@@:=@@x@@@@@@@@@@@@o:. ,, -, #x+X*X@@@o; %#@@@@@@@@@@@@ +:x%@@@@@@@@@@@@x. ;X@@@@@@@@@@@@@@@@@@@@@@@@@%%X@@@@@@@@@@@@@@@%#+ .: .X#%@@@@%%@@@#.*@@@@@@@@@@@#@@ +#@#@@@@@@@#@%*oX;.**@@@@@@@@@@@@@@@@@@@@@@@@@%:#@@@@@@@@@@@@%@@*%x ; .:;@@@@@@@@@@@@@@@@@@@@@@@@@@ +@@@@@@@%@%%@%X#@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@Xo@@@@o*@@@@@@@o +@o#* .*@@@@@@@@@@@@@@#+%@@@@@@@ +@@@@@@@@@@@%xx@@@@@@@@@@@@@@@@@@@@@@@@@@ox@@%%@@@@@o,.;x#@@@@o x@@@@@@;:.-;,,,;,+-o+-x%@@@@@@@%@@@@@@@@@ +#@@@@@@@@@%#x+*::X@X#@@@@@@@@@@@@@%#@@@%; ;xx%@@@@@X ,#%+o,,:@#%@@@@x@%*= ;@@@@@@@#XX#%@@@@@@@ +-;:--@@@#x@X::-;;Xo;=%@@@@@@@@@@@@@@#= ,@%:;- ,:=#+ :, :@@@@@@@@@* =X@@@@@@* +#Xo@%X*: +++=--=*%@@@*-;=*;;::x@@@@@@@@@@@@@@x. -X=,::;:-o@@%@#;,x@@@@@@@@+. -=X+@@@@%X@* ,==+::- +@oo, ,@@@@@@@x,-=; ;*%@@@@@@@@@@@@@@o#o X@%@@X=:, :%@@@@@X##@@@@@@@@%X= ;: .*@@@@@@xx. ;=- . +x@@@+;*@@@@@@#x%@@@@@@%@@@@@@%X@@@@@@%=;,:;;:::+%@@@@@@# -@@@@@*X%@@%@%@@%#;=#*,,- x%@@@@@@@@XX ,+-. +@@@@@@@@@@@@@@@@@@@@@@@@@@%X x%@@%%@o.,;-:,%xx@@@@@@%#o:.xX%@#%oXx+@%*x*##=x#@@@@: +@o@@@@@@@@= ;=- +@@@@@@@@@@@@@@@@@@@@@@@@@@@@+ .:,;*.-+--::,X@@@@@@@@@@%X*,o* *x, . .:*@@@@* .,o+=*X%;-; .+: +++@@@@@@@@@@@@@@@@@@@@@@@@@*. *oox :-;,::=*@@@@@@@@@@#*x#@@@@=:%o+; ,X#o=- ,+ +%=..@X#@%@@@@@@@*o%o@@@@%-+: =#@@@%Xx:=@@X@@@@@@@@@@@+:@@@@@@+#%@%, ,:%#@%+-@X;. :x=. . +X, -%@@@@@@@@;. ,:-,+- , o@@@@%x==%@@@@@@@@@@@@@@@%@@@@@@@X:=. -*@@@@@@%@@@#+ .*: + .Xo+#*%@@@@@=: =o+@X., ,@@%@%@@X%@@@@@@@@@@@@@@@@@@@@@@@%; .=#@@@@@@@@@@%; ,, + :X@@@@*. ,o%@@@@%. ,x@@@%+ -@@@@@@@@@@#@%;@@@@@@@@@+ o#o@@@@@@@@@@= -%x +* + ;; .@@@@@@@@=x@%@@@@%@x XX;#@o,#@%%@@@@@@%*#o*%%@@%@#=#o ;o@@@@@@@@@@@X=- . ;*@@ + **. ,::@@@@@@@@@XX%X+:o=+-o#%@@@@@@@@%#@@@@@x+*x#@o+*,::, =o#@@@@@@@@@x=+ ;o@@ + x@@@%@@@@@o*@@#%@X%@X@@@@@@@@@x,=@@@@@@@%@%@@%= ,;;=X%@@@@@@@@@@@%:@xx* +%- ,o= + :- ,X@@@@@%@@@@@@@@@@@@@@o,+@@@@@@%@@x@@@@@@%@%%@= ;#@@@@@@@@@@@@X%%@@* ::. + :; :x*X@@@@@@@@@@@@@@@@-*X=*@x*-x%@@@@@@%@%@@@%@X= +@@@@@@@@@@@@X- #*-- .;. + .x%@@@@@@@@@@@@@%;. +@@@@@:oX@@@@@@@@@@@@@@#= -@o#@#@#+X@@@@@@%=;@x-@Xo- **. *@@ + ,#@@%o.-%@@@* . +@%@%o-#@@@@@@@@@@@@@@@@=,,#@@@@@%@x;x@@@@#==@@@@@@@@;..;=+@@x%%;o%% + .=;*+ .*=+= x@%@@@@@@@@@%@@@@@@@@%%+ +@@@@@@@;:@@@@@X@X@@x@o;=. x@@@@@@=,++* + :%@@@@@@@@@@@@@@@@@@@@@;** o%+@@@@@@@@@@@@@@@@%X= ,,,;#@@@@x@X + ,+o@@@@@@X%@@@@@%@@@@X;#@@@@@@@@x%@@@@@@@@@@@@@@%;#+.. ,;*%@@X, o + ,#@@@@@@@@==%@@@@@@@@::ox@X@@@@@*-#@@@@@@@@@@@@@@%@@@o ,;@@@@@- ;x + ,#@@@@=@@@@%- .x@@%@%o ;#%X@@@@@@@@@@@@#xX;X@%@@%@%%@, :%@@@@#- -* + ##+X:=@X@+ :..+- .. ,=@@@@@@@@@@@@@@@*@@%@x%@; x@X%@- -. + .. . ;X@@@@@@@@@@@@@@@@@@##%@@@%%- ,; :--%= + ., .:X@@@@@@@@@@@@@@%@%@xx#@@%@x: ++. + -@%. ,: o@@@@@@@@@@@@@@@%x--x; .-,:x= . + , ;##: X@@@#x@@@@@@@@@@#*; :%x, diff --git a/inc/footer.php b/inc/footer.php index 7b4742a..f50716b 100644 --- a/inc/footer.php +++ b/inc/footer.php @@ -10,7 +10,8 @@ $build = preg_match('/[0-9a-f]{7,40}/i', $build, $m) ? $m[0] : ($build ?: 'dev') © · build: - - + + +