Last active
December 11, 2015 20:49
-
-
Save FiXato/4658366 to your computer and use it in GitHub Desktop.
A bit of an updated version of my ansinator script. Should toss it in a proper repo.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/usr/bin/env ruby | |
# encoding: utf-8 | |
# Based on the 'colors' zsh script I found online somewhere years ago. | |
# It looks like it is based on works posted at http://crunchbanglinux.org/forums/topic/13645/ansi-colorschemes-scripts/page/2/ | |
# I've basically just edited it a bit to work with IRC control codes as well. | |
# ~~Filip H.F. "FiXato" Slagter, 2012 | |
abort("You need at least Ruby 1.9 to run this script due to encoding issues") if RUBY_VERSION < '1.9' | |
class String | |
def center(str_length) | |
delta = str_length - self.length | |
return self unless delta > 0 | |
half=(delta/2) | |
remainder = (delta-half) | |
'%s%s%s' % [' ' * half, self, ' ' * remainder] | |
end | |
end | |
class IrcFormatter | |
COLOR_TABLE = { | |
:mirc => { | |
:white => 0, | |
:black => 1, | |
:blue => 2, :navy => 2, | |
:green => 3, | |
:red => 4, | |
:brown => 5, :maroon => 5, | |
:purple => 6, | |
:orange => 7, :olive => 7, | |
:yellow => 8, | |
:lightgreen => 9, :lime => 9, | |
:teal => 10, :darkcyan => 10, | |
:cyan => 11, :aqua => 11, | |
:lightblue => 12, :royal => 12, | |
:pink => 13, :lightpurple => 13, | |
:grey => 14, :gray => 14, | |
:lightgrey => 15, :silver => 15, | |
:transparent => 99, | |
}, | |
} | |
COLOR_ESCAPE_CODE = "\003" | |
BOLD_ESCAPE_CODE = "\002" | |
ITALIC_ESCAPE_CODE = "\035" | |
UNDERLINE_ESCAPE_CODE = "\037" | |
REVERSE_ESCAPE_CODE = "\0026" | |
RESET_ESCAPE_CODE = "\017" | |
attr_accessor :type | |
def initialize(type=:mirc) | |
@type = type | |
end | |
#Convert colour name to appropriate colour code | |
def c(name) | |
return name unless name.kind_of?(Symbol) | |
COLOR_TABLE[type][name] | |
end | |
def color(fg,bg=nil) | |
arr = [COLOR_ESCAPE_CODE] | |
arr << c(fg) if fg | |
arr << ',' if bg | |
arr << c(bg) if bg | |
arr.join('') | |
end | |
def default | |
color(:white,:black) | |
end | |
def fg(colour_name) | |
colour = color(colour_name) | |
end | |
def bg(colour_name) | |
color(nil,colour_name) | |
end | |
def b(text=nil) | |
format(BOLD_ESCAPE_CODE, text) | |
end | |
def i(text=nil) | |
format(ITALIC_ESCAPE_CODE, text) | |
end | |
def u(text=nil) | |
format(UNDERLINE_ESCAPE_CODE, text) | |
end | |
def r(text=nil) | |
format(REVERSE_ESCAPE_CODE, text) | |
end | |
def reset | |
RESET_ESCAPE_CODE | |
end | |
def strip_formatting(str) | |
str = str.clone | |
str.gsub!(/#{COLOR_ESCAPE_CODE}\d{0,2}(,\d{1,2})?/,'') | |
str.gsub!(BOLD_ESCAPE_CODE,'') | |
str.gsub!(ITALIC_ESCAPE_CODE,'') | |
str.gsub!(UNDERLINE_ESCAPE_CODE,'') | |
str.gsub!(REVERSE_ESCAPE_CODE,'') | |
str.gsub!(RESET_ESCAPE_CODE,'') | |
str | |
end | |
private | |
def format(format_code, text=nil) | |
str = format_code | |
str += [text, format_code] unless text.nil? | |
str | |
end | |
end | |
if ARGV == ['mirctable'] | |
f = IrcFormatter.new(:mirc) | |
str = "" | |
(0..15).map do |i| | |
str += [IrcFormatter::COLOR_ESCAPE_CODE,i,'....'].join("") | |
end | |
str += "#{f.reset}\n" | |
(0..15).map do |i| | |
str += [IrcFormatter::COLOR_ESCAPE_CODE,i,',',i,'....'].join("") | |
end | |
str += "#{f.reset}\n" | |
(0..15).map do |i| | |
str += [IrcFormatter::COLOR_ESCAPE_CODE,1,',',i,'....'].join("") | |
end | |
str += "#{f.reset}\n" | |
(0..15).map do |i| | |
str += [IrcFormatter::COLOR_ESCAPE_CODE,0,',',i,'....'].join("") | |
end | |
str += "#{f.reset}\n" | |
(0..15).map do |i| | |
str += [f.reset,IrcFormatter::COLOR_ESCAPE_CODE,nil,',',i,'....'].join("") | |
end | |
str += "#{f.reset}\n" | |
(0..15).map do |i| | |
str += ' %02i ' % i | |
end | |
puts str + f.reset | |
exit | |
end | |
class AnsiSprite | |
attr_accessor :primary_colour, :secondary_colour, :formatter, :replacement_char, :subtitle, :name, | |
:raw, :sprite, :transformations | |
def initialize(name) | |
#Defaults | |
@formatter = IrcFormatter.new(:mirc) | |
@primary_colour = :black | |
@secondary_colour = :white | |
@sprites_dir = File.join(File.dirname(File.expand_path(__FILE__)), 'ansi-shapes') | |
@subtitle = '' | |
@transformations = [] | |
@name = name | |
end | |
def load_sprite(name=nil) | |
@name = name unless name.nil? | |
filename = File.join(@sprites_dir, File.basename(@name) + '.shape') | |
raise 'Unknown Shape' unless File.exist?(filename) | |
@raw = File.readlines(filename).map{|l|l.gsub("\n",'')} | |
@sprite = @raw | |
end | |
def append_subtitle | |
delta = width - subtitle.length | |
if delta > 0 | |
@sprite << @subtitle.center(width) | |
else | |
@sprite.map! do |line| | |
line += (' '*delta.abs) | |
end | |
@sprite << @subtitle | |
end | |
end | |
def unformatted_sprite | |
@sprite.map do |line| | |
line.gsub(/\$\{(.+?)\}/, '') | |
end | |
end | |
def optimise_sprite | |
unformatted_sprite.each_with_index do |line,index| | |
# Make sure each line starts with the primary colour | |
formatted_line = '${1}%s' % @sprite[index] | |
# Pad each line so each line is of equal length | |
difference = width-line.length | |
formatted_line += (' '*difference) if difference > 0 | |
# And end each line with the reset colour | |
formatted_line += '${r}' | |
@sprite[index] = formatted_line | |
end | |
end | |
def transform | |
@transformations.each do |transformation| | |
case transformation | |
when :mirror | |
@sprite.map! do |line| | |
sections = line.split(/(\$\{\S+?\})/) | |
next line.reverse if sections.size == 1 | |
pairs = sections.each_slice(2).to_a | |
#puts "====" | |
#p pairs | |
#puts "-----" | |
i = -1 | |
pairs.reverse! | |
pairs.map do |a| | |
a[0].reverse! | |
a.reverse! | |
#p a | |
#p ['swapping',a[0],'for', pairs[i][0]] | |
a[0] = pairs[i][0] | |
i -= 1 | |
a | |
end#.rotate(1) | |
#pairs[-1].reverse! | |
#p pairs | |
#puts "====" | |
pairs.join('') | |
end | |
end | |
end | |
end | |
def formatted_sprite | |
@sprite.map do |line| | |
str = line.gsub(/\$\{(.+?)\}/) do |match| | |
style($1) | |
end | |
str.gsub!(' ',@replacement_char) if replace_spaces? | |
#[formatter.fg(@primary_colour), str, formatter.reset].join('') | |
#[str, formatter.reset].join('') | |
[formatter.default, str, formatter.reset,formatter.default].join('') | |
end | |
end | |
def width | |
unformatted_sprite.max_by{|line|line.length}.length | |
end | |
def style(format_string) | |
case format_string.to_s | |
when /#(\d+)(,(\d+))?/ | |
return formatter.color($1,$3) | |
when /([01]),([01])/ | |
fg = ($1.to_i == 0 ? @secondary_colour : @primary_colour) | |
bg = ($2.to_i == 0 ? @secondary_colour : @primary_colour) | |
return formatter.color(fg,bg) | |
when '0' | |
return formatter.fg(@secondary_colour) | |
when '1' | |
return formatter.fg(@primary_colour) | |
when 'r' | |
return formatter.reset | |
end | |
end | |
def replace_spaces? | |
!(replacement_char == '' || replacement_char.nil?) | |
end | |
def number_of_lines | |
@sprite.size | |
end | |
end | |
class AnsiScene | |
require 'yaml' | |
attr_accessor :scenes_dir | |
attr_reader :shapes | |
def initialize(*shapes) | |
@shapes = [] | |
shapes.each{|shape|add_shape(shape)} | |
@scenes_dir = File.join(File.dirname(File.expand_path(__FILE__)), 'ansi-shapes') | |
end | |
def add_shape(shape) | |
raise 'Not an AnsiSprite' unless shape.kind_of?(AnsiSprite) | |
@shapes << shape | |
end | |
def height | |
@shapes.max_by{|g|g.number_of_lines}.number_of_lines | |
end | |
def irc_lines | |
lines = Array.new(height) | |
(0...height).each do |i| | |
shapes.map{|s|[s.formatted_sprite,s]}.each do |fsprite,shape| | |
lines[i] ||= IrcFormatter.new.default | |
if fsprite[i] | |
lines[i] += fsprite[i] | |
else | |
lines[i] += ' ' * shape.width | |
end | |
lines[i] += ' ' | |
end | |
end | |
lines | |
end | |
def store(name) | |
filename = File.basename(name.to_s) | |
abort("Invalid ansinator scene name: #{name}") if filename.length < 1 | |
filename += ".scene.ansinator" | |
File.open(File.join(@scenes_dir, filename), "w") do |f| | |
f.puts @shapes.to_yaml | |
end | |
end | |
def load(name) | |
filename = File.basename(name.to_s) | |
abort("Invalid ansinator scene name: #{name}") if filename.length < 1 | |
filename += ".scene.ansinator" | |
@shapes = YAML.load_file(File.join(@scenes_dir, filename)) | |
end | |
end | |
scene = AnsiScene.new | |
if ARGV.include?('pacman') | |
s = AnsiSprite.new('pacman') | |
s.subtitle = 'Pac-Man' | |
s.replacement_char = ' ' #'.' | |
s.primary_colour = :yellow | |
s.secondary_colour = :white | |
s.load_sprite | |
s.optimise_sprite | |
s.append_subtitle | |
scene.add_shape(s) | |
[[:red, 'Blinky'], [:pink, 'Pinky'], [:cyan, 'Inky'], [:orange, 'Clyde']].each do |color, name| | |
s = AnsiSprite.new('ghost') | |
s.subtitle = name | |
s.replacement_char = ' ' #'.' | |
s.primary_colour = color | |
s.secondary_colour = :white | |
# s.transformations << :mirror | |
s.load_sprite | |
s.optimise_sprite | |
# s.transform | |
s.append_subtitle | |
scene.add_shape(s) | |
end | |
end | |
if ARGV.include?('space') | |
i = 0 | |
[[ :green, 'greeny'], [ :blue, 'bluey'], [ :red, 'Blinky'], [ :pink, 'Pinky'], [ :cyan, 'Inky'], [ :orange, 'Clyde'], [ :lightgreen, 'limey'], [ :lightblue, 'cloudy']].each do |color, name| | |
s = AnsiSprite.new('spaceinvader%i' % (i%2 + 1)) | |
i+=1 | |
s.subtitle = name | |
s.replacement_char = ' ' #'.' | |
s.primary_colour = color | |
s.secondary_colour = :white | |
# s.transformations << :mirror | |
s.load_sprite | |
s.optimise_sprite | |
# s.transform | |
# s.append_subtitle | |
scene.add_shape(s) | |
end | |
end | |
if ARGV.include?('kirby') | |
[[ :green, 'greeny']].each do |color, name| | |
s = AnsiSprite.new('kirby') | |
s.subtitle = name | |
s.replacement_char = ' ' #'.' | |
s.primary_colour = color | |
s.secondary_colour = :white | |
# s.transformations << :mirror | |
s.load_sprite | |
s.optimise_sprite | |
# s.transform | |
# s.append_subtitle | |
scene.add_shape(s) | |
end | |
end | |
if ARGV.include?('owl') | |
[[ :green, 'greeny']].each do |color, name| | |
s = AnsiSprite.new('owl') | |
s.subtitle = name | |
s.replacement_char = ' ' #'.' | |
s.primary_colour = color | |
s.secondary_colour = :white | |
# s.transformations << :mirror | |
s.load_sprite | |
s.optimise_sprite | |
# s.transform | |
# s.append_subtitle | |
scene.add_shape(s) | |
end | |
end | |
if ARGV.include?('russia') | |
[[ :green, 'greeny']].each do |color, name| | |
s = AnsiSprite.new('russia') | |
s.subtitle = name | |
s.replacement_char = ' ' #'.' | |
s.primary_colour = color | |
s.secondary_colour = :white | |
# s.transformations << :mirror | |
s.load_sprite | |
s.optimise_sprite | |
# s.transform | |
# s.append_subtitle | |
scene.add_shape(s) | |
end | |
end | |
if ARGV.include?('dkjr') | |
[[ :brown, 'greeny']].each do |color, name| | |
s = AnsiSprite.new('dkjr') | |
s.subtitle = name | |
s.replacement_char = ' ' #'.' | |
s.primary_colour = color | |
s.secondary_colour = :white | |
# s.transformations << :mirror | |
s.load_sprite | |
s.optimise_sprite | |
# s.transform | |
# s.append_subtitle | |
scene.add_shape(s) | |
end | |
end | |
if ARGV.include?('smiley') | |
[[ :brown, 'greeny']].each do |color, name| | |
s = AnsiSprite.new('smiley') | |
s.subtitle = name | |
s.replacement_char = ' ' #'.' | |
s.primary_colour = color | |
s.secondary_colour = :white | |
# s.transformations << :mirror | |
s.load_sprite | |
s.optimise_sprite | |
# s.transform | |
# s.append_subtitle | |
scene.add_shape(s) | |
end | |
end | |
if ARGV.include?('mario') | |
[[ :brown, 'Mario']].each do |color, name| | |
s = AnsiSprite.new('mario') | |
s.subtitle = name | |
s.replacement_char = ' ' #'.' | |
s.primary_colour = color | |
s.secondary_colour = :white | |
# s.transformations << :mirror | |
s.load_sprite | |
s.optimise_sprite | |
# s.transform | |
s.append_subtitle | |
scene.add_shape(s) | |
end | |
end | |
#s = AnsiSprite.new('pacman') | |
#s.subtitle = 'Pac-Man' | |
#s.replacement_char = ' ' #'.' | |
#s.primary_colour = :yellow | |
#s.secondary_colour = :white | |
#s.transformations << :mirror | |
#s.load_sprite | |
#s.optimise_sprite | |
#s.transform | |
#s.append_subtitle | |
#scene.add_shape(s) | |
#s = AnsiSprite.new('ghost') | |
#s.subtitle = 'Ghost' | |
#s.replacement_char = ' ' #'.' | |
#s.primary_colour = :cyan | |
#s.secondary_colour = :white | |
#s.load_sprite | |
#s.optimise_sprite | |
#s.transform | |
#s.append_subtitle | |
#scene.add_shape(s) | |
#s = AnsiSprite.new('ghost') | |
#s.subtitle = 'Reversie' | |
#s.replacement_char = ' ' #'.' | |
#s.primary_colour = :blue | |
#s.secondary_colour = :white | |
#s.transformations << :mirror | |
#s.load_sprite | |
#s.optimise_sprite | |
#s.transform | |
#s.append_subtitle | |
#scene.add_shape(s) | |
#scene.store("pacman_chasing_and_ghosts") | |
#scene.load("pacman_chasing_and_ghosts") | |
puts scene.irc_lines |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
${#1,1}██${#12,12}█${#1,1}███████████████████████${#12,12}█${#1,1}███ | |
${#1,1}█${#12,12}█${#1,1}█${#12,12}█${#1,1}█████████████████████${#12,12}█${#1,1}█${#12,12}█${#1,1}██ | |
${#7,7}███${#12,12}█${#7,7}█${#1,1}██████████${#0,0}█${#7,7}█${#5,5}███${#1,1}█████${#12,12}█${#1,1}█${#12,12}█${#1,1}██ | |
${#7,7}██${#12,12}█${#1,1}█${#7,7}█${#5,5}█${#1,1}████████${#0,0}█${#1,1}█${#7,7}███${#5,5}██${#1,1}█████${#12,12}█${#1,1}███ | |
${#7,7}███${#1,1}█${#5,5}███${#1,1}████${#7,7}██${#5,5}██${#0,0}█${#1,1}█${#0,0}█${#7,7}██${#5,5}█${#1,1}█████${#12,12}█${#1,1}███ | |
${#1,1}█${#7,7}█${#1,1}█${#12,12}█${#5,5}█████${#1,1}█${#7,7}██████${#0,0}██${#7,7}█${#5,5}█${#7,7}█${#1,1}████${#12,12}█${#1,1}█${#7,7}███ | |
${#1,1}█${#12,12}█${#1,1}█${#12,12}█${#5,5}██████${#7,7}█${#5,5}█${#7,7}█████████${#0,0}█${#1,1}███${#7,7}█${#1,1}█${#12,12}█${#7,7}██ | |
${#1,1}██${#12,12}█${#1,1}██${#5,5}█████${#0,0}█${#7,7}█${#5,5}████${#7,7}████${#0,0}█${#5,5}██${#1,1}█${#5,5}█${#7,7}█${#12,12}█${#7,7}███ | |
${#1,1}██${#12,12}█${#1,1}███${#5,5}███${#0,0}██${#7,7}██${#5,5}████${#7,7}███${#0,0}█${#5,5}█████${#12,12}█${#1,1}█${#7,7}█${#1,1}█ | |
${#1,1}█${#12,12}█${#1,1}█${#12,12}█${#1,1}███${#5,5}██${#0,0}██${#5,5}█${#7,7}██${#5,5}██${#7,7}███${#0,0}█${#5,5}██████${#1,1}█${#12,12}█${#1,1}██ | |
${#1,1}█${#12,12}█${#1,1}█${#12,12}█${#1,1}████${#5,5}█${#0,0}███${#5,5}█${#7,7}█████${#0,0}█${#5,5}███████${#1,1}█${#12,12}█${#1,1}██ | |
${#1,1}██${#12,12}█${#1,1}██████${#0,0}████${#5,5}███${#0,0}██${#5,5}███████${#1,1}█${#12,12}█${#1,1}███ | |
${#1,1}██${#12,12}█${#1,1}█████${#5,5}██${#0,0}██${#5,5}█${#0,0}██████${#5,5}█${#0,0}█${#1,1}█████${#12,12}█${#1,1}███ | |
${#1,1}█${#12,12}█${#1,1}█${#12,12}█${#1,1}██${#7,7}█${#5,5}███${#0,0}███${#5,5}██${#0,0}█████${#5,5}███${#1,1}██${#5,5}██${#12,12}█${#1,1}██ | |
${#1,1}█${#12,12}█${#1,1}█${#12,12}█${#1,1}█${#7,7}█${#5,5}█████${#0,0}██${#5,5}█${#0,0}████${#5,5}███████${#7,7}██${#12,12}█${#1,1}██ | |
${#1,1}██${#12,12}█${#1,1}██${#7,7}█${#5,5}██████${#0,0}█████${#5,5}██████${#7,7}████${#1,1}███ | |
${#1,1}██${#12,12}█${#1,1}██${#7,7}██${#5,5}███${#1,1}███████████${#5,5}█${#7,7}██${#1,1}██${#12,12}█${#1,1}███ | |
${#1,1}█${#12,12}█${#1,1}█${#12,12}█${#1,1}██${#7,7}███${#1,1}████████████████${#12,12}█${#1,1}█${#12,12}█${#1,1}██ | |
${#1,1}█${#12,12}█${#1,1}█${#12,12}█${#1,1}█████████████████████${#12,12}█${#1,1}█${#12,12}█${#1,1}██ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
▄██████▄ | |
▄${0}█▀█${1}██${0}█▀█${1}██▄ | |
█${0}▄▄█${1}██${0}▄▄█${1}███ | |
████████████ | |
██▀██▀▀██▀██ | |
▀ ▀ ▀ ▀ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
${#0,0}████${#1,1}██████${#0,0}██${#1,1}████████████ | |
${#0,0}██${#1,1}██${#13,13}██████${#1,1}██${#13,13}████████████${#1,1}████ | |
${#1,1}██${#13,13}██████${#1,1}██${#13,13}██████████████████${#1,1}██ | |
${#1,1}██${#13,13}████████████${#1,1}██${#13,13}██${#1,1}██${#13,13}██████████${#1,1}██ | |
${#1,1}██${#13,13}████████████${#1,1}██${#13,13}██${#1,1}██${#13,13}████████████${#1,1}██ | |
${#1,1}██${#13,13}████████████${#1,1}██${#13,13}██${#1,1}██${#13,13}████████████${#1,1}██ | |
${#0,0}██${#1,1}██${#13,13}████${#4,4}████${#13,13}██${#1,1}██${#13,13}██${#1,1}██${#13,13}██${#4,4}████${#13,13}████████${#1,1}██ | |
${#1,1}██${#13,13}██████${#4,4}████${#13,13}██████████${#4,4}████${#13,13}██████████${#1,1}██ | |
${#1,1}██${#13,13}██████████${#13,13}████${#1,1}██${#13,13}████████████████████${#1,1}██ | |
${#1,1}██${#13,13}██████████${#13,13}████${#1,1}██${#13,13}████████████████████${#1,1}██ | |
${#1,1}██${#13,13}██████████${#13,13}████${#1,1}██${#13,13}████████████████████${#1,1}██ | |
${#0,0}██${#1,1}██${#13,13}██████████████████████${#1,1}████${#13,13}██████${#1,1}██ | |
${#0,0}██${#1,1}██${#13,13}████████████████████${#1,1}██${#4,4}████${#1,1}██████ | |
${#0,0}████${#1,1}██${#13,13}████████████████${#1,1}██${#4,4}████████${#1,1}██ | |
${#0,0}██${#1,1}██${#4,4}████████${#13,13}████████${#1,1}██${#4,4}██████████${#1,1}██ | |
${#1,1}██${#4,4}████████████${#1,1}██████${#4,4}██████████${#1,1}██ | |
${#1,1}██${#4,4}████████████${#1,1}██${#0,0}████${#1,1}██${#4,4}██████${#1,1}██ | |
${#1,1}██████████████${#0,0}████████${#1,1}██████ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
${#1,1}██████${#05}█████${#1,1}██${#07}███${#1,1}██${r} | |
${#1,1}█████${#05}█████████${#07}██${#1,1}██${r} | |
${#1,1}█████${#03}███${#07}██${#01}█${#07}█${#01}█${#05}███${#1,1}██${r} | |
${#1,1}████${#03}█${#07}█${#03}█${#07}███${#01}█${#07}███${#05}██${#1,1}██${r} | |
${#1,1}████${#03}█${#07}█${#03}██${#07}███${#01}█${#07}███${#05}█${#1,1}██${r} | |
${#1,1}████${#03}██${#07}████${#01}████${#05}█${#1,1}███${r} | |
${#1,1}██████${#07}███████${#05}██${#1,1}███${r} | |
${#1,1}███${#05}████${#12}█${#05}███${#12}█${#05}██${#1,1}██${#05}█${#1,1}█${r} | |
${#1,1}█${#07}██${#05}█████${#12}█${#05}███${#12}█${#1,1}██${#05}██${#1,1}█${r} | |
${#1,1}█${#07}███${#05}████${#12}████${#08}█${#12}██${#05}██${#1,1}█${r} | |
${#1,1}██${#07}█${#1,1}██${#12}█${#05}█${#12}██${#08}█${#12}█████${#05}██${#1,1}█${r} | |
${#1,1}██${#05}███${#12}█████████${#05}██${#1,1}██${r} | |
${#1,1}██${#05}███${#12}██████${#1,1}███████${r} | |
${#1,1}██${#05}██${#1,1}██████████████${r} | |
${#1,1}██████████████████${r} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
${#1,1}████████████████${#14,14}██${#15,15}██████${#14,14}██${#1,1}██████████████████${r} | |
${#1,1}██████████${#14,14}██${#15,15}██████${#0,0}████████${#15,15}██${#14,14}██${#1,1}██████████████${r} | |
${#1,1}████████${#14,14}██${#15,15}████${#0,0}████████████████${#15,15}████${#1,1}██████████${r} | |
${#1,1}██████${#14,14}██${#15,15}██${#0,0}██████████████████${#15,15}██${#8,8}██${#15,15}████${#1,1}████████${r} | |
${#1,1}████${#15,15}██${#0,0}██████${#8,8}████${#15,15}██${#0,0}██████████${#14,14}██${#1,1}██${#8,8}██${#0,0}██${#14,14}██${#1,1}██████${r} | |
${#1,1}██${#14,14}██${#15,15}██${#0,0}████${#8,8}██${#1,1}████${#8,8}██${#15,15}██${#0,0}████████${#15,15}██${#14,14}██${#8,8}██${#0,0}██${#15,15}██${#1,1}██████${r} | |
${#1,1}██${#15,15}██${#0,0}██████${#8,8}██${#1,1}████${#8,8}██${#0,0}████████${#15,15}██${#0,0}██${#15,15}████${#0,0}████${#14,14}██${#1,1}████${r} | |
${#1,1}██${#15,15}██${#0,0}████████${#8,8}████${#0,0}██████████${#14,14}██${#15,15}██${#0,0}████████${#15,15}██${#1,1}████${r} | |
${#14,14}██${#15,15}██${#0,0}██████████████████████${#5,5}██${#14,14}██${#0,0}████████${#15,15}██${#1,1}████${r} | |
${#14,14}██${#15,15}██${#0,0}████████████████████${#14,14}██${#5,5}██${#14,14}██${#15,15}██${#0,0}████████${#14,14}██${#1,1}██${r} | |
${#15,15}████${#0,0}████████████${#15,15}██${#14,14}██████${#5,5}████${#7,7}██${#0,0}██████████${#14,14}██${#1,1}██${r} | |
${#15,15}██${#0,0}████████████████${#15,15}██${#7,7}██${#5,5}██${#4,4}██${#5,5}██${#14,14}██${#0,0}██████████${#15,15}██${#1,1}██${r} | |
${#15,15}██${#0,0}████████████████████${#14,14}██${#1,1}██${#7,7}██${#15,15}██${#0,0}██████████${#15,15}██${#1,1}██${r} | |
${#14,14}██${#15,15}██${#0,0}████████████████████${#15,15}██${#14,14}██${#15,15}██${#0,0}██████████${#15,15}██${#1,1}██${r} | |
${#14,14}██${#15,15}██${#0,0}██████████████████████████████████████${#14,14}██${r} | |
${#14,14}██${#15,15}██${#0,0}██████████████████████████████████████${#15,15}█${r} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
▄███████▄ | |
▄█████████▀▀ | |
███████▀ | |
███████▄ | |
▀█████████▄▄ | |
▀███████▀ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
${#5}LOУAL TO MOTHEЯ ЯUSSIA | |
${#4,4}☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭ | |
${#4,4}☭☭☭☭☭☭${#8,8}☭☭☭☭${#4,4}☭☭☭☭${#8,8}☭☭${#4,4}☭☭☭☭☭☭☭☭ | |
${#4,4}☭☭☭☭${#8,8}☭☭☭☭${#4,4}☭☭☭☭☭☭☭☭${#8,8}☭☭${#4,4}☭☭☭☭☭☭ | |
${#4,4}☭☭☭☭${#8,8}☭☭${#4,4}☭☭${#8,8}☭☭${#4,4}☭☭☭☭☭☭☭☭${#8,8}☭☭${#4,4}☭☭☭☭ | |
${#4,4}☭☭☭☭☭☭☭☭☭☭${#8,8}☭☭${#4,4}☭☭☭☭☭☭${#8,8}☭☭${#4,4}☭☭☭☭ | |
${#4,4}☭☭☭☭☭☭☭☭☭☭☭☭${#8,8}☭☭${#4,4}☭☭☭☭${#8,8}☭☭${#4,4}☭☭☭☭ | |
${#4,4}☭☭☭☭☭☭${#8,8}☭☭${#4,4}☭☭☭☭☭☭${#8,8}☭☭${#4,4}☭☭${#8,8}☭☭${#4,4}☭☭☭☭ | |
${#4,4}☭☭☭☭${#8,8}☭☭${#4,4}☭☭${#8,8}☭☭${#4,4}☭☭☭☭☭☭${#8,8}☭☭${#4,4}☭☭☭☭☭☭ | |
${#4,4}☭☭${#8,8}☭☭${#4,4}☭☭☭☭☭☭${#8,8}☭☭☭☭☭☭${#4,4}☭☭${#8,8}☭☭${#4,4}☭☭☭☭ | |
${#4,4}☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭${#8,8}☭☭${#4,4}☭☭ | |
${#4,4}☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭☭ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
${#11,11}█████████████${#1,1}████████████████████${#11,11}██████████████ | |
${#12,12}██████████${#1,1}███${#8,8}████████████████████${#1,1}████${#12,12}██████████ | |
${#11,11}████████${#1,1}██${#8,8}███████████████████████████${#1,1}██${#11,11}████████ | |
${#12,12}███████${#1,1}█${#8,8}███████████████████████████████${#1,1}█${#12,12}███████ | |
${#11,11}██████${#1,1}█${#8,8}██${#1,1}████████${#8,8}█████████${#1,1}████████${#8,8}██████${#1,1}█${#11,11}██████ | |
${#12,12}██████${#1,1}█${#8,8}█${#1,1}█${#0,0}█████${#1,1}████${#8,8}███████${#1,1}█${#0,0}█████${#1,1}████${#8,8}█████${#1,1}█${#12,12}██████ | |
${#11,11}█████${#1,1}█${#8,8}██${#1,1}█${#0,0}█████${#1,1}█████${#8,8}█████${#1,1}█${#0,0}██████${#1,1}█████${#8,8}█████${#1,1}█${#11,11}█████ | |
${#12,12}█████${#1,1}█${#8,8}██${#1,1}█${#0,0}█████████${#1,1}█${#8,8}█████${#1,1}█${#0,0}██████████${#1,1}█${#8,8}█████${#1,1}█${#12,12}█████ | |
${#11,11}████${#1,1}█${#8,8}████${#1,1}█████████${#8,8}███████${#1,1}██████████${#8,8}███████${#1,1}█${#11,11}████ | |
${#12,12}████${#1,1}█${#8,8}█████████████████████████████████████${#1,1}█${#12,12}████ | |
${#11,11}████${#1,1}█${#8,8}██${#1,1}█████████████████████████████${#8,8}██████${#1,1}█${#11,11}████ | |
${#12,12}████${#1,1}█${#8,8}████${#1,1}██${#6,6}████████:D█=)█face██████${#1,1}██${#8,8}█████${#1,1}█${#12,12}████ | |
${#11,11}█████${#1,1}█${#8,8}███${#1,1}██${#6,6}████████████████████████${#1,1}██${#8,8}████${#1,1}█${#11,11}█████ | |
${#12,12}█████${#1,1}█${#8,8}███${#1,1}██${#6,6}████████████${#13,13}██████${#6,6}██████${#1,1}██${#8,8}████${#1,1}█${#12,12}█████ | |
${#11,11}██████${#1,1}█${#8,8}███${#1,1}██${#6,6}█████████${#13,13}██████████${#6,6}███${#1,1}██${#8,8}████${#1,1}█${#11,11}██████ | |
${#12,12}██████${#1,1}█${#8,8}████${#1,1}██${#6,6}██████${#13,13}█████████████${#6,6}██${#1,1}██${#8,8}████${#1,1}█${#12,12}██████ | |
${#11,11}███████${#1,1}█${#8,8}████${#1,1}███${#6,6}███${#13,13}█████████████${#1,1}████${#8,8}████${#1,1}█${#11,11}███████ | |
${#12,12}████████${#1,1}██${#8,8}████${#1,1}██████████████████${#8,8}█████${#1,1}██${#12,12}████████ | |
${#11,11}██████████${#1,1}███${#8,8}████████████████████${#1,1}████${#11,11}██████████ | |
${#12,12}█████████████${#1,1}████████████████████${#12,12}██████████████ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
▀▄ ▄▀ | |
▄█▀███▀█▄ | |
█▀███████▀█ | |
▀ ▀▄▄ ▄▄▀ ▀ |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
▄▄▄ | |
▄█▀███▀█▄ | |
▀█████████▀ | |
▄▄▀▄▀▄▀▄▄ |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment