diff --git a/Editor/editor.py b/Editor/editor.py index d67d0c0..f0089c8 100644 --- a/Editor/editor.py +++ b/Editor/editor.py @@ -38,7 +38,7 @@ class Editor: self.geometrystring = '%dx%d+%d+%d' % (self.windowwidth, self.windowheight, self.windowx, self.windowy) self.t.geometry(self.geometrystring) - self.reserved_filenames = ['random', 'list'] + self.reserved_filenames = ['random', 'list', 'help'] self.has_filenames_changed = True self.entities = [] self.filename = None diff --git a/Editor/textfiles.db b/Editor/textfiles.db index 077ec73..98bdf12 100644 Binary files a/Editor/textfiles.db and b/Editor/textfiles.db differ diff --git a/Logogame/logos.db b/Logogame/logos.db index 54121e3..8e10e2e 100644 Binary files a/Logogame/logos.db and b/Logogame/logos.db differ diff --git a/Logogame/logos.py b/Logogame/logos.py index dc75c34..b28b669 100644 --- a/Logogame/logos.py +++ b/Logogame/logos.py @@ -63,11 +63,11 @@ class LogoGame: self.geometrystring = '%dx%d+%d+%d' % (self.windowwidth, self.windowheight, self.windowx, self.windowy) self.t.geometry(self.geometrystring) - self.uirefresher = self.gui_build_main - self.gui_build_main() #self.t.bind('', self.update_wh) + def start(self): + self.gui_build_main() self.t.mainloop() def logos_load(self): @@ -259,6 +259,8 @@ class LogoGame: ### def playername_set(self, newname): + if newname == '': + return if newname != self.stats_main.playername: self.cur.execute('UPDATE stats SET value=? WHERE key="playername"', [newname]) self.sql.commit() @@ -270,6 +272,7 @@ class LogoGame: for logo in self.all_logos: logo.solved = self.playerstats_hassolved(logo.id) print('Name: ' + self.stats_main.playername) + self.clean_empty_dbs() def sha8(self, text): sha = hashlib.sha256() @@ -356,4 +359,23 @@ class LogoGame: alltags.sort() return alltags -logogame = LogoGame() \ No newline at end of file + def clean_empty_dbs(self): + ls = os.listdir('playerdata') + todelete = [] + for name in ls: + name = 'playerdata/'+name + s = sqlite3.connect(name) + c = s.cursor() + c.execute('SELECT * FROM stats') + if not c.fetchone(): + del c + del s + try: + os.remove(name) + except PermissionError: + pass + + +if __name__ == '__main__': + logogame = LogoGame() + logogame.start() \ No newline at end of file diff --git a/RCONRelay/rconrelay.py b/RCONRelay/rconrelay.py index ccb54bc..7a7ed38 100644 --- a/RCONRelay/rconrelay.py +++ b/RCONRelay/rconrelay.py @@ -2,25 +2,47 @@ import socket import time import traceback +class LogEvent: + def __init__(self): + self.type = None + self.killerinfo = None + self.victiminfo = None + self.weaponinfo = None + +class Player: + def __init__(self, name=""): + self.name = name + self.kills = 0 + self.deaths = 0 + self.objectives = 0 + self.events = [] + self.status = None + + def __str__(self): + return "%s :|: %d kills, %d deaths, %d objectives :|: Status=%s" % (self.name, self.kills, self.deaths, self.objectives, self.status) class RCONRelay: def __init__(self): - self.whitelist = ["joined team", "say", "killed", "suicide", "changed name"] + self.whitelist = ["joined team", "disconnected", "say", "killed", "suicide", "changed name", "flagevent", "flag."] self.blacklist = ["say_team"] self.weaponmap = { "tf_projectile_rocket": "Rocket Launcher", "tf_projectile_pipe_remote": "Sticky Bomb", + "tf_projectile_pipe": "Grenade Launcher", "obj_sentrygun": "Sentry lvl 1", "obj_sentrygun2": "Sentry lvl 2", "obj_sentrygun3": "Sentry lvl 3", "shotgun_pyro": "Shotgun", "shotgun_soldier": "Shotgun", "shotgun_primary": "Shotgun", - "club": "Kukri" + "club": "Kukri", + "pistol_scout": "Pistol", + "world": "World Hazard" } self.ip = "0.0.0.0" self.port = 32768 + self.players = [] def start(self): self.rcon = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) @@ -31,15 +53,15 @@ class RCONRelay: while True: chatdata = self.rcon.recvfrom(1024) #print(chatdata) - self.processchat(chatdata) + chatdata = chatdata[0] + chatdata = chatdata.decode('utf-8', 'ignore') + chatdata = chatdata[3:-2] + self.parsechat(chatdata) - def processchat(self, chatdata): - chat = chatdata[0] - chat = chat.decode("utf-8", "ignore") - chat = chat[3:-2] - timestamp = chat[:21] + def parsechat(self, chat): + timestamp = chat.split(': ')[0] + quotesplit = chat.split('"') if "killed" in chat: - quotesplit = chat.split('"') killerinfo = quotesplit[1] victiminfo = quotesplit[3] weaponinfo = quotesplit[5] @@ -50,21 +72,24 @@ class RCONRelay: if headshot: chat += " (Headshot)" + elif "flagevent" in chat: + killerinfo = quotesplit[1] + flagevent = quotesplit[5] + if flagevent == 'captured': + capscurrent = quotesplit[7] + capstotal = quotesplit[9] + chat = "%s] %s %s flag. %s / %s" % (timestamp, killerinfo, flagevent, capscurrent, capstotal) + else: + chat = "%s] %s %s flag." % (timestamp, killerinfo, flagevent) + elif "committed suicide with \"world\" (attacker_position" in chat: - quotesplit = chat.split('"') victiminfo = quotesplit[1] chat = "%s] %s committed suicide" % (timestamp, victiminfo) if any(white.lower() in chat.lower() for white in self.whitelist): - if not any(ban.lower() in chat.lower() for ban in self.blacklist): + if not any(black.lower() in chat.lower() for black in self.blacklist): print(chat) - def weaponmapping(self, chat): - for key in self.weaponmap: - val = self.weaponmap[key] - chat = chat.replace(key, val) - return chat - - -rcon = RCONRelay() -rcon.start() \ No newline at end of file +if __name__ == '__main__': + rcon = RCONRelay() + rcon.start() \ No newline at end of file diff --git a/ascii/examples/dosh_render.ps b/ascii/examples/dosh_render.ps new file mode 100644 index 0000000..3b6e293 --- /dev/null +++ b/ascii/examples/dosh_render.ps @@ -0,0 +1,215 @@ +%!PS-Adobe-3.0 EPSF-3.0 +%%Creator: Tk Canvas Widget +%%Title: Window .43294800 +%%CreationDate: Sun Mar 15 19:51:02 2015 +%%BoundingBox: -523 -369 1136 1162 +%%Pages: 1 +%%DocumentData: Clean7Bit +%%Orientation: Portrait +%%DocumentNeededResources: font Courier +%%EndComments + +%%BeginProlog +% This is a standard prolog for Postscript generated by Tk's canvas +% widget. +/CurrentEncoding [ +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/exclam/quotedbl/numbersign/dollar/percent/ampersand/quotesingle +/parenleft/parenright/asterisk/plus/comma/hyphen/period/slash +/zero/one/two/three/four/five/six/seven +/eight/nine/colon/semicolon/less/equal/greater/question +/at/A/B/C/D/E/F/G +/H/I/J/K/L/M/N/O +/P/Q/R/S/T/U/V/W +/X/Y/Z/bracketleft/backslash/bracketright/asciicircum/underscore +/grave/a/b/c/d/e/f/g +/h/i/j/k/l/m/n/o +/p/q/r/s/t/u/v/w +/x/y/z/braceleft/bar/braceright/asciitilde/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/space/space/space/space/space/space/space +/space/exclamdown/cent/sterling/currency/yen/brokenbar/section +/dieresis/copyright/ordfeminine/guillemotleft/logicalnot/hyphen/registered/macron +/degree/plusminus/twosuperior/threesuperior/acute/mu/paragraph/periodcentered +/cedilla/onesuperior/ordmasculine/guillemotright/onequarter/onehalf/threequarters/questiondown +/Agrave/Aacute/Acircumflex/Atilde/Adieresis/Aring/AE/Ccedilla +/Egrave/Eacute/Ecircumflex/Edieresis/Igrave/Iacute/Icircumflex/Idieresis +/Eth/Ntilde/Ograve/Oacute/Ocircumflex/Otilde/Odieresis/multiply +/Oslash/Ugrave/Uacute/Ucircumflex/Udieresis/Yacute/Thorn/germandbls +/agrave/aacute/acircumflex/atilde/adieresis/aring/ae/ccedilla +/egrave/eacute/ecircumflex/edieresis/igrave/iacute/icircumflex/idieresis +/eth/ntilde/ograve/oacute/ocircumflex/otilde/odieresis/divide +/oslash/ugrave/uacute/ucircumflex/udieresis/yacute/thorn/ydieresis +] def +50 dict begin +/baseline 0 def +/stipimage 0 def +/height 0 def +/justify 0 def +/lineLength 0 def +/spacing 0 def +/stipple 0 def +/strings 0 def +/xoffset 0 def +/yoffset 0 def +/tmpstip null def +/baselineSampler ( TXygqPZ) def +baselineSampler 0 196 put +/cstringshow {{ dup type /stringtype eq { show } { glyphshow } ifelse } forall } bind def +/cstringwidth {0 exch 0 exch { dup type /stringtype eq { stringwidth } { currentfont /Encoding get exch 1 exch put (\001) stringwidth } ifelse exch 3 1 roll add 3 1 roll add exch } forall } bind def +/ISOEncode {dup length dict begin {1 index /FID ne {def} {pop pop} ifelse} forall /Encoding CurrentEncoding def currentdict end /Temporary exch definefont } bind def +/StrokeClip {{strokepath} stopped { (This Postscript printer gets limitcheck overflows when) = (stippling dashed lines; lines will be printed solid instead.) = [] 0 setdash strokepath} if clip } bind def +/EvenPixels {dup 0 matrix currentmatrix dtransform dup mul exch dup mul add sqrt dup round dup 1 lt {pop 1} if exch div mul } bind def +/StippleFill {/tmpstip 1 index def 1 EvenPixels dup scale pathbbox 4 2 roll 5 index div dup 0 lt {1 sub} if cvi 5 index mul 4 1 roll 6 index div dup 0 lt {1 sub} if cvi 6 index mul 3 2 roll 6 index exch { 2 index 5 index 3 index { gsave 1 index exch translate 5 index 5 index true matrix tmpstip imagemask grestore } for pop } for pop pop pop pop pop } bind def +/AdjustColor {CL 2 lt { currentgray CL 0 eq { .5 lt {0} {1} ifelse } if setgray } if } bind def +/DrawText {/stipple exch def /justify exch def /yoffset exch def /xoffset exch def /spacing exch def /strings exch def /lineLength 0 def strings { cstringwidth pop dup lineLength gt {/lineLength exch def} {pop} ifelse newpath } forall 0 0 moveto baselineSampler false charpath pathbbox dup /baseline exch def exch pop exch sub /height exch def pop newpath translate rotate lineLength xoffset mul strings length 1 sub spacing mul height add yoffset mul translate justify lineLength mul baseline neg translate strings { dup cstringwidth pop justify neg mul 0 moveto stipple { gsave /char (X) def { dup type /stringtype eq { { char 0 3 -1 roll put currentpoint gsave char true charpath clip StippleText grestore char stringwidth translate moveto } forall } { currentfont /Encoding get exch 1 exch put currentpoint gsave (\001) true charpath clip StippleText grestore (\001) stringwidth translate moveto } ifelse } forall grestore } {cstringshow} ifelse 0 spacing neg translate } forall } bind def +/TkPhotoColor {gsave 32 dict begin /tinteger exch def /transparent 1 string def transparent 0 tinteger put /olddict exch def olddict /DataSource get dup type /filetype ne { olddict /DataSource 3 -1 roll 0 () /SubFileDecode filter put } { pop } ifelse /newdict olddict maxlength dict def olddict newdict copy pop /w newdict /Width get def /crpp newdict /Decode get length 2 idiv def /str w string def /pix w crpp mul string def /substrlen 2 w log 2 log div floor exp cvi def /substrs [ { substrlen string 0 1 substrlen 1 sub { 1 index exch tinteger put } for /substrlen substrlen 2 idiv def substrlen 0 eq {exit} if } loop ] def /h newdict /Height get def 1 w div 1 h div matrix scale olddict /ImageMatrix get exch matrix concatmatrix matrix invertmatrix concat newdict /Height 1 put newdict /DataSource pix put /mat [w 0 0 h 0 0] def newdict /ImageMatrix mat put 0 1 h 1 sub { mat 5 3 -1 roll neg put olddict /DataSource get str readstring pop pop /tail str def /x 0 def olddict /DataSource get pix readstring pop pop { tail transparent search dup /done exch not def {exch pop exch pop} if /w1 exch length def w1 0 ne { newdict /DataSource pix x crpp mul w1 crpp mul getinterval put newdict /Width w1 put mat 4 x neg put /x x w1 add def newdict image /tail tail w1 tail length w1 sub getinterval def } if done {exit} if tail substrs { anchorsearch {pop} if } forall /tail exch def tail length 0 eq {exit} if /x w tail length sub def } loop } for end grestore } bind def +/TkPhotoMono {gsave 32 dict begin /dummyInteger exch def /olddict exch def olddict /DataSource get dup type /filetype ne { olddict /DataSource 3 -1 roll 0 () /SubFileDecode filter put } { pop } ifelse /newdict olddict maxlength dict def olddict newdict copy pop /w newdict /Width get def /pix w 7 add 8 idiv string def /h newdict /Height get def 1 w div 1 h div matrix scale olddict /ImageMatrix get exch matrix concatmatrix matrix invertmatrix concat newdict /Height 1 put newdict /DataSource pix put /mat [w 0 0 h 0 0] def newdict /ImageMatrix mat put 0 1 h 1 sub { mat 5 3 -1 roll neg put 0.000 0.000 0.000 setrgbcolor olddict /DataSource get pix readstring pop pop newdict /DataSource pix put newdict imagemask 1.000 1.000 1.000 setrgbcolor olddict /DataSource get pix readstring pop pop newdict /DataSource pix put newdict imagemask } for end grestore } bind def +%%EndProlog +%%BeginSetup +/CL 2 def +%%IncludeResource: font Courier +%%EndSetup + +%%Page: 1 1 +save +306.0 396.0 translate +0.7503 0.7503 scale +-1106 -1020 translate +0 2040 moveto 2212 2040 lineto 2212 0 lineto 0 0 lineto closepath clip newpath +gsave +/Courier findfont 12 scalefont ISOEncode setfont +0.000 0.000 0.000 setrgbcolor AdjustColor +0 0 2040 [ +[( )] +[( )] +[( )] +[( )] +[( )] +[( )] +[( )] +[( )] +[( )] +[( )] +[( )] +[( )] +[( @@@ )] +[( @@g#DOe0@@ )] +[( @@&$mSnnnnnnm@@ )] +[( @@@B8HennnnnnnnnnnO@@ )] +[( @@@g%D9ZnnnnnnnnnnnnnnnnXB@@ )] +[( @@@@ @@@@&$mXZnnnnnnnnnnnnnnnnnnnnnnG@@ )] +[( @@@@@@Q$D0@ @@@@B8Hennnnnnnnnnnnnnnnnnnnnnnnnnnne#@@ )] +[( @@@@@@@B$Dmmmmm0@@ @@@@@g#D9ZnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnO&@@ )] +[( @@@@@@@gB#8Gmmmmmmmmmm8@@ @@@@@@@B8mXnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZGg@@ )] +[( @ @@@@@@@@@Q%$0mmmmmmmmmmmmmmmmm8@@ @@@@@@@g%0HXZnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZmQ@@ )] +[( @@@@@@ @@@@@@@@@gQ%$0GmmmmmmmmmmmmmmmmmmmmmmmGQ@@@@@@Q#DHSnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnO#@@@ )] +[( @@%Z8@@@@@ @@@@@@@@@@&B#$0Gmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm$@@@gGZnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnS0g@@ )] +[( @@gO+z+m@@@@@@@ @@@@@@@@@@@@@@@@@@@@@&Q%#80GmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmG%@@@g0SnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZmB@@@ )] +[( @@%nzzzzzeQ@@&mGQ@@@ @@BB@@%0088888$$80DGmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmG#@@@@#9nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnS0&@@@ )] +[( @@0+zzzzzzzT0@@@m+nm%@@@@ @@%m$@@&0mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm$g@@@BHZnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn9$@@@ )] +[( @@mzzzzzzzzzzzXg@@%ozzTX0Q@@@@ @@$HmDg@@&8mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm8Q@@@&DennnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZH#@@@@ )] +[( @@@Ozzzzzzzzzzzzzo#@@gXzzzzzo90%@@@@@@ @@0mmmm$@@@&0mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmDB@@@@8XnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZ9D%@@@@@ )] +[( @@mzzzzzzzzzzzzzzz+m@@@0+zzzzzzz+ZOD$B@@@@@@@@@@@@ @@@%%$mmmm#@@@B0mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmG%@@@@BHZnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZXm8Bg@@@@ )] +[( @@$zzzzzzzzzzzzzzzzzzZQ@@Qezzzzzzzzzz+++oe9mD$Bg@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@&GmmmGB@@@QDmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm$g@@@g0XnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnneOG8%&@@@@ )] +[( @@gozzzzzzzzzzzzzzzzzzzT0@@@D+zzzzzzzzz+++++++zzz+TneX9HG0$%B&g@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g&B%#&@@GmmmmDQ@@@QDmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm0Q@@@@BGennnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZXHD$B&@@@ )] +[( @@@9+zzzzzzzzzzzzzzzzzzzzzS&@@QXzzzzzzzzzzz++++zzzzzzzzzzzzzzzzzz+TooonnZZZeeSSSSSXXXX9999XXSeeZnnnnnnnSg@@0mmmmm8g@@@BDmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmG#g@@@@%GSnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZZXHGD8$# )] +[( @@$++zzzzzzzzzzzzzzzzzzzzzz+0@@@#nzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+++++++++TTToonnnnnnnnnnnnnnnnXg@@#mmmmmm$g@@@BDmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm0%@@@@@Q09ZnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZZXG )] +[( @@@n++zzzzzzzzzzzzzzzzzzzzzzzzZ%@@@DTzzzzzzzzzzzzz+zzzzzzzzzzzzzzzzzzzzzzzzzzz+++++++TTTooonnnnnnnnnnnnnnnS&@@g0mmmmmm#@@@@BDmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm8B@@@@@g#mSnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZ9DDOO8@@ )] +[( @@@m+++zzzzzzzzzzzzzzzzzzzzzzzzzz9&@@@GTzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+++++++TTTooonnnnnnnnnnnnnne#@@@QDmmmmmG%@@@@Q8mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm0%&@@@@@Q09ZnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZSm08DHOOOHg@ )] +[( @@QT+++zzzzzzzzzzzzzzzzzzzzzzzzzzz+mg@@@Dozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+++++++TTToooonnnnnnnnnnnnnO&@@@%mmmmmmG%@@@@g#GmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmG$Q@@@@@g$mennnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZSHD80mOOOOOOOO#@@ )] +[( @@@S++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzz+mg@@@0nzzzzzzzzzzz++zzzzzzzzzzzzzzzzzzzzzzzzzzzz+++++++TTTTooooonnnnnnnnnnZ0@@@@$mmmmmmm#g@@@@Q8mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm8%g@@@@@Q09ZnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZ9G#Q%DHOOOOOOOOOOOG@@ )] +[( @@8+++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+H&@@@%9+zzzzzzz++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzz+++++++TTTTTooooonnnnnnnnnS%@@@g$mmmmmmm8Q@@@@g%DmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmD#Q@@@@@@#mennnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZSH8B@@%DHHHOOOOOOOOOOOOO&@@ )] +[( @@@n++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+9%@@@g0ezzzzz+++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+++++++TTTTTToooonnnnnnnnnOQ@@@@#GmmmmmmD%@@@@@Q$Gmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm8%g@@@@@%GSnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZXm$&@@@B0HHHHHHHOOOOOOOOOOOO$@@ )] +[( @@0+++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZDg@@@&Dezzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz++++++++TTTTTooooonnnnnnnnmQ@@@@BDmmmmmmm8Q@@@@@Q$GmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmG$Q@@@@@Q8OZnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZ9D#g@@@&#DHHHHHHHHHHHOOOOOOOOOOOm@@ )] +[( @@@Z++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+X$@@@@&0S+zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+++++++++TTTTToooonnnnnnnnO%@@@@Q8mmmmmmmD#g@@@@@&$GmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmG8B@@@@@@#GSnnnnnnnnnnnnnnnnnnnnnnnnZSH0B@@@@g%0mOOHHHHHHHHHHHHHOOOOOOOOOOOQ@@ )] +[( @@%++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+9$@@@@g8X+zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+++++++++++TTTToooonnnnnnnnX$@@@@@Q$GmmmmmmD#g@@@@@&#Gmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm0%&@@@@@&#D9ZnnnnnnnnnnnnnnnZ9G#&@@@@@B8GOOOOOOHHHHHmmHHHHHHHOOOOOOOOOO8@@ )] +[( @@@O++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+X8g@@@@$Oozzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz++++++++++++TTTTooonnnnnnnneGB@@@@@Q$GmmmmmmD#g@@@@@&#DmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmG$B@@@@@@@B0HennnnnnZ9G$B@@@@@@B$DHHOOOOOOOOHHHHmmmmmHHHHHHOOOOOOOOOm@@@ )] +[( @@gT+++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+S0&@@@@QDXTzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz++++++++++++TTTToooonnnnnnnnSG%@@@@@&#DmmmmmmD#g@@@@@g#DmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmD$B&@@@@@@&$GD#Q@@@@@@@B$DmHHHHHOOOOOOOOHHHHmmmmmHHHHHHHOOOOOOOOOQ@@ )] +[( @@0+++zzzzzzzzzzzzz++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzZm%@@@@@BDXozzzzzzzzzzzzzzzzzzzzzzzzzzzzzz++++++++++++TTTToooonnnnnnnnnem#@@@@@g%0mmmmmmD#&@@@@@g%0mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm0#Qg@@@@@@@@@Q#8GmmmmmmHHHHHOOOOOOOHHHHmmmmmmHHHHHHHOOOOOOOO$@@ )] +[( @@@S+++zzzzzzzzzzzz+++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzTX0Q@@@@@&$mSozzzzzzzzzzzzzzzzzzzzzzzzzzzzz++++++++++TTTToooonnnnnnnnnnZH$g@@@@@B8GmmmmmG#&@@@@@@Q$Dmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmm0$&@@8mHHHHHHmmmmmmHHHHOOOOOOOHHHHmmmmmmmHHHHHHHOOOOOOO0@@ )] +[( @@Q+++zzzzzzzzzzzz+++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzoXDB@@@@@@&#G9Z+zzzzzzzzzzzzzzzzzzzzzzzzz+z++++++++TTTToooonnnnnnnnnnnn90B@@@@@&%8mmmmmG$Q@@@@@@gB8GmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmGDD000B@@HOOHHHHHmmmmmmHHHHHOOOOOOHHHHmmmmmmmHHHHHHHHOOOOOOm@@@ )] +[( @@@G+++zzzzzzzzzzz+++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+ZO0B@@@@@@@B8mSozzzzzzzzzzzzzzzzzzzzz+z++++++++TTTTTooonnnnnnnnnnnnnneH8Q@@@@@Q#Dmmmmm0%g@@@@@@&%8GmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmGDD000000000Q@gOOOHHHHHmmmmmmmHHHHOOOOOOHHHHmmmmmmmmHHHHHHHHHHHOOH@@@ )] +[( @@@n++zzzzzzzzzzzz++++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+n9G$&@@@@@@g%DOZ+zzzzzzzzzzzzzzzzzz+++++++++TTTTTooonnnnnnnnnnnnnnnneH8&@@@@@Q#0mmmmG$B@@@@@@@gB$DmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmGGDD000000000000008@@QOOOHHHHHmmmmmmmHHHHHOOOOOHHHHmmmmmmmmHHHHHHHHHHHHHO&@@ )] +[( @@B+++zzzzzzzzzzz++++++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzTeOD#&@@@@@@Q$mXozzzzzzzzzzzzzz+++++++++TTTTTooonnnnnnnnnnnnnnnnnnnXD%@@@@@@Q#0mmmmD#Q@@@@@@@@&B$DmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmGGD000000000000000000000#@@%OOOHHHHHmmmmmmmmHHHHHOOOHHHHHmmmmmmmmHHHHHHHHHHHHHHQ@@ )] +[( @@@G+++zzzzzzzzzzz++++++++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+nS9m0#Bg@@&$mSTo+zzzzzzz++++++++++TTTTTooonnnnnnnnnnnnnnnnnnnnnZ9G#g@@@@@&%8GmmmD$Bg@@@@@@@@&B$DmmmmmmmmmmmmmmmmmmmmmmmmGGDD0000000000000000000000000000B@@#OOOHHHHHHmmmmmmmHHHHHOOOHHHHHmmmmmmmmmHHHHHHHHHHHHHB@@ )] +[( @@@X++zzzzzzzzzzz++++++++++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+TnZSO@@8XTzzz++++++++++++TTTTToonnnnnnnnnnnnnnnnnnnnnnnnnZ9D#g@@@@@&B$DmmmG0#Bg@@@@@@@@%mmmmmmmmmmmmmmmGGDD00000000000000000000000000000000000&@@$OOOHHHHHHmmmmmmmHHHHHHOOHHHHHmmmmmmmmmHHHHHHHHHHHHHB@@ )] +[( @@@Z++zzzzzzzzzzz+++++++++T++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzoZmQ@@@Bmn++++++++++++TTTTTooonnnnnnnnnnnnnnnnnnnnnnnnnnnnnSH8B@@@@@@gQB#$0mG0#Bg@@@@0DDDDDDDDD00000000000000000000000000000000000000000008@@@0OOOHHHHHHmmmmmmmmHHHHHOHHHHHHmmmmmmmmmHHHHHHHHHHHHHB@@ )] +[( @@@T+zzzzzzzzzzz+++++++++TTTT+++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzze@@mHm8B@@@&09n++++++++TTTTTToonnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnZXH0%@@@@@@@@gB0mmG%@@#0000000000000000000000000000000000000000000000000000#@@@GOOOHHHHHHmmmmmmmmHHHHHHHHHHHHmmmmmmmmmmHHHHHHHHHHHHB@@ )] +[( @@@++zzzzzzzzzzz++++++++TTTTTT++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzo&@BHHHHHm8B@@@@@Q%$0GHOXSenooooonnnnnnnnnnnnnnnnnnnnnnnZeSXXOHG0#B&@@@@@@@@@@@@@B00B@@#0000000000000000000000000000000000000000000000000000%@@@HOOOHHHHHHmmmmmmmmHHHHHHHHHHHHmmmmmmmmmmHHHHHHHHHHHHB@@ )] +[( @@&++zzzzzzzzzz+++++++++TTTTTTTT++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+%@@GHHHHHHHHHD$B&@@@@@@@@@@@@@@gQQQQQQQQQQQQQQQQ&&&&&g@@@@@@@@@@@@@@@@@&B%#80GG@@@00&@@#0000000000000000000000000000000000000000000000000000Q@@gHOOOHHHHHHmmmmmmmmmHHHHHHHHHHmmmmmmmmmmmHHHHHHHHHHHHQ@@ )] +[( @@&++zzzzzzzzzz++++++++TTTTTTTTTT+++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzm@@#HHHHHHHHHHHHHHHHGD08$#%BQ&g@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@g&QB%$8DmHOOHHHHHH$@@&00@@@$0000000000000000000000000000000000000000000000000000&@@QOOOOHHHHHHmmmmmmmmmHHHHHHHHHHmmmmmmmmmmmHHHHHHHHHHHHQ@@ )] +[( @@B+zzzzzzzzzzz++++++++TTTTTTTTTTT++++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzT@@@mHHHHHHHHHHHHHHHOOOOOOOOOOOOOOHmmmmmGGGGGGGGGGGGGGGGmmHHOOOOOOOOOOOOHHHHHHHHg@@%08@@@80000000000000000000000000000000000000000000000000008@@@#OHHHHHHHHHHmmmmmmmmHHHHHHHHHHmmmmmmmmmmmmHHHHHHHHHHH&@@ )] +[( @@B+zzzzzzzzzz++++++++TTTTTTTTTTTTT+++++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzG@@#HHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHD@@@$0#@@@0000000000000000000000000000000000000000000000000000$@@@8HHHHHHHHHHmmmmmmmmmmHHHHHHHHHmmmmmmmmmmmmHHHHHHHHHHHg@@ )] +[( @@Q+zzzzzzzzzz+++++++TTTTTTTTTTTTTT+++++++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+g@@mHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHH%@@@00B@@&0000000000000000000000000000000000000000000000000000%@@@GHHHHHHHHHHmmmmmmmmmmHHHHHHHHHmmmmmmmmmmmmHHHHHHHHHHm@@@ )] +[( @@&+zzzzzzzzzz++++++TTTTTTTTTTTTTTT++++++++++++++++++++zz+zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzH@@BHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHg@@Q00Q@@B0000000000000000000000000000000000000000000000008888Q@@@HHHHHHHHHHHmmmmmmmmmmHHHHHHHHmmmmmmmmmmmmmHHHHHHHHHH8@@@ )] +[( @@g+zzzzzzzzzz++++++TTTTTTTTTTTTTTTT++T+++++++++++++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz+++Q@@0HHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHG@@@#00g@@%0000000000000000000000000000000000000000008888888888g@@QHHHHHHHHHHHmmmmmmmmmmmHHHHHHHmmmmmmmmmmmmmHHHHHHHHHHB@@ )] +[( @@@+zzzzzzzzzz++++++TTTTTTTTTTTTTTTT+++++++++++++++++++++++++++++zzzzzzzzzzzzzzzzzzzzzzzzzzzzz+++++++9@@gHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHH8@@@$08@@@#0000000000000000000000000000000000000888888888888888@@@#HHHHHHHHHHHmmmmmmmmmmmHHHHHHHmmmmmmmmmmmmmHHHHHHHHHH@@@ )] +[( @@@ozzzzzzzzzz++++++TTTTTTTTTTTTTTTTT+++++++++++++++++++++++++++++++++zzzzzzzzzzzzzzzzzzzz+++++++++++B@@$HHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHH%@@@808@@@$000000000000000000000000000000008888888888888888888$@@@0HHHHHHHHHHHmmmmmmmmmmmHHHHHHmmmmmmmmmmmmmmHHHHHHHHH8@@ )] +[( @@@ezzzzzzzzzz++++++TTTTTTTTTTTTTTTTT++++++++++++++++++++++++++++++++++++++zzzzzzzzzzzz+++++++++++++S@@@mHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHQ@@g00$@@@8000000000000000000000000000888888888888888888888888%@@@GHHHHHHHHHHHmmmmmmmmmmmHHHHHHmmmmmmmmmmmmmmHHHHHHHHHQ@@ )] +[( @@@9zzzzzzzzzz++++++TTTTTTTTTTTTTTTTT+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++$@@BHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHH@@@Q00%@@@8000000000000000000000008888888888888888888888888888Q@@@HHHHHHHHHHHHmmmmmmmmmmmmHHHHHmmmmmmmmmmmmmmHHHHHHHHG@@@ )] +[( @@@Dzzzzzzzzzz++++++TTTTTTTTTTTTTTTTT++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++n@@@DHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHm@@@B00B@@g0000000000000000000000888888888888888888888888888888&@@QHHHHHHHHHHHmmmmmmmmmmmmmHHHHmmmmmmmmmmmmmmmHHHHHHHH#@@ )] +[( @@Bzzzzzzzzzz++++++TTTTTTTTTTTTTTTTT++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++TTm@@&HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHD@@@%00&@@Q0000000000000000088888888888888888888888888888888888@@@BHHHHHHHHHHHmmmmmmmmmmmmmHHHHmmmmmmmmmmmmmmmHHHHHHHHg@@ )] +[( @@@ozzzzzzzzz+++++++TTTTTTTTTTTTTTTT++++++++++++++++++++++++++++++TTTTTTT+++++++++++++++++++TTTTTT%@@#HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHH8@@@$00g@@B0000000000888888888888888888888888888888888888888888@@@#HHHHHHHHHHHmmmmmmmmmmmmmmHHmmmmmmmmmmmmmmmmHHHHHHHD@@ )] +[( @@@mzzzzzzzzz+++++++TTTTTTTTTTTTTTTT+++++++++++++++++++++++++++++TTTTTTTTTTTTTT++++++++TTTTTTTTTTn@@@DHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHH#@@@808@@@%000000888888888888888888888888888888888888888888888$@@@8HHHHHHHHHHHmmmmmmmmmmmmmmHHmmmmmmmmmmmmmmmmHHHHHHH%@@ )] +[( @@Q+zzzzzzzz+++++++TTTTTTTTTTTTTTTT+++++++++++++++++++++++++++++TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTO@@@mHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHB@@@80$@@@$008888888888888888888888888888888888888888888888888#@@@DHHHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmHHHHHHm@@ )] +[( @@@9zzzzzzzz+++++++TTTTTTTTTTTTTTTTT+++++++++++++++++++++++++++++TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT8@@QHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHH&@@@80#@@@8888888888888888888888888888888888888888888888888888%@@@GHHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmHHHHHH#@@ )] +[( @@Q+zzzzzzz++++++++TTTTTTTTTTTTTTT+++++++++++++++++++++++++++++++TTTTTTTTTTTTTTTTTTTTTTTTTTTTTT&@@$HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHH@@@g00B@@@8888888888888888888888888888888888888888888888888888B@@@HHHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmHHHHHm@@ )] +[( @@@Gzzzzzzzz++++++++TTTTTTTTTTTTTTT++++++++++++++++++++++++++++++++TTTTTTTTTTTTTTTTTTTTTTTTTTTe@@@DHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHH@@@&88Q@@g8888888888888888888888888888888888888888888888888888Q@@gHHHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmHHHHH#@@ )] +[( @@@Szzzzzzz+++++++++TTTTTTTTTTTTTTT+++++++++++++++++++++++++++++++++TTTTTTTTTTTTTTTTTTTTTTTTTm@@@HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHm@@@Q88&@@Q8888888888888888888888888888888888888888888888888888g@@&HHHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmHHHHm@@ )] +[( @@&nzzzzzz+++++++++TTTTTTTTTTTTTTTT+++++++++++++++++++++++++++++++++++TTTTTTTTTTTTTTTTTTTTTT#@@BHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHG@@@Q88g@@B8888888888888888888888888888888888888888888888888888@@@BHHHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmHHHH#@@ )] +[( @@QTzzzzz+++++++++TTTTTTTTTTTTTTTTT++++++++++++++++++++++++++++++++++++++++TTTTTTTTTTTTTTTTg@@$HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHG@@@Q88@@@B8888888888888888888888888888888888888888888888888888@@@#HHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmHHHHG@@ )] +[( @@Bozzzz+++++++++TTTTTTTTTTTTTTT+T++++++++++++++++++++++++++++++++++++++++++++++++TTTTTTTS@@@DHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHD@@@B88@@@%888888888888888888888888888888888888888888888888888$@@@$HHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmHHHHQ@ )] +[( @@Qnzzz++++++++++TTTTTTTTTTTTTT+++++++++++TT++++++++++++++++++++++++++++++++++++++++TTTTG@@@HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHHD@@@B88@@@%888888888888888888888888888888888888888888888888888#@@@0HHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmHHH0@ )] +[( @@gezz++++++++++TTTTTTTTTTTTTT++++++++++TTT++++++++++++++++++++++++++++++++++++++++++TT%@@BHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOOOHHHHHHHHHHHHH0@@@B8$@@@#888888888888888888888888888888888888888888888888888%@@@DHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmHHmg )] +[( @@O+++++++++++TTTTTTTTTT+TTT++++++++++TTTT++++++++++++++++++++++++++++++++++++++++++Tg@@#HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOOHHHHHHHHHHHHH8@@@%8#@@@$888888888888888888888888888888888888888888888888888%@@@DHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmD8%g )] +[( @@D++++++++++TTTTTTTTT+TT++++++++++++TTTTT+++++++++++++++++++++++++++++++++++++++++n@@@0HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOOHHHHHHHHHHHHH8@@@%8#@@@$888888888888888888888888888888888888888888888888888%@@@DHHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmmmmG8#Q@@@@@ )] +[( @@%o++++++++TTTTTTT+++++++++++++++++TTTTT+++++++++++++++++++++++++++++++++++++++++9@@@mHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOOHHHHHHHHHHHHH8@@@%8%@@@8888888888888888888888888888888888888888888888888888%@@@DHHHHHHHHmmmmmmmmmmmmmmmmmmmmmmmmmD$B&@@@@@@ )] +[( @gHT+++++++TTTT+++++++++++++++++++TTTTTT++++++++++++++++++++++++++++++++++++++++G@@@HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOOHHHHHHHHHHHHH8@@@%8%@@@8888888888888888888888888888888888888888888888888888%@@@GHHHHHHHHmmmmmmmmmmmmmmmmmmmmm0#Q@@@@@@ )] +[( @&mo+++++TTTT+++++++++++++++++++TTTTTTT+++++++++++++++++++++++++++++++++++++++$@@QHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOHHHHHHHHHHHHH8@@@%8%@@@8888888888888888888888888888888888888888888888888888B@@@GHHHHHHHHmmmmmmmmmmmmmmmmG8%&@@@@@@ )] +[( @@Do++++++++++++++++++++++++++TTTTTTT+++++++++++++++++++++++++++++++++++++++Q@@%HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOOHHHHHHHHHHHH8@@@%8%@@@8888888888888888888888888888888888888888888888888888B@@@GHHHHHHHHmmmmmmmmmmmmD$Bg@@@@@@ )] +[( @QHo++++++++++++++++++++++++TTTTTTT++++++++++++++++++++++++++++++++++++++T@@@$HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOOHHHHHHHHHHHH8@@@%8%@@@8888888888888888888888888888888888888888888888888888B@@@mHHHHHHHmmmmmmmmG8#Q@@@@@@ )] +[( @g0eT++++++++++++++++++++++TTTTTT++++++++++++++++++++++++++++++++++++++n@@@0HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOOHHHHHHHHHHHH8@@@%8%@@@8888888888888888888888888888888888888888888888888888B@@@mHHHHHHHmmmmD8%&@@@@@@ )] +[( @@QmnT+++++++++++++++++++TTTT++++++++++TT++++++++++++++++++++++++++++e@@@DHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOOHHHHHHHHHHHH8@@@%8%@@@8888888888888888888888888888888888888888888888888888Q@@@HHHHHHHmD$Bg@@@@@@ )] +[( @@%OT+++++++++++++++++TTT++++++++++TTT+++++++++++++++++++++++++++TX@@@mHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOHHHHHHHHHHHH8@@@%8%@@@8888888888888888888888888888888888888888888888888888Q@@@HHHm0#Q@@@@@@ )] +[( @@gDZT++++++++++++++TT+++++++++++TTTT+++++++++++++++++++++++++TTH@@@HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOOHHHHHHHHHHH8@@@%8%@@@8888888888888888888888888888888888888888888888888888Q@@@8%&@@@@@@ )] +[( @@%OT+++++++++++++++++++++++++TTTT+++++++++++++++++++++++++TTG@@gHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOHHHHHHHHHHH8@@@%8%@@@8888888888888888888888888888888888888888888888888888B@@@@@@@@ )] +[( @@g0eT++++++++++++++++++++++TTTT+++++++++++++++++++++++++TTG@@gHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOHHHHHHHHHH0@@@B8%@@@8888888888888888888888888888888888888888888888888888B@@@ )] +[( @@Bmo+++++++++++++++++++++TTT++++++++++++++++++++++++TTTG@@gHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOHHHHHHHHHH0@@@B8#@@@$888888888888888888888888888888888888888888888888888%@@@ )] +[( @@@$XT++++++++++++++++++TTT++++++++++++++++++++++++TTTG@@gHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOHHHHHHHHHHD@@@B8$@@@#888888888888888888888888888888888888888888888888888#@@@ )] +[( @@Qmn++++++++++++++++TTT+++++++++++++++++++++TTTTTTm@@@HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOHHHHHHHHHD@@@Q88@@@%8888888888888888888888888888888888888888888888888888@@@ )] +[( @@@$XT+++++++++++++TTT++++++++++++++++++++TTTTTTTm@@@HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOHHHHHHHHHG@@@Q88@@@%8888888888888888888888888888888888888888888888888888@@@ )] +[( @@g0eT+++++++++++T++++++++++++++++++++TTTTTTTTO@@@mHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOHHHHHHHHm@@@Q88@@@B8888888888888888888888888888888888888888888888888888g@@ )] +[( @@@QGeT++++++++T++++++++++++++++++++TTTTTTTTS@@@DHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOHHHHHHHHm@@@&88g@@Q888888888888888888888888888888888888888888888888#BQ&@@@ )] +[( @@@&0XT++++++++++++++++++++++++++TTTTTTTTo@@@8HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOHHHHHHHH@@@&88&@@&888888888888888888888888888888888888888888#%Qg@@@@@@@@ )] +[( @@@g$Oo+++++++++++++++++++++++TTTTTTTTTB@@BHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOHHHHHHH@@@&88B@@@8888888888888888888888888888888888888#BQg@@@@@@@@ )] +[( @@@%meT++++++++++++++++++++TTTTTTTTG@@@HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOHHHHHHHg@@g88%@@@88888888888888888888888888888888#B&g@@@@@@@ )] +[( @@@&09o+++++++++++++++++TTTTTTTTZ@@@8HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOOHHHHHHQ@@@88$@@@$88888888888888888888888888#B&@@@@@@@@ )] +[( @@@@BDXo++++++++++++++TTTTTTTT$@@&HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOHHHHHH%@@@888@@@#888888888888888888888$%Q@@@@@@@@ )] +[( @@@@%GST+++++++++++TTTTTTTe@@@8HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOOOOOOOHmD8#B@@@@888g@@%88888888888888888$%Q@@@@@@@ )] +[( @@@@%GST+++++++TTTTTTTTD@@gmHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHOHm0$%&@@@@@@@@@g888Q@@B8888888888888#B&@@@@@@@ )] +[( @@@@%D9n++++TTTTTTTnQ@@%HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHm0$%&@@@@@@@@@@gB#$88888B@@B888888888#B&@@@@@@ )] +[( @@@@&#GXoTTTTTToX@@@DHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHmD0$%B&@@@@@@@@ @@@@@@gQB$888#@@B88888#Bg@@@@@@ )] +[( @@@@Q$mSoToo0@@gmHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHG0$#B&@@@@@@@@@@ @@@@gB88@@B8$%&@@@@@ )] +[( @@@@@Q8m9B@@BHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHmD0$%Qg@@@@@@@@@ @@@%&@gg@@@@ )] +[( @@@@@@@@&QQQBB%%%##$$80DDGGGGGDD008$$#%BQ&g@@@@@@@@@@ @@@@ )] +[( @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ )] +[( )] +[( )] +[()] +[(examples/dosh.png)] +[(316x115 \0508x12\051)] +[(1)] +[()] +] 18 -0 0 0 false DrawText +grestore +restore showpage + +%%Trailer +end +%%EOF diff --git a/ascii/text_to_ps.py b/ascii/text_to_ps.py index f0b36df..392c4b6 100644 --- a/ascii/text_to_ps.py +++ b/ascii/text_to_ps.py @@ -4,7 +4,7 @@ import subprocess import tkinter filename_noext = input(']>> ') -filename_text = filename_text.replace('.txt', '') +filename_text = filename_noext.replace('.txt', '') filename_text = filename_noext + '.txt' filename_ghost = filename_noext + '_render.ps' @@ -27,4 +27,4 @@ print('Writing Postscript') c.postscript(file=filename_ghost, width=lines_width, height=lines_height) t.destroy() print('Writing PNG') -subprocess.Popen('PNGCREATOR.bat', shell=True, cwd='D:/!/o/asscii') \ No newline at end of file +subprocess.Popen('PNGCREATOR.bat', shell=True, cwd=os.getcwd()) \ No newline at end of file