<?xml version="1.0" encoding="UTF-8" ?>
<rdf:RDF xmlns="http://usefulinc.com/ns/doap#" xmlns:foaf="http://xmlns.com/foaf/0.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"><Project><name>asciiporn</name>
<shortdesc>ssh terminal-based, high-quality, 3d plotter &amp; image viewer. (screenshots using putty ssh terminal included)</shortdesc>
<description>################################################################################
this is a moderately complex python3.0 script for performing fast, high quality
graphics -&gt; ascii conversions.  it relies on py3to2 in order to use PIL &amp;
numpy extension modules.  for performance, portions of it have been inlined w/
direct C code using scipy.weave.
asciiporn can easily render &amp; display megapixel images on a 1ghz 500mb machine.

asciiporn's main purpose is to provide ascii-converted, high-quality,
color-3d plots within an interactive python txt terminal.
however, its fast txt-rendering engine can also b used for viewing image files.
screenshots of both applications r included w/ this distribution.

if something fails, try updating ur install of py3to2 to the latest version @:
http://pypi.python.org/pypi/py3to2

how to enable 256 color in putty: http://www.emacswiki.org/emacs/PuTTY#toc2
how to enable 256 color in xterm: http://www.frexx.de/xterm-256-notes/

asciiporn is hard-coded to use lucida-console font, but courier font will work
as well.  the screenshots show putty ssh w/ lucida-console 5pt.

AUTHOR:
  kai zhu
  kaizhu@ugcs.caltech.edu

REQUIREMENTS:
- posix/unix os (Windows currently unsupported)
- py3to2                  http://pypi.python.org/pypi/py3to2
- numpy                   http://www.scipy.org/Download
- Python Imaging Library  http://www.pythonware.com/products/pil

PSEUDOMETHOD:
  asciiporn uses ".." syntax notation for pseudomethods
  goto: http://pypi.python.org/pypi/pseudomethod
  for more details about this feature

API:
  asciiporn module:
  - img2plaintxt - converts image file to portable plain txt
                   u can copy &amp; paste in documents
  - img2txt - converts image to high-quality colorized txt
              for display on terminals supporting 256 color (putty, xterm...)
  - plot - plot multiple 2d functions
  - plot3d - plots a 3d function that takes in 2 parameters

INSTALL:
  python setup.py build
  python setup.py install
  python setup.py dev --quicktest

################################################################################
PLOT USAGE:

start up the py3to2 interpreter by typing "py3to2" in ur terminal &amp;
import asciiporn:

  $ py3to2

  Python 2.6.py3to2 (r26:66714, Nov 18 2008, 00:56:43)
  [GCC 3.4.6 20060404 (Red Hat 3.4.6-10)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  &gt;&gt;&gt;
  &gt;&gt;&gt; import asciiporn, numpy
  created...
  py3k server starting...
  &gt;&gt;&gt; ...py3k server started w/...
  &gt;&gt;&gt;

2d plots take 2 main arguments:
  y - a list of functions to plot
  trange - t domain

  &gt;&gt;&gt; asciiporn.plot(
  ...   y = [             # list of single argument functions
          numpy.cos,
          numpy.sin,
          lambda t: numpy.sin(t + 0.25),
          ],
  ...   trange = [0, 7],  # range of t
  ... )


SIDEVIEW Y...
l7Y~_-----_&gt;r'llT''7*s_--------------------------------------------_^*'llTi(_---
|   `T+ `(`,r'      Tc`Y_                                        .C         `&gt;,
|     (*)_/`         `*_`&gt;`                                    _*             _(
|    ,' iC             'v `C                                  .'             .``
|   .``/' \`             \``i                               `/             `/ `*
|  /  Y    '              '` \`                            ``             `* `'
|_/ `c      '_             '_ '`                          _'             _' _`
|&gt; `'        ``             `` ``                        ,'             `' .`
c `i          `,             `, '_                      ,`             ,` .'
|`i            `_             `_ ``                    _`             _` _
_'              `_             `c ``                  .'             _' _`
 ----------------``-------------'`-`,---------------- '-------------.'-.`-------
|                 ',             '` `,              ,'             ,' .`
|                  `,             `_ '_            _`             ,` .'
|                   `_             `_ ``          _`             _` )
|                    ``             `. ',        .'             .' .`
|                     '_             `_ `_      )              )' (`
|                      `v             `i `,    (              .``/
|                        \`             \``i `/             `/ `*
|                         '_             ?_ J'             _` _C
|                          'v             'v'`.`          /'_/`
|                            '(`        `&gt;' '(`'L      `&gt;'_v'
|------------------------------`*L_,,_.r`-----`*L_~,_.r_&gt;r'---------------------


3d plots have an extra argument:
  zrange - z domain

  &gt;&gt;&gt; asciiporn.plot3d(
  ...   y = lambda t, z: numpy.sin(t + t*z)  # y is now a fnc taking 2 args (t, z)
  ...   trange = [0, 7],                     # range of t
  ...   zrange = [0, 0.25],                  # range of z
  ... )


SIDEVIEW Y...
|---------`WDHbPgHHbmW_---------------------------------------------_mH&amp;&amp;EHH&amp;&amp;EH
|        q88''    'b&amp;EHD_                                         _mdHH&amp;&amp;QmH&amp;&amp;dm
|      _M&amp;W`        NEHHbW_                                      s8&amp;mHH8&amp;gHF8&amp;dm
|     _HHl           #HHb&amp;&amp;p                                   `=bM@mjjD@d@]hIdH
|    _HF'             ]Hb&amp;&amp;IL                                  j]kM@m&amp;ahMgk]uHB'
|   _bg                ]b&amp;&amp;IHm`                               sdkAUh$kkUP$F]l+'
|  `8h                  3&amp;&amp;IHm#`                             ?hm]k[hdFElP]F%nl
|  HC                    d&amp;Imm&amp;8`                           (UhhEk1{jJk[1j]L`
| M'                      8dHb&amp;&amp;d_                         _dPUR]k{hRF}P[6i'
|j'                        mHm&amp;&amp;dH`                       _]ahUg]k[3B}jCf]
_C                         `Hb&amp;&amp;dHH_                      Ak}1U%]6UC&amp;jFh+`
'----------------- ---------'b&amp;&amp;mmm&amp;_------ -------------s$k4hU%]]CnjFjT`-------
|                            3&amp;&amp;mmH@@,                  cI$]kppA}}nhB]J`
|                             8&amp;$mH&amp;&amp;8_                -Dhd]dUhA]}{3&amp;J'
|                             `gmHH8&amp;dH`              _aMM$kaUh%]]huj
|                              `mHH&amp;&amp;dHH_            `jg@Qd&amp;4MKd}aPl`
|                               'HH8@HHH&amp;_          _]jgDMdk}UUdk}T`
|                                'H&amp;8HHH&amp;&amp;,         @mHaDMdkk@@HA*
|                                 '&amp;&amp;dHH&amp;&amp;dL       q8mmb&amp;#dkE@@d'
|                                  ?&amp;EDH&amp;&amp;dHH_   `g&amp;Wmmb&amp;8dH$&amp;@'
|                                   ?dHH&amp;&amp;EHH&amp;p``mb&amp;8mmD8&amp;dHbl`
|                                    `WH&amp;&amp;EHH&amp;&amp;8HHb&amp;EHHD&amp;8dF'
|--------------------------------------'NMEHH&amp;&amp;EHHb&amp;EHHbMPl---------------------

TOPVIEW Z...
 DOGKz1(7Lx\:,-'`   `._~&gt;r?;tfVne6H MQpZaV}oTY?+(,!'` `'-_&gt;+|/Cc[]KPRg  8REnVSt7
 DOGKX3(7/vi:_-`    `-_~iv/YcS{aZqm &amp;8qI4yzts7r~i'-`  `-'i~r7stjy4Iq8&amp; dqEa{jtYL
 DAG5X3cY/vi~_.`   `'-,:|xJT=3y4U9  Wm0EXnFTY?\(_!.` `'!,:\l^)Fn3U9mN m%Za{j=Y?x
 DAZ5{jcY?r&gt;~_.`   `''!(+lsCf}neR8 $gRI4yz=slx*i'.' `'-_(+rYT2[]GO6D D9U5X3=T?r*
 DAZa{jt;?r&gt;!'.`   `._~i|/YcoV5GOd BH9GXnF)Y?\:_-'` `.!i~vLstj{3PhbN HqE][fCsx*i
 DAZa{jt;l|(!'.`   `._~irL7=j{4U9 @D6OK][oT7r*&gt;'.' `'-_(\|Y)FnXGqd# bAZa[ft;l+(~
 mqEaVoCsl|(,-'    '.,:J)2}yeR8 &amp;bhP3{jts?\:,-'` `.'i*r7Jo[VawmW  OG5XSc;?r&gt;!_
 mqEnVoCs^+:,-'   `'-!(+^;tSkuGOd WmAeV[oTYr*&gt;'.` `'!,(vL^)fy4PhQ  8U4z1cY?ri!'.
 mqEnkS)Jx*:_-'   `'-~&gt;|l7(j{50h  gRZK{jtsl\:,!'` '-'&gt;*|YT2k3U9H  Hqwy}27/v\:'.'
 mqeukS)Lx*~_.`   `.'~|r/)F1ywqH $d9U3}2TY|*&gt;'-` `.!,:v7J=zXGO6W dOZu[fCLv\:,.``
 mqeu[fTLv\~'.`   `._:*xLtfkueOm #%0EVfcslx:,!'` `-_(+|^)S{KZRg  9IKVSt;x*(,-`
 mReu[fT/v\!'.`   '-_(+^sco{5Gh @DhP5uF(Y?\&gt;'-' `'!,:vLJ=z]eAHB Hqeu1FTL|i~'.`
 mRe][27/ri!''`  `'-,&gt;|l;=3z4U8 $89e1noC/r*i!.` `._(+|Ytj{5w%D  OZaV2)Jxi~_.`
 mRP]}27?ri!-'`  `''!ir?72}]PRd #H0a]zt^Lv:_-' `'!i~x7J2}Xeh8  8UKXjts^+:_.`   `
 dRP]}FY?|&gt;,-'   `.'!LTSknZA  D%I5{ST/|*&gt;!.` `.'(\?;)zyawH# dAPy1FYl|&gt;,-'    '
 d6Py1F;l|&gt;,-'   `._~*xJCjXKI9 $8hGX}oslv:,-' `'!,*r/Cok3IhD  9InkfC/ri~-'`   '-
 d6wy1=;l+(_.`   `-_:+l;c1yw68 #HAKyftY|+&gt;_.` `.'&gt;\L^tjVGOm  86w{oc;x\:_.`   `._
 d6wz3=s^+(_.`   '-,(r?7=[uEA  DRZ3kF(7x~i!'` '!,:r/T2n4ZRQ dAEu3=7?+(,-`   `'_~
 d6wz3(s^*(_.`  `''!&gt;vLT2V5G% $8qUV[=J?\(_-` `.'&gt;*?^tjuGAH# p04zSCJxi~'.`   '-~i
 d6wz3(sx*:'.`  `''!ixJ)fXKUh NdAGyft^|*&gt;'.` `-,:v/C2n1ZRQ  qe]}(Yl+:_.`   `._(+
 d04XjcJx\:''`  `.'~\^stoywRH W6wKkFTYx:,!' `''&gt;*|^tfya9b&amp; 9GaVST/ri,-'   `.'~*x
 d04XjcJv\~-'`  `._:*lY(3uEAm gpI3[=Jl+(_-` `.,:vlT2n3I6W m6wzj(Jx\:''`  `''!&gt;vL
 d04XocLv\~-'   `-,(+/7F}aG9 @d9GVj);?~i!.` '-i~r/)jyK0d&amp; 8Gakf)?|&gt;!.`   '-,(+/T


asciiporn can also plot user-supplied (y,t) datapoint pairs:

  &gt;&gt;&gt; t =  numpy.arange(1000)   # create t coord datapoints
  &gt;&gt;&gt; y =  numpy.sin( 0.01*t )  # create y coord datapoints
  &gt;&gt;&gt; yt = list(zip( y, t ))    # create (y,t) datapoint pairs
  &gt;&gt;&gt; asciiporn.plot( yt = yt )


SIDEVIEW Y...
|--------_(?ll*C-------------------------------------------_&gt;C''Y(`-------------
|      `/l     `X_                                        y'      Jc
|     _/         `c                                     `/`        'v
|    _^           ?L                                    /           `v
|   `/             ?_                                  /             `v
|   /               J_                                ,`              ?c
|  ,`                )                               ~'                `_
| ~'                 `Y                             _*                  |_^                   `c                            7                   `Y
|/                     J_                          s`                    `c
,`                      \                         _'                      ^`
C----------- -----------`v----------- -----------`r------------------------Y----
|                        ?_                      v                         `c
|                         \                     ~'                          `_
|                          Y                   _^                            |                          `c                  /                             `v
|                           `_                ,                               ?c
|                            \               ,'                                `
|                             \             _C
|                             `Y           _^
|                              `V`        _*
|                                \_      )'
|---------------------------------'&gt;_,_.*---------------------------------------

################################################################################
IMAGE USAGE:

in this example, u'll b loading the image file included w/ this distribution,
"mario.jpg".  its a fairly large image, so u prolly want to scale it down
to 0.5 (or less):
  &gt;&gt;&gt; colortxt = asciiporn.img2txt("mario.jpg", scale = 0.5)
  &gt;&gt;&gt; print( colortxt )

  ... beautiful color image appears ^_-

  &gt;&gt;&gt; plaintxt = asciiporn.img2plaintxt("mario.jpg", scale = 0.3)
  &gt;&gt;&gt; print( plaintxt )

  ... rather plain b/w img -_-, but u can copy &amp; paste in documents ...


  @@$  !vvV*._ + !+~,_ (?  _ @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  7$$  `X g&amp;gp+`Y-L`''T(L`  w$@@$@@@@M'}r_*V@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
       - `@@@b    L   r~M[ 4Y,w'i`(~Vkr\{#4ggp@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
       (&gt; `Zfl `  '   |q&amp;@gKg]@n&gt;,Z'l lg@MW@MK@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
  '`   a   '!'   +   o=@@Z$@9MWY!&gt; ,_a@M@@$@@$M3M@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
       }   ``  ' l(LtiL@M@$#m=@1T_`Yd@@M@@$@@#$R'[MN@@@@@@@@@@@@@@@@@@@@@@@@@@@@
F}&gt;_   A&gt;' `   '    (S##WWNIAj7G!`2L$M8W$}g$jD$@``!&gt;LI#@@@@@@@@@@@@@@@@@M@@@@@@@
*)[-T  @    `      _`   ` `fw&amp;|T!v `k&amp;@M@@@@@MMhT=i ` }w@@@@@@@@@@@@@@@@@@M@@@@@
 ` ?   3   `'      `&gt;-  ',` !Yx p\gp{l  ` `  GMgM ` _`r  }$@@@@M@@@@@@@@@@@@@M@@
    '  N     `      )P '!1`  3)l@MMMWk(( Vy^a#@@@` '`)~`j!  `{#@M@M@@@@@@@@@@M@@
$j _   a   `     `' '=m=TkRga@$M` _(f3Mw-$8G##M$l  `' | ~?j_  73@@M@@@@@@@@@MM@@
@W@@p JV  '         `ilfETjJJ3^'~dWguliI_W@&amp;A&amp;M@  ' '_'   -Jt&gt; , @M@@@MM@@@M@@$@
g@@@@p `          '   (s(_r_\ `  gbMwMp\[Wq&amp;&amp;#@@Mg#g$yj,` \~=L  ,_ @@M@@@@@@@@@@
@M@@@@b   ``      ` ' 'yew#|-3V]EAMM@&amp;$ 'AV3Zw##@@@$$@@Wy{ Lyj     '  fM@@@@M@@@
@MM@@@@p  g    `     /#f_ '7t`{y~!=&gt;7N]L}mty&amp;@M@MI&amp;k@A@$AM#@@M'- _    ,_,_@@$!(I
@@@@@@@@@&amp;#    '_ptL^=fv~--y_|'_(x/'LCeS@@&amp;W&amp;W]YT)[c\)7fWM&amp;m``AD!  r~Y}'7#'LGM$
@$@M@@@@@@@&amp;_ (WVM7]'!'`! `` T&gt;`-YS   r',J `'``(`i3'=,-` [R}@#Mgg_g@&amp;p*'__Q7MAW@
@@$@@M@@@@@@M(?&gt;vnj`|`r`_ `_``! _v+` ' z ' `t~x~-(7}?_,-' ]}OMM@@M@$@@ `&amp;@#)UX6#
M@WZ%w@@@M@@Mh~rt'+-i)=`''`v `'`~'i&gt;|'  &gt; oC|`)'rvn^'(_ !WTn[M@@M@@@$ `$@$posZ'
@MMM@@@@@@&amp;@@ _C= -`!` ^`?` t&amp;Ncm6'`!  &gt; i&gt;`'_-'T!rV' ' [W`{\&amp;$  N@$ }@@@#gqa_
jcRf#@@@$@@@R`Y   -_'t'?`'i Y|=MT+&gt;l` 1`` Y'r `'J'  _' `  RE~i'@~ ]&amp;@p#@$A#@W&amp;M
&amp;M@m&amp;@@@$@@W' `_@*`_'r'Lj|`LL'rYicJqp &amp;L`' `_| -''  /_'   _]=`\ggp ]FW$$R&amp;y@MM@#
@@@M@@@@@@@&amp; (g$Y '+`-!r~r'iT(^?~3@pAF`'l'` `_    |Vr   'T{@M@M@K''sh{=AW$M@@$
MM@@$@@@M@$#(y@w@me=k`''7,j|cnq#M@x!E@M$gg```&gt;r``_ )'iLL    fM@@@@B+`~i=WV9M@#MM
#M@M$$@MM@#DVM#$@%#F=&amp;r&gt;!(L(3jA@&amp;$c@@MMZ{I  '&gt; '` L!`tn(`_`  i##$@@$ ~_wy&amp;@$@#WE
MMPMPl``jQ@]kYIM@M'(#@P=?_='&gt;\##MF|@@M@MM'`' r '&gt;!~7i7ry+!_   '3@&amp;$MM&amp;N@@M@@@M@B
     ( ryo@Ew`*T'w`&gt;b@]`S]ij-=(^--'`tZAL    - ! Ts('~ oVc_`    3@M@M@Z}&amp;@@@@@@@&amp;
 ' ' ''`' &gt;`iF`_W9`_ccvJt??-sfYXC]! !k#@     ,,?S,riv/v}^!`    A#@@#N$@@M@@$@W&amp;M
 _!   ` '   '``'lTx'_' 2j-w(7zLL'&gt;_''&amp;3`,  J  \`yr  _=Avs`i@$e@@@@$RR$@@MM@]g&amp;&amp;
` r`   `   ~E@apg| `i-t1?L,-}+T_|r\   i?`E    ` +T'`(i^Ss_Ti;`V$M@@M!'J@#&amp;@@@M@M
i|`       ' #AM@@W  F`j+'{Li'viyr|    _dk l`r  ,!i| ``'==[j=&amp;&amp;@@MM_}C '  'q@W##
 -   `  ' ''`(qw#  &gt;_'7 !r~'k|'Y|/_`L `  `  &gt;`|t r+  `_`+'PFj@$@#@'_$#L  !-|Y&amp;G$
 `    (     a@WMh3_L'_'+'~yrf|?S)uX`l&gt;     !  ` )!\!\     '__@@@@}pQWWR    !!@@$
 '     g_   /#$@R``v &gt;( ``T`|_i)p`j''     !` _ (v(iJr ' *`__#B@@W@@RWI1     '(M@
 ` ` ' @@B    @W`T|j!' `(^`r|jj[w-^&gt;    i `'_ |( \Yx`, _'i@&amp;M@N$WWW#Mf      `d@
 `     P$]k   }B'`,&gt;(\ -`x)!\??' t  `       '''`? i~'_`JsC*Z@@@$$@#@j'    `   tY


actually, the plaintxt prolly won't look well when pasted,
b/c most document readers invert the color:
  &gt;&gt;&gt; plaintxt = asciiporn.img2plaintxt('mario.jpg', scale = 0.3, invert = True)
  &gt;&gt;&gt; print( plaintxt )

  ... b/w img w/ colors inverted.  may look funny now :/
      but it'll b normal when pasted in document


@@   @$Mb$RM$M&amp;$NM#@@@@$@#@M@*           _,
@@ggg@@$@#F`'@@$#M&amp;Wg&amp;MNM@@@$P_ ____  yNWMMMg_
M@@@@@@W$M   }@@M@NMM$&amp;$6M@$AMR#@M#@&amp;&amp;$&amp;qjE'f4_
M@@M@@M$$@&amp;gp@@@@@&amp;@@&amp;$#`''@Pk&amp;$$E&amp;#@#$#'''  TL
M@@@@@@k$@&amp;$M$MM$$@@@$w `^t [Y]dMQ&amp;@MP`      iJ&amp;_
@@@@@M@b@@MM$@@@@@@@BMhs ___i==]#W@#Bv    ((_' =]m_,
[I}M@@@U#@MM&amp;M@@M@@W$ggg}l[Nhg@VM@&amp;Mt~/i=&gt;J(uaj!M&amp;ABAw,
&amp;#k${@@1@@@@@@@@@@@@@@MM@M@mjkNFN@@@M{,pyZj,_``@A&amp;M#N&amp;&amp;p
@M&amp;$&amp;&amp;@{&amp;@@$@@@&amp;M@&amp;M@@@@M@MMM@@$@W#@h@M$@M@@@# '(@@@#@M$&amp;Ma__
@@$M@M@y$M@@@$@@@@&amp;@M@MMMM#$AE]M@__,L#@@MWGFE_  wM@@NM@#$BN@@py             '
{M@M@@@f#@@#M@@@@M$#M)[EEr}$Xy=j&amp;##M%Wg=X=&amp;YA  a@@@@M@#$gMWM@AMw
|&gt;  M@@eM@M@@M@M@@@@@b#$4g#&amp;#p@$$$'(}gB@#j*PC`( @M@B@@&amp;@#&amp;V$@@$M#y}
'    3$@@@@@@@@@@@@$@@@$@@MM@@#@@]GgD'}WgFc'`j; '`'`rh@M@&amp;M@{$@$&amp;&amp;#E
      @M@@@@@@@@@@@@@@Mp$p[gWWHjtg)x&gt;^k@&amp;aw#=r    (i _ O@@$MMw&amp;M@@$$B@Mg_``
       #M@M@@@@@@@@@M$Hg&amp;&amp;&amp;@#M]W&amp;A6Mbmj@PyA@7   _A=AkMK&gt;+,/._qNM@M@@MMMMW&amp;1_w#MM
    '    `J$@@@@#$[&amp;#@mNgAM$@MMMW&amp;&amp;&amp;#$@mPs]'fTg#k#kbR@GpWt[/Y@@k}M@#M]kqM$j&amp;$)cE
            @M@$@T##M&amp;##@@$&amp;@@#WWWW@@@@$@{@@M$##MMNN$#&amp;&amp;@bkzu]'*J@' 'U$gM@NU'yJ
 s          dM=#@$@###&amp;@&amp;$@@M&amp;#$@&amp;@WW@$WM@@@W@W@@M%$MN@@@$d&amp;ju+  `    M$' `@AWR)
  _w*)  `   -g@$@NdW@@N@@$@@w#M@#@M&amp;MM@B@$##M@@MM@$@MHN@@@1@$=&gt;r _,'((@$  `@WWMM
 _ '`_   '  \MW&amp;##RWgM&amp;@@@@&amp;&amp;$Wj3W#&amp;@@MM##MM@WW@MWQMW%@@M@gQ%]E(HM@b ~MM' _-')(@
rRLPk`   ' iZ&amp;@&amp;$@M##&amp;&amp;NM@W#WN@u$MAMW&amp;MMM@$@@M@$@@@$W&amp;@@@MWYA$#}_@@@`_E(t2=` ''X
```''`      #@@@R@B]WM@#$@@@MWWA@8@W#@(@WW@W$$&amp;%%&amp;#@&amp;M@#@@WV9MM&amp;rU$[lgR-g#J' `&gt;#
  '        X$@Fiw@&amp;&amp;M@gMN@@@#M8BM&amp;WWY$7@MMMM$M#$@@@MM@@M@@&amp;$I'    &amp;g&amp;$=y#V
         r_3@k='_f$5gMMNMM@MbQR'i0&amp;$=(`FPf@@M@#M@@@@####@@@@1'  ` `@@@k$E7\ ' '_
 '   q __R*@W{' `'lgP[&amp;&amp;9&amp;#G@M_` _$R'&gt;)~#y@$&amp;MM@$@@$&amp;#M#&amp;MMM@p_'   &gt;&amp;M&amp;ML'`   L#
1gpgyM##j&amp; $]WW-@M!j]@@@@#@#1p_yWb+''!jN@@@@@W@M&amp;$$R@A@M@$@@&amp;^    f['&gt;( `'  C[
@@@@$M@MNMgpa@AM$&amp;&amp;#wyQ@N#N@W#@@#g#@UEaQ@@N$@@##A@WW@M&amp;&amp;$A@M@$@W     =n'_   `7`T
@#W@&amp;&amp;g@M@@&amp;M@W@R#@M@MMW$e@@MAM@&amp;MA@[jbC@@@M@B@@9M$@WW#MW#@&amp;@@$&gt;` ` _=+!   '  '=
B#$@@@M@@M$@MM@@Wg#MM@&amp;&amp;[$%#2&amp;$#MM&amp;$W$Wy&amp;&amp;M@$#M#@AWM@9NIN@@MR1N    '_'k|`   ~?i+
&amp;$#@M@@@M@@$@u]$MN@&amp;@@@@#ggNBW@Wwq#@$&amp;@@@AM@@@@@@M&amp;$M@@k&amp;XMMN&amp;|  }M@ggp`( ' `}
@@&amp;&amp;@@@@M@&amp;@g;?J @&amp;@&amp;E$$#@@@@@@WWMM@@@@MyVM@$&amp;M@M&amp;@@@@WWp4E@y7     &amp;f#@@#@M#j++`
M&amp;&amp;@M@@@@@M@$$m?S@&amp;AW@W&amp;@@#M8WM&amp;@&amp;9$#&amp;@M@MM@@@&amp;#$&amp;M#MM&amp;M@Aq4#-' ` g#(C@@@&amp;@$yL(A
M@#@@@#$$@@@B]-,#&amp;%p@@W@M@@#@&amp;M&amp;#MM@$@@@@@@@M@@@@M&amp;@W@@M@WW@$_    ]IvbmMMM@@@bJr
@@M@@@$c@@M@$p  3@B$$@N##bM$@$ad&amp;&amp;&amp;@@@@@$M$M@@MM@MW$@@@@$$##\    +^wJ-w@@@@@$#]T
@@@M@@@i_[@@@M&gt;'W}@W@@#&amp;@w#WM@X@@$@@M@@@$@#@@@M@@@M$MkM@M$]k`' Jm4F_lyg@@@@@@#b?
@&amp;@$@#$aKj@@@@E2###W@@@N&amp;M@$@@@@&amp;#@@@M@@@$@M@W##&amp;@gg@#@MW#AA   !z'~]Zg&amp;@$MMM@@@W

################################################################################
RECENT CHANGELOG:
20090103
  rewrote 3d plotter
  fixed more 64bit issues
20081123
  fixed bug where 64bit  gets truncated to 32 on 32bit machine
  256 color support
20081119
  fixed bugs in setup.py</description>
<homepage rdf:resource="http://pypi.python.org/pypi/asciiporn" />
<maintainer><foaf:Person><foaf:name>kai zhu</foaf:name>
<foaf:mbox_sha1sum>387f5eabb8bb30f5be0e081bc79c5a417e01ada4</foaf:mbox_sha1sum></foaf:Person></maintainer>
<release><Version><revision>2009.01.03</revision></Version></release>
</Project></rdf:RDF>