move unmaintained files into outdated folder
If an old port is resurrected to work with current version code, its files can be relocated to the appropriate sys or win folder as required. In the meantime, the burden of upkeep can be avoided for the stuff in the outdated folder for now.
This commit is contained in:
1
outdated/win/gem/.gitattributes
vendored
Normal file
1
outdated/win/gem/.gitattributes
vendored
Normal file
@@ -0,0 +1 @@
|
||||
* NH_filestag=(file%s_for_GEM_versions_-_untested_for_3.7)
|
||||
40
outdated/win/gem/Install.gem
Normal file
40
outdated/win/gem/Install.gem
Normal file
@@ -0,0 +1,40 @@
|
||||
$NHDT-Date$ $NHDT-Branch$:$NHDT-Revision$
|
||||
|
||||
Hi,
|
||||
|
||||
This is nethack3.5.0 for Atari Gem and tty
|
||||
Windowing System.
|
||||
|
||||
It is by far not complete or perfect.
|
||||
(My english too :-))
|
||||
|
||||
You need at least 2Meg free RAM, 16 colors and
|
||||
3 Meg free Disk space.
|
||||
In fact it works also with monochrome, but you
|
||||
have to create a nh2.img (and title2.img) on your own.
|
||||
|
||||
Atari windowport changes from 3.3.0:
|
||||
added a ASCII-Mode in GEM -> F2
|
||||
the cursor is switchable -> F3
|
||||
added inventory/menu search -> :
|
||||
removed the redraw problem
|
||||
removed almost all flicker (except with NOVA-Card :-()
|
||||
placed the GEM-dialogues more pleasent
|
||||
tty corner windows (i.e. inv) display now correct in a vt52-win
|
||||
greyed out old messages
|
||||
placed the GEM-windows more convient
|
||||
...
|
||||
|
||||
Feel free to contact me about Issues and Errors.
|
||||
e-mail: gaston@cs.tu-berlin.de
|
||||
|
||||
You use this program at your own risk, I can't
|
||||
guarantee it will work or do you no harm.
|
||||
|
||||
Look at the nethack licence too.
|
||||
|
||||
As you may have noticed the look and feel is from
|
||||
Warwick Allisons nethack3.1.3d Gem Version
|
||||
and I have used E_Gem2.2.0 from Christian Grunenberg.
|
||||
|
||||
Marvin
|
||||
338
outdated/win/gem/bitmfile.c
Normal file
338
outdated/win/gem/bitmfile.c
Normal file
@@ -0,0 +1,338 @@
|
||||
/****************************\
|
||||
* Bitmap mit Farbtabelle als *
|
||||
* Graphik-Datei speichern *
|
||||
* Autor: Gabriel Schmidt *
|
||||
* (c) 1992 by MAXON-Computer *
|
||||
* Modifiziert von Sebastian *
|
||||
* Bieber, Dez. 1994 *
|
||||
* -> Programmcode *
|
||||
\****************************/
|
||||
/*
|
||||
* $NHDT-Date: 1432512809 2015/05/25 00:13:29 $ $NHDT-Branch: master $:$NHDT-Revision: 1.4 $
|
||||
*/
|
||||
|
||||
#include <errno.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <fcntl.h>
|
||||
#include <unistd.h>
|
||||
|
||||
#include "bitmfile.h"
|
||||
|
||||
/* --- (X) IMG-Implementation ----------------- */
|
||||
|
||||
#define IMG_COMPRESSED
|
||||
|
||||
typedef struct {
|
||||
UWORD img_version;
|
||||
UWORD img_headlen;
|
||||
UWORD img_nplanes;
|
||||
UWORD img_patlen;
|
||||
UWORD img_pixw;
|
||||
UWORD img_pixh;
|
||||
UWORD img_w;
|
||||
UWORD img_h;
|
||||
} IMG_HEADER;
|
||||
|
||||
typedef enum { NONE, SOLID0, SOLID1, PATRUN, BITSTR } IMG_MODE;
|
||||
|
||||
typedef UBYTE IMG_SOLID;
|
||||
|
||||
typedef enum { RGB = 0, CMY = 1, Pantone = 2 } XIMG_COLMODEL;
|
||||
|
||||
typedef struct {
|
||||
ULONG img_ximg;
|
||||
XIMG_COLMODEL img_colmodel;
|
||||
} XIMG_HEADER;
|
||||
|
||||
typedef struct RGB XIMG_RGB;
|
||||
|
||||
int
|
||||
bitmap_to_img(FILE_TYP typ, int ww, int wh, unsigned int pixw,
|
||||
unsigned int pixh, unsigned int planes, unsigned int colors,
|
||||
const char *filename,
|
||||
void (*get_color)(unsigned int colind, struct RGB *rgb),
|
||||
void (*get_pixel)(int x, int y, unsigned int *colind))
|
||||
{
|
||||
int file, error, cnt;
|
||||
IMG_HEADER header;
|
||||
XIMG_HEADER xheader;
|
||||
XIMG_RGB xrgb;
|
||||
IMG_MODE mode;
|
||||
UBYTE *line_buf, *write_buf;
|
||||
register UBYTE *startpnt, *bufpnt;
|
||||
unsigned int colind, line_len, line, bit;
|
||||
register unsigned int byte;
|
||||
register UBYTE count;
|
||||
|
||||
/* fill in (X) IMG-Header */
|
||||
|
||||
header.img_version = 1;
|
||||
header.img_headlen = (UWORD) sizeof(header) / 2;
|
||||
if (typ == XIMG)
|
||||
header.img_headlen +=
|
||||
(UWORD)(sizeof(xheader) + colors * sizeof(xrgb)) / 2;
|
||||
|
||||
header.img_nplanes = planes;
|
||||
header.img_patlen = 2;
|
||||
header.img_pixw = pixw;
|
||||
header.img_pixh = pixh;
|
||||
header.img_w = ww;
|
||||
header.img_h = wh;
|
||||
|
||||
xheader.img_ximg = XIMG_MAGIC;
|
||||
xheader.img_colmodel = RGB;
|
||||
|
||||
/* calculate linelength, allocate buffer. */
|
||||
|
||||
line_len = (ww + 7) / 8;
|
||||
|
||||
line_buf = malloc((size_t) planes * line_len);
|
||||
if (line_buf == NULL)
|
||||
return (ENOMEM);
|
||||
|
||||
/* Worst case: the bufferd line could grow to max. 3 times the length */
|
||||
/* of the original!
|
||||
*/
|
||||
|
||||
write_buf = malloc((size_t) 3 * line_len);
|
||||
if (write_buf == NULL) {
|
||||
free(line_buf);
|
||||
return (ENOMEM);
|
||||
};
|
||||
|
||||
/* open file */
|
||||
|
||||
file = open(filename, O_WRONLY | O_CREAT | O_TRUNC);
|
||||
if (file < 0) {
|
||||
error = errno;
|
||||
free(line_buf);
|
||||
free(write_buf);
|
||||
return (error);
|
||||
};
|
||||
|
||||
/* write Header */
|
||||
|
||||
if (write(file, &header, sizeof(header)) != sizeof(header)
|
||||
|| (typ == XIMG
|
||||
&& write(file, &xheader, sizeof(xheader)) != sizeof(xheader))) {
|
||||
error = errno;
|
||||
close(file);
|
||||
free(line_buf);
|
||||
free(write_buf);
|
||||
return (error);
|
||||
};
|
||||
|
||||
/* save the colortable if possible */
|
||||
|
||||
if (typ == XIMG)
|
||||
for (cnt = 0; cnt < colors; cnt++) {
|
||||
get_color(cnt, &xrgb);
|
||||
if (write(file, &xrgb, sizeof(xrgb)) != sizeof(xrgb)) {
|
||||
error = errno;
|
||||
close(file);
|
||||
free(line_buf);
|
||||
free(write_buf);
|
||||
return (error);
|
||||
};
|
||||
};
|
||||
|
||||
/* And now line by line ... */
|
||||
|
||||
for (line = 0; line < wh; line++) {
|
||||
/* get pixel, split it up and */
|
||||
/* store it as planes in buffer */
|
||||
|
||||
for (byte = 0; byte < line_len; byte++) {
|
||||
for (cnt = 0; cnt < planes; cnt++)
|
||||
line_buf[cnt * line_len + byte] = 0x00;
|
||||
|
||||
for (bit = 0; bit < 8; bit++) {
|
||||
if (8 * byte + bit < ww)
|
||||
get_pixel(8 * byte + bit, line, &colind);
|
||||
|
||||
for (cnt = 0; cnt < planes; cnt++) {
|
||||
line_buf[cnt * line_len + byte] <<= 1;
|
||||
line_buf[cnt * line_len + byte] |= colind & 0x01;
|
||||
colind >>= 1;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* compress bitstrings in buffer */
|
||||
/* and write it to file */
|
||||
|
||||
for (cnt = 0; cnt < planes; cnt++) {
|
||||
/* Bitstringpointer to start of plane */
|
||||
|
||||
startpnt = &line_buf[cnt * line_len];
|
||||
bufpnt = write_buf;
|
||||
|
||||
while (startpnt < &line_buf[(cnt + 1) * line_len]) {
|
||||
/*********************************************/
|
||||
/* Which _new_ compression-mode "fits" the */
|
||||
/* the current byte?
|
||||
*/
|
||||
/* Note: the compressing modes get choosen */
|
||||
/* "positive". The non compressing BITSTR- */
|
||||
/* mode is choosen only if nothing else */
|
||||
/* "fits" ...
|
||||
*/
|
||||
/*********************************************/
|
||||
|
||||
switch (*startpnt) {
|
||||
case 0x00:
|
||||
mode = SOLID0;
|
||||
break;
|
||||
case 0xFF:
|
||||
mode = SOLID1;
|
||||
break;
|
||||
default:
|
||||
if (startpnt < &line_buf[(cnt + 1) * line_len - 3]
|
||||
&& *(startpnt) == *(startpnt + 2)
|
||||
&& *(startpnt + 1) == *(startpnt + 3))
|
||||
mode = PATRUN;
|
||||
else
|
||||
mode = BITSTR;
|
||||
};
|
||||
|
||||
/************************************************/
|
||||
/* The mode is choosen, now work with it.
|
||||
*/
|
||||
/* The compressing modi stay current as long as */
|
||||
/* possible.
|
||||
*/
|
||||
/************************************************/
|
||||
|
||||
count = 0;
|
||||
|
||||
switch (mode) {
|
||||
case SOLID0:
|
||||
while ((startpnt < &line_buf[(cnt + 1) * line_len])
|
||||
&& (*(startpnt) == 0x00) && (count < 0x7F)) {
|
||||
startpnt++;
|
||||
count++;
|
||||
};
|
||||
*(bufpnt++) = count;
|
||||
break;
|
||||
|
||||
case SOLID1:
|
||||
while ((startpnt < &line_buf[(cnt + 1) * line_len])
|
||||
&& (*(startpnt) == 0xFF) && (count < 0x7F)) {
|
||||
startpnt++;
|
||||
count++;
|
||||
};
|
||||
*(bufpnt++) = 0x80 | count;
|
||||
break;
|
||||
|
||||
case PATRUN:
|
||||
*(bufpnt++) = 0x00;
|
||||
startpnt += 2;
|
||||
count = 1;
|
||||
while (startpnt < &line_buf[(cnt + 1) * line_len - 1]
|
||||
&& *(startpnt) == *(startpnt - 2)
|
||||
&& *(startpnt + 1) == *(startpnt - 1)
|
||||
&& (count < 0xFF)) {
|
||||
count++;
|
||||
startpnt += 2;
|
||||
};
|
||||
*(bufpnt++) = count;
|
||||
*(bufpnt++) = *(startpnt - 2);
|
||||
*(bufpnt++) = *(startpnt - 1);
|
||||
break;
|
||||
|
||||
/************************************************/
|
||||
/* The while Condition is ment as follows: */
|
||||
/* */
|
||||
/* while ( NOT(2-Byte-Solidrun possible) &&
|
||||
*/
|
||||
/* NOT(6-Byte-Patternrun possible) &&
|
||||
*/
|
||||
/* count < 0xFF
|
||||
* && */
|
||||
/* still Bytes remaining )
|
||||
*/
|
||||
/* */
|
||||
/* As soon as a _compressing_ alternative shows */
|
||||
/* up, BITSTR gets cancelled!
|
||||
*/
|
||||
/************************************************/
|
||||
|
||||
case BITSTR:
|
||||
*(bufpnt++) = 0x80;
|
||||
while (!(((startpnt + count)
|
||||
< &line_buf[(cnt + 1) * line_len - 1])
|
||||
&& (((*(startpnt + count) == 0xFF)
|
||||
&& (*(startpnt + count + 1) == 0xFF))
|
||||
|| ((*(startpnt + count) == 0x00)
|
||||
&& (*(startpnt + count + 1) == 0x00))))
|
||||
&& !(((startpnt + count)
|
||||
< &line_buf[(cnt + 1) * line_len - 5])
|
||||
&& (*(startpnt + count)
|
||||
== *(startpnt + count + 2))
|
||||
&& (*(startpnt + count + 1)
|
||||
== *(startpnt + count + 3))
|
||||
&& (*(startpnt + count)
|
||||
== *(startpnt + count + 4))
|
||||
&& (*(startpnt + count + 1)
|
||||
== *(startpnt + count + 5)))
|
||||
&& (count < 0xFF)
|
||||
&& ((startpnt + count)
|
||||
< &line_buf[(cnt + 1) * line_len]))
|
||||
count++;
|
||||
*(bufpnt++) = count;
|
||||
for (; count > 0; count--)
|
||||
*(bufpnt++) = *(startpnt++);
|
||||
break;
|
||||
};
|
||||
};
|
||||
|
||||
if (write(file, write_buf, bufpnt - write_buf)
|
||||
!= (bufpnt - write_buf)) {
|
||||
error = errno;
|
||||
close(file);
|
||||
free(line_buf);
|
||||
free(write_buf);
|
||||
return (error);
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/*close file, free buffer. */
|
||||
|
||||
close(file);
|
||||
free(line_buf);
|
||||
free(write_buf);
|
||||
return (0);
|
||||
}
|
||||
|
||||
/*---filetype-dispatcher--------------------*/
|
||||
|
||||
const char *
|
||||
get_file_ext(FILE_TYP typ)
|
||||
{
|
||||
switch (typ) {
|
||||
case IMG:
|
||||
case XIMG:
|
||||
return ("IMG");
|
||||
default:
|
||||
return ("");
|
||||
};
|
||||
}
|
||||
|
||||
int
|
||||
bitmap_to_file(FILE_TYP typ, int ww, int wh, unsigned int pwx,
|
||||
unsigned int pwy, unsigned int planes, unsigned int colors,
|
||||
const char *filename,
|
||||
void (*get_color)(unsigned int colind, struct RGB *rgb),
|
||||
void (*get_pixel)(int x, int y, unsigned int *colind))
|
||||
{
|
||||
switch (typ) {
|
||||
case IMG:
|
||||
case XIMG:
|
||||
return (bitmap_to_img(typ, ww, wh, pwx, pwy, planes, colors, filename,
|
||||
get_color, get_pixel));
|
||||
default:
|
||||
return (-1);
|
||||
};
|
||||
}
|
||||
230
outdated/win/gem/gem_rsc.uu
Normal file
230
outdated/win/gem/gem_rsc.uu
Normal file
@@ -0,0 +1,230 @@
|
||||
begin 777 GEM_RSC.RSC
|
||||
M $29@^Z$B(/N@^Z #0)&@^Z)]X Y0 , !8 @ "@.
|
||||
M "!.151(04-+ "!'86UE "!(97)E "!4:&5R90 @271E;0 @07!P
|
||||
M87)E; @36%G:6, ("!!8F]U="!.971H86-K+BXN "TM+2TM+2TM+2TM+2TM
|
||||
M+2TM+2TM+2T ("!$97-K($%C8V5S<V]R>2 Q(" ("!$97-K($%C8V5S<V]R
|
||||
M>2 R(" ("!$97-K($%C8V5S<V]R>2 S(" ("!$97-K($%C8V5S<V]R>2 T
|
||||
M(" ("!$97-K($%C8V5S<V]R>2 U(" ("!$97-K($%C8V5S<V]R>2 V("
|
||||
M("!(96QP+BXN(" @(" @(" @/P @(%=H870@:7,N+BX@(" @(" O " @0V]M
|
||||
M;6%N9"!H96QP+BXN("8 +2TM+2TM+2TM+2TM+2TM+2TM+2TM " @3W!T:6]N
|
||||
M<RXN+B @(" @($\ ("!$:7-C;W9E<GD@;6]D92 @6 M+2TM+2TM+2TM+2TM
|
||||
M+2TM+2TM+2T ("!3879E("8@475I=" @(" @4P M+2TM+2TM+2TM+2TM+2TM
|
||||
M+2TM+2T ("!1=6ET(" @(" @(" @(" %<0 @(%)E<W0@(" @(" @(" @("X
|
||||
M("!,;V]K(&1O=VX@(" @(" Z " @1V5T(" @(" @(" @(" @+ @(%-I=" @
|
||||
M(" @(" @(" @!7, ("!7:7!E(&9A8V4@(" @( 5W " @57-E(&%B:6QI='D@
|
||||
M(" %;0 @(%!A>2!S:&]P(" @(" @(' +2TM+2TM+2TM+2TM+2TM+2TM+2T
|
||||
M("!5<" @(" @(" @(" @(" \ " @1&]W;B @(" @(" @(" @/@ M+2TM+2TM
|
||||
M+2TM+2TM+2TM+2TM+0 @($9O<F-E(&QO8VL@(" @!68 ("!,;V]T(&)O>" @
|
||||
M(" @( 5L " @16YG<F%V92!F;&]O<B @10 @($%G86EN(" @("!>00 M+2TM
|
||||
M+2TM+2TM+2TM+2TM " @3&]O:R!A=" @(" [ " @4V5A<F-H(" @("!S " @
|
||||
M3W!E;B @(" @("!O " @0VQO<V4@(" @("!C " @2VEC:R @(" @(%Y$ " @
|
||||
M56YT<F%P(" @( 5U " @06)O=70@=')A<"!> " @2G5M<" @(" @( 5J " @
|
||||
M0VAA=" @(" @( 5C " @1FEG:'0@(" @("!& " @4VAO=R!A;&P@(" @("!I
|
||||
M " @4VAO=R!K:6YD(" @("!) " @1&ES8V]V97)I97,@("!< "TM+2TM+2TM
|
||||
M+2TM+2TM+2TM+2T ("!%870@(" @(" @(" @(&4 ("!$<FEN:R @(" @(" @
|
||||
M('$ ("!!<'!L>2 @(" @(" @(&$ ("!5<V5D('1O;VQS(" @("@ ("!0<F]J
|
||||
M96-T:6QE(" @('0 ("!$<F]P(" @(" @(" @(&0 ("!$<F]P(&MI;F0@(" @
|
||||
M($0 ("!$:7 @(" @(" @(" @!60 +2TM+2TM+2TM+2TM+2TM+2TM+0 @($YA
|
||||
M;64@:71E;2 @(" %3@ @($YA;64@;6]N<W1E<B @0P @(%=I96QD('=E87!O
|
||||
M;B @(" @=P @(%-W:71C:"!W96%P;VYS(" @> @($9I;&P@<75I=F5R(" @
|
||||
M(" @40 @($9I<F4@*'%U:79E<BD@(" @9@ @(%-H;W<@=V5A<&]N(" @(" @
|
||||
M*0 @($5N:&%N8V4@<VMI;&P@(" %90 M+2TM+2TM+2TM+2TM+2TM+2TM+2TM
|
||||
M " @5V5A<B!A<FUO=7(@(" @("!7 " @4F5M;W9E(&%R;6]U<B @("!4 " @
|
||||
M4F5M;W9E(&%L;" @(" @("!! " @5V]R;B!A<FUO<B @(" @("!; "TM+2TM
|
||||
M+2TM+2TM+2TM+2TM+2TM+2T ("!796%R(&%C8V5S<V]R>2 @(% ("!296UO
|
||||
M=F4@86-C97-S;W)Y(%( ("!7;W)N(')I;F=S(" @(" @(#T ("!7;W)N(&%M
|
||||
M=6QE=" @(" @("( ("!,:7-T('-P96QL<R @*P M+2TM+2TM+2TM+2TM+2TM
|
||||
M+2T ("!:87 @=V%N9" @(" @>@ @($-A<W0@<W!E;&P@("!: " @4F5A9" @
|
||||
M(" @(" @('( ("!1=6%F9B @(" @(" @<0 @(%1E;&5P;W)T(" @(%Y4 " @
|
||||
M26YV;VME(" @(" @!6D ("!4=7)N('5N9&5A9" %= @(%!R87D@(" @(" @
|
||||
M( 5P " @4V%C<FEF:6-E(" @!6\ ("!2=6(@;&%M<" @(" %<@!/2P 3F5T
|
||||
M2&%C:P!#;W!Y<FEG:'0@O2 Q.3@U+3(P,# 4W1I8VAT:6YG($UA=&AE;6%T
|
||||
M:7-C:"!#96YT<G5M &%N9"!-+B!3=&5P:&5N<V]N %-E92!L:6-E;G-E(&9O
|
||||
M<B!D971A:6QS+@!'14T@26YT97)F86-E(&)Y($-H<FES=&EA;B!"<F5S<VQE
|
||||
M<B!W:71H($4M1V5M 0V]N=&%C=#H@9V%S=&]N0&-S+G1U+6)E<FQI;BYD
|
||||
M90 $-A;F-E; !;4')O;7!T70 #\ /P _ #\ /P _ #\ /P _ #\ /P _
|
||||
M #\ /P _ #\ /P _ #\ /P _ #\ /P _ #\ /P! $-H;VEC93H@7P!8 $]+
|
||||
M #DY.3D 0V]U;G0Z(%]?7U\ .0!/2P!;4')O;7!T70 $! 0$! 0$! 0$!
|
||||
M0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$! 0$! %]?
|
||||
M7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?7U]?
|
||||
M7U]?7U]? %@ 0V%N8V5L $]+ #$ R ,P #0 U -@ #<
|
||||
M X .0 $1/5TX@/@ %50(#P !7:&\@87)T('1H;W4L('1R879E
|
||||
M;&QE<C\ ! 0$! 0$! 0$! %]?7U]?7U]?7U\ 6 !/2P "A024-455)%
|
||||
M($E.(#8T,'@T.# @34]$15,I 36]R90!.151(04-+ /[___________\
|
||||
M____________ /___________P#___________\ X ' .
|
||||
M !P#@ < X ' . !P#@ <
|
||||
MX 0 " ' . & !@ !P#@ !X !X < X'P3X ?R#X' .!$$#^#
|
||||
M\ @B!P#@;! _@ (-@< X#@0 "!P' . H$ @4!P#@.! (' <
|
||||
MX"@0 "!0' . X$ @<!P#@*! (% < X?\0" ("/^' ./_D!P(
|
||||
M' G_QP#B.) >'#P)'$< X#@0/YS^"!P' . X$#_=_@@<!P#@.!!___\(' <
|
||||
MX#@0?___"!P' . X$'___P@<!P#@.!!___\(' < X#@0?___"!P' . X$#_=
|
||||
M_@@<!P#@.! _G/X(' < X#@0'AP\"!P' . X$!P<' @<!P#@.! (' @(' <
|
||||
MX#@0 !P "!P' . X$ < @<!P#@.! ' (' < X#@0 !P "!P' . X$ <
|
||||
M @<!P#@.! ' (' < X#@0 !P "!P' . X$ < @<!P#@.! % (' <
|
||||
MX#@0 !P "!P' . 0& 4 @(!P#@$ P ' 8" < X & !0 , ' . P <
|
||||
M & !P#@ & % # < X P!P!@ ' . & V P (!P#@$ P(@8 20<
|
||||
MX)( &#X, #8' .!L P & B!P#@1 & # P8< X8, P!@ "(' .!$ &
|
||||
MP V!P#@; P8 20< X)( '\ @' . 0 !P#@ <
|
||||
MX ' . !P#@ < X ' /______
|
||||
M_____P#___________\ ____________ /___________P
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M
|
||||
M \\
|
||||
M// ))"28">?GF @ !@)__^8"0 F D 59@) "8"0!5F D )@) 168"0
|
||||
MF D%!9@$@ $X!($5, 2 3 "0%9P D "8 $@5. D G $A3@ D)P $DX
|
||||
M F< $. G ' #SP\\ \\//@/
|
||||
M___X#___^ ____@/ #X#U55^ \ /@/557X#P ^ ]55?@/ #X#U55^ >
|
||||
M ?@'U57P!X !\ /55_ #P /@ ?47X #P#\ ?5^ #P_ ??@ #_P ?X
|
||||
M #\ < '0 !V\ =P 4 !@ "$8 /__
|
||||
M "\ 0 !W$ >1 'D@ % 8 A& #__P @ $ >: 'HP !Z0
|
||||
M P & 0 __\ "0 ! 'V0 !]L ?E , !@ "$8 /__ ( "@
|
||||
M!^H ?O '^P # 8 A& #__P % P @ ("0 " H P & 0
|
||||
M __\ "0 ! ("P "$$ AW , !@ "$8 /__ #8 -@ "(, B%
|
||||
M (A@ # 8 A$ #__@ " $ B' (B0 "(H P & (1 __X
|
||||
M @ ! (BP "(T B. , !@ "$0 /_^ ( 0 "(\ B1 (D@ #
|
||||
M 8 A$ #__@ " $ B3 (E0 ")8 P & (1 __X @ ! (
|
||||
MEP ")D B: , !@ "$0 /_^ ( 0 ")L B= (G@ # 8 A$
|
||||
M #__@ " $ B? (H0 "*( P & (1 __X @ ! (HP "*4
|
||||
M BF , !@ "$0 /_^ ( 0 "*< BN (KP % 8 A& #__P '
|
||||
M $ BP (M0 "+8 !0 & (1@ __\ !0 ! (MP "- C1 ,
|
||||
M!@ "$P, /__ !D 0 "-( C= (Z # 8 I!Y #__P + L CJ
|
||||
M ([0 ".X P & (0> $ P ! ([P "0H D+ , !@ "$0$
|
||||
M /__ !L 0 "^H D: &URD 4 !( @ \Z
|
||||
M .N@ "1$0 !P " ( ! " +0 (__\ 0 * !D
|
||||
M : 9 H @ " !0 1 : ,! $ P ) !D
|
||||
M " ,@,! 3_____ " - "0,! 7_____ "
|
||||
M /0 ) !@,! ;_____ " 0P / !@,! ?_____
|
||||
M " 20 5 !P,! C_____ " 4 < !@,! G_
|
||||
M____ " 5@ B "0,! +_____ " 7P K !P,!
|
||||
M "P!< !D P$ 40 3 !0 # 3 !0 /\1 "
|
||||
M%@ ( W_____ !P 9@ %@ ! [_____ !P ( >0
|
||||
M $ %@ ! ______ !P D ( %@ ! !#_____ !P
|
||||
MI0 , %@ ! !'_____ !P N@ 0 %@ ! !+_____ !P
|
||||
M SP 4 %@ ! !/_____ !P Y 8 %@ ! O_____ !P
|
||||
M ^0 < %@ ! !\ %0 > !0 /\1 + %0 * !;_____
|
||||
M !P !#@ %0 ! !?_____ !P !(@ $ %0 ! !C_
|
||||
M____ !P !-@ ( %0 ! !G_____ !P ( !2@ , %0 !
|
||||
M !K_____ !P !8 0 %0 ! !O_____ !P != 4
|
||||
M%0 ! !S_____ !P ( !B 8 %0 ! !W_____ !P !G@
|
||||
M < %0 ! ![_____ !P ( !L@ @ %0 ! !3_____ !P !
|
||||
MR D %0 ! "X ( M !0 /\1 1 % . "'_____ !P
|
||||
M !W % ! "+_____ !P ![P $ % ! "/_____ !P
|
||||
M " @ ( % ! "3_____ !P "%0 , % ! "7_____
|
||||
M !P "* 0 % ! ";_____ !P ".P 4 % ! "?_
|
||||
M____ !P "3@ 8 % ! "C_____ !P ( "80 < % !
|
||||
M "G_____ !P "=@ @ % ! "K_____ !P "B0 D
|
||||
M% ! "O_____ !P ( "G H % ! "S_____ !P "L0
|
||||
M L % ! "W_____ !P "Q P % ! !______ !P "
|
||||
MUP T % ! #L +P Z !0 /\1 7 $ , ##_____ !P
|
||||
M "Z@ $ ! #'_____ !P ( "^0 $ $ ! #+_____ !P
|
||||
M #"@ ( $ ! #/_____ !P #&0 , $ ! #3_____
|
||||
M !P #* 0 $ ! #7_____ !P #-P 4 $ ! #;_
|
||||
M____ !P #1@ 8 $ ! #?_____ !P #50 < $ !
|
||||
M #C_____ !P #9 @ $ ! #G_____ !P #<P D
|
||||
M$ ! #K_____ !P #@@ H $ ! "[_____ !P #D0
|
||||
M L $ ! $L / !* !0 /\1 > $P / #W_____ !P #
|
||||
MH $P ! #[_____ !P #L@ $ $P ! #______ !P
|
||||
M #Q ( $P ! $#_____ !P ( #U@ , $P ! $'_____ !P
|
||||
M #Z@ 0 $P ! $+_____ !P #_ 4 $P ! $/_____
|
||||
M !P $#@ 8 $P ! $3_____ !P $( < $P ! $7_
|
||||
M____ !P $,@ @ $P ! $;_____ !P $1 D $P !
|
||||
M $?_____ !P $5@ H $P ! $C_____ !P $: L
|
||||
M$P ! $G_____ !P ( $>@ P $P ! $K_____ !P $C@
|
||||
M T $P ! #O_____ !P $H X $P ! %P 3 !; !0 /\1
|
||||
M D %@ 0 $W_____ !P $L@ %@ ! $[_____ !P
|
||||
M $QP $ %@ ! $______ !P $W ( %@ ! %#_____ !P
|
||||
M $\0 , %@ ! %'_____ !P %!@ 0 %@ ! %+_____
|
||||
M !P %&P 4 %@ ! %/_____ !P ( %, 8 %@ ! %3_
|
||||
M____ !P %1P < %@ ! %7_____ !P %7 @ %@ !
|
||||
M %;_____ !P %<0 D %@ ! %?_____ !P %A@ H
|
||||
M%@ ! %C_____ !P ( %FP L %@ ! %G_____ !P %L@
|
||||
M P %@ ! %K_____ !P %QP T %@ ! %O_____ !P %
|
||||
MW X %@ ! $O_____ !P %\0 \ %@ ! H 70!H !0
|
||||
M /\1 M $@ , %[_____ !P &!@ $@ ! %______ !P
|
||||
M ( &%P $ $@ ! &#_____ !P &*@ ( $@ ! &'_____
|
||||
M !P &.P , $@ ! &+_____ !P &3 0 $@ ! &/_
|
||||
M____ !P &70 4 $@ ! &3_____ !P &;@ 8 $@ !
|
||||
M &7_____ !P &?P < $@ ! &;_____ !P &D @
|
||||
M$@ ! &?_____ !P &H0 D $@ ! &C_____ !P &L@
|
||||
M H $@ ! %S_____ !P ( &PP L $@ !__\ 0 ! !0 1
|
||||
M 4 3P " #_____"Q0 8 $1>0 @ "__\ 0 ! !0
|
||||
M $1 " $ H 5 #_____ !D ( $A 1 , @ !__\ 0 *"Q0
|
||||
M 0 (1 # $ +@ * +_____ !H,!P &U I @$ P8! 4 P $
|
||||
M !0 /\1 0 !" #0 ' 3_____ !\ 2(@ "" !0 % +_
|
||||
M____ !P &V #" 4 !P ! ;_____ !P( &X / $ %0 !
|
||||
M ?_____ !P &]@ / , '@ ! C_____ !P '%0 / 0
|
||||
M$0 ! G_____ !P ')P / 8 & ! K_____ !4 /N@ !
|
||||
M# <$(@ ! #_____ !4 ( /U@ !" @ (0 !__\ 0 ""Q0 0 /X1
|
||||
M> ! ( 3P@6 +_____$QH,!P 'DP " !4 " ! #_____ !@ (
|
||||
M ) ( @ &3@ 4__\ 0 ["Q0 0 (1> ! $ + ) +_____ !4(
|
||||
M /\@ " $ " ! #< P U !0 $1>0 " , * @# 4 ! $
|
||||
M !H,!0 'I0 !" @ ! /_____!1D $1 0 ! <
|
||||
M!@ & !H,!0 'IP $" @ ! 7_____!1D $1 0 !
|
||||
M D " ( !H,!0 'J0 '" @ ! ?_____!1D $1
|
||||
M 0 ! L "@ * !H,!0 'JP *" @ ! G_____!1D $1
|
||||
M 0 ! T # , !H,!0 'K0 -" @ ! O_____!1D $1
|
||||
M 0 ! \ #@ . !H,!0 'KP 0" @ ! W_____!1D
|
||||
M $1 0 ! !$ $ 0 !H,!0 'L0 3" @ ! ______!1D
|
||||
M $1 0 ! !, $@ 2 !H,!0 'LP 6" @ ! !'_____
|
||||
M!1D $1 0 ! !4 % 4 !H,!0 'M0 9" @ ! !/_
|
||||
M____!1D $1 0 ! !< %@ 6 !H,!0 'MP <" @ !
|
||||
M !7_____!1D $1 0 ! !D & 8 !H,!0 'N0 ?"
|
||||
M @ ! !?_____!1D $1 0 ! !L &@ : !H,!0 'NP B
|
||||
M" @ ! !G_____!1D $1 0 ! !T ' < !H,!0 '
|
||||
MO0 E" @ ! !O_____!1D $1 0 ! !\ '@ > !H,!0
|
||||
M 'OP ! ( @ ! !W_____!1D $1 0 ! "$ ( @ !H,
|
||||
M!0 'P0 $ ( @ ! !______!1D $1 0 ! ", (@ B
|
||||
M !H,!0 'PP ' ( @ ! "'_____!1D $1 0 ! "4
|
||||
M) D !H,!0 'Q0 * ( @ ! "/_____!1D $1 0 !
|
||||
M "< )@ F !H,!0 'QP - ( @ ! "7_____!1D $1
|
||||
M 0 ! "D * H !H,!0 'R0 0 ( @ ! "?_____!1D $1
|
||||
M 0 ! "L *@ J !H,!0 'RP 3 ( @ ! "G_____!1D $1
|
||||
M 0 ! "T + L !H,!0 'S0 6 ( @ ! "O_____!1D
|
||||
M $1 0 ! "\ +@ N !H,!0 'SP 9 ( @ ! "W_____!1D
|
||||
M $1 0 ! #$ , P !H,!0 'T0 < ( @ ! "______
|
||||
M!1D $1 0 ! #, ,@ R !H,!0 'TP ? ( @ ! #'_
|
||||
M____!1D $1 0 ! #4 - T !H,!0 'U0 B ( @ !
|
||||
M #/_____!1D $1 0 ! ( -@ V !H,!0 'UP E (
|
||||
M @ ! #7_____!1D $1 0 ! #H . Y !0 $1>0 #
|
||||
M , %@ # #G_____ !X(" 0#@ ! $ "P ! #?_____ !H,!P '
|
||||
MYP - $ !P ! #O_____ !X(" 0*@ # < # ! #_____ !H,)0
|
||||
M '_0 1 < !@ !__\ 0 $"Q0( 0 (1> ! $ .P ' +_____ !4(
|
||||
M 01@ " $ -P ! /_____ !X(" 08@ " , -P ! 3_____
|
||||
M$QH$!0 (>0 # 4 " ! #_____ !H,)P (@ P 4 " !__\
|
||||
M 0 9"Q0 0 1> ( 0 # & +_____ !L 0 6> % @ !
|
||||
M /_____ !L ! 6> " ( @ ! 3_____ !L P 6> *" (
|
||||
M @ ! 7_____ !L @ 6> % 4 @ ! < !@ & !8,!0 0?@ "
|
||||
M 0 @ ! 7_____!1D $1 0 ! D " ( !8,!0 0
|
||||
MF@ % 0 @ ! ?_____!1D $1 0 ! L "@ * !8,!0
|
||||
M 0M@ ( 0 @ ! G_____!1D $1 0 ! T # , !8,
|
||||
M!0 0T@ "" ( @ ! O_____!1D $1 0 ! \ #@ .
|
||||
M !8,!0 0[@ %" ( @ ! W_____!1D $1 0 ! !$
|
||||
M$ 0 !8,!0 1"@ (" ( @ ! ______!1D $1 0 !
|
||||
M !, $@ 2 !8,!0 1)@ " $ @ ! !'_____!1D $1
|
||||
M 0 ! !4 % 4 !8,!0 10@ % $ @ ! !/_____!1D $1
|
||||
M 0 ! !< %@ 6 !8,!0 17@ ( $ @ ! !7_____!1D $1
|
||||
M 0 ! !D & 8 !8,!0 1>@ '! 4 !0P !?_____!1D
|
||||
M $1 ! 0P &@ : !8,!0 1E@ ' !0P !G_____!1D
|
||||
M( $1 ! 0P __\ 0 $ !0 1 ! 4 3P # +_____
|
||||
M !L, 0 0 6>0 @ ! /_____"Q0( $1>0 $ @ ! 3_
|
||||
M____ !L, 0 @ 6>0 ( @ ! #_____ !@ ( + " 30 #
|
||||
M__\ 0 $"Q0 0 (1>0 ! $ + @4 +_____ !4( 1L@ !
|
||||
M+ ! /_____"AX " 1S@ . !( $ ! 3_____ !8,!P 1Z@ A
|
||||
M !( "0@! #_____ !8 ( 2!@ " $ * @,__\ 0 !"Q0 $1
|
||||
M<@ # , " " #_____ !H,)P )# !" !@ !__\ 0 ! !0 0 @
|
||||
M /\1>0 " , !@ # #_____ !\ ( 21 P # 29@ '#X
|
||||
G !QN <G@ ':8 !WN CC@ ) 8 ":. G!@ )WX ">N
|
||||
end
|
||||
22
outdated/win/gem/gem_rso.uu
Normal file
22
outdated/win/gem/gem_rso.uu
Normal file
@@ -0,0 +1,22 @@
|
||||
begin 777 GEM_RSC.RSO
|
||||
M4E-/2 1( @ " ! !#__P __\
|
||||
M
|
||||
M '___^!____@
|
||||
M #__P #__P
|
||||
M
|
||||
M /_ '___^!____@ :1F]1)Y2KX@
|
||||
M (\TJP "!$U%3E4 P'1$]!0D]55 '@9$3U%5250 __\ 0 #"E-4
|
||||
M05154TQ)3D4 $*1U)!0E-405154P#__P " ,&34%05TE. !DU!4$)/
|
||||
M6 0E-05!#55)33U( __\ P #!4%"3U54 "$9,64%"3U54 !!T]+
|
||||
M04)/550 ,+3D542$%#2TE-1S __\ ! #!4Q)3D53 "$9,64Q)3D53
|
||||
M !!5%,24Y% ""4Q)3D533$E35 #__P % ,(64Y#2$])0T4 +1DQ9
|
||||
M64Y#2$])0T4 $(64Y04D]-4%0 ()4T]-14-(05)3 # UE.,0 -0-9
|
||||
M3DX #<'04Y90TA!4@ . A#2$]314Y#2 .@5#3U5.5 .P193D]+ /__
|
||||
M 8 P=,24Y%1T54 "D9,64Q)3D5'150 $(3$=04D]-4%0 ('3$=2
|
||||
M15!,60 P-13$< 0$3$=/2P#__P ' ,)1$E214-424]. #$9,641)
|
||||
M4D5#5$E/3@ !01$25(Q 5!$1)4CD !<'1$E21$]73@ &05$25)54 #_
|
||||
M_P ( ,&35-'5TE. !!55035-' ""D=204)-4T=724X ,%1$Y-4T<
|
||||
M 0(35-'3$E.15, __\ "0 #!TY!345'150 *1DQ93D%-14=%5 @90
|
||||
M3$Y!344 0.3D542$%#2U!)0U154D4 __\ "@ #!5!!1T52 "$9,65!!
|
||||
@1T52 !!E%004=%4@#__P + ,&3DA)0T]. /____\
|
||||
end
|
||||
204
outdated/win/gem/gr_rect.c
Normal file
204
outdated/win/gem/gr_rect.c
Normal file
@@ -0,0 +1,204 @@
|
||||
/* NetHack 3.6 gr_rect.c $NHDT-Date: 1432512810 2015/05/25 00:13:30 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
*/
|
||||
/* Copyright (c) Christian Bressler, 2001 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
/* This is an almost exact copy of qt_clust.cpp */
|
||||
/* gr_rect.c */
|
||||
#include <stdlib.h>
|
||||
#include <stdio.h>
|
||||
#include <limits.h>
|
||||
#include "gr_rect.h"
|
||||
dirty_rect *
|
||||
new_dirty_rect(int size)
|
||||
{
|
||||
dirty_rect *new = NULL;
|
||||
if (size > 0) {
|
||||
new = (dirty_rect *) calloc(1L, sizeof(dirty_rect));
|
||||
if (new) {
|
||||
new->rects = (GRECT *) calloc((long) size, sizeof(GRECT));
|
||||
if (new->rects == NULL) {
|
||||
free(new);
|
||||
return (NULL);
|
||||
}
|
||||
new->max = size;
|
||||
}
|
||||
}
|
||||
return (new);
|
||||
}
|
||||
void
|
||||
delete_dirty_rect(dirty_rect *this)
|
||||
{
|
||||
if (this == NULL)
|
||||
return;
|
||||
if (this->rects)
|
||||
free(this->rects);
|
||||
/* In case the Pointer is reused wrongly */
|
||||
this->rects = NULL;
|
||||
this->max = 0;
|
||||
this->used = 0;
|
||||
free(this);
|
||||
}
|
||||
static int gc_inside(GRECT *frame, GRECT *test);
|
||||
static int gc_touch(GRECT *frame, GRECT *test);
|
||||
static void gc_combine(GRECT *frame, GRECT *test);
|
||||
static long gc_area(GRECT *area);
|
||||
int
|
||||
add_dirty_rect(dirty_rect *dr, GRECT *area)
|
||||
{
|
||||
int cursor;
|
||||
long lowestcost = 9999999L;
|
||||
int cheapest = -1;
|
||||
int cheapestmerge1 = -1;
|
||||
int cheapestmerge2 = -1;
|
||||
int merge1;
|
||||
int merge2;
|
||||
for (cursor = 0; cursor < dr->used; cursor++) {
|
||||
if (gc_inside(&dr->rects[cursor], area)) {
|
||||
/* Wholly contained already. */
|
||||
return (TRUE);
|
||||
}
|
||||
}
|
||||
for (cursor = 0; cursor < dr->used; cursor++) {
|
||||
if (gc_touch(&dr->rects[cursor], area)) {
|
||||
GRECT larger = dr->rects[cursor];
|
||||
long cost;
|
||||
gc_combine(&larger, area);
|
||||
cost = gc_area(&larger) - gc_area(&dr->rects[cursor]);
|
||||
if (cost < lowestcost) {
|
||||
int bad = FALSE, c;
|
||||
for (c = 0; c < dr->used && !bad; c++) {
|
||||
bad = gc_touch(&dr->rects[c], &larger) && c != cursor;
|
||||
}
|
||||
if (!bad) {
|
||||
cheapest = cursor;
|
||||
lowestcost = cost;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cheapest >= 0) {
|
||||
gc_combine(&dr->rects[cheapest], area);
|
||||
return (TRUE);
|
||||
}
|
||||
if (dr->used < dr->max) {
|
||||
dr->rects[dr->used++] = *area;
|
||||
return (TRUE);
|
||||
}
|
||||
// Do cheapest of:
|
||||
// add to closest cluster
|
||||
// do cheapest cluster merge, add to new cluster
|
||||
lowestcost = 9999999L;
|
||||
cheapest = -1;
|
||||
for (cursor = 0; cursor < dr->used; cursor++) {
|
||||
GRECT larger = dr->rects[cursor];
|
||||
long cost;
|
||||
gc_combine(&larger, area);
|
||||
cost = gc_area(&larger) - gc_area(&dr->rects[cursor]);
|
||||
if (cost < lowestcost) {
|
||||
int bad = FALSE, c;
|
||||
for (c = 0; c < dr->used && !bad; c++) {
|
||||
bad = gc_touch(&dr->rects[c], &larger) && c != cursor;
|
||||
}
|
||||
if (!bad) {
|
||||
cheapest = cursor;
|
||||
lowestcost = cost;
|
||||
}
|
||||
}
|
||||
}
|
||||
// XXX could make an heuristic guess as to whether we
|
||||
// XXX need to bother looking for a cheap merge.
|
||||
for (merge1 = 0; merge1 < dr->used; merge1++) {
|
||||
for (merge2 = 0; merge2 < dr->used; merge2++) {
|
||||
if (merge1 != merge2) {
|
||||
GRECT larger = dr->rects[merge1];
|
||||
long cost;
|
||||
gc_combine(&larger, &dr->rects[merge2]);
|
||||
cost = gc_area(&larger) - gc_area(&dr->rects[merge1])
|
||||
- gc_area(&dr->rects[merge2]);
|
||||
if (cost < lowestcost) {
|
||||
int bad = FALSE, c;
|
||||
for (c = 0; c < dr->used && !bad; c++) {
|
||||
bad = gc_touch(&dr->rects[c], &larger) && c != cursor;
|
||||
}
|
||||
if (!bad) {
|
||||
cheapestmerge1 = merge1;
|
||||
cheapestmerge2 = merge2;
|
||||
lowestcost = cost;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (cheapestmerge1 >= 0) {
|
||||
gc_combine(&dr->rects[cheapestmerge1], &dr->rects[cheapestmerge2]);
|
||||
dr->rects[cheapestmerge2] = dr->rects[dr->used - 1];
|
||||
dr->rects[dr->used - 1] = *area;
|
||||
} else {
|
||||
gc_combine(&dr->rects[cheapest], area);
|
||||
}
|
||||
// NB: clusters do not intersect (or intersection will
|
||||
// overwrite). This is a result of the above algorithm,
|
||||
// given the assumption that (x,y) are ordered topleft
|
||||
// to bottomright.
|
||||
return (TRUE);
|
||||
}
|
||||
int
|
||||
get_dirty_rect(dirty_rect *dr, GRECT *area)
|
||||
{
|
||||
if (dr == NULL || area == NULL || dr->rects == NULL || dr->used <= 0
|
||||
|| dr->max <= 0)
|
||||
return (FALSE);
|
||||
*area = dr->rects[--dr->used];
|
||||
return (TRUE);
|
||||
}
|
||||
int
|
||||
clear_dirty_rect(dirty_rect *dr)
|
||||
{
|
||||
if (dr)
|
||||
dr->used = 0;
|
||||
return (TRUE);
|
||||
}
|
||||
int
|
||||
resize_dirty_rect(dirty_rect *dr, int new_size)
|
||||
{
|
||||
return (FALSE);
|
||||
}
|
||||
static int
|
||||
gc_inside(GRECT *frame, GRECT *test)
|
||||
{
|
||||
if (frame && test && frame->g_x <= test->g_x && frame->g_y <= test->g_y
|
||||
&& frame->g_x + frame->g_w >= test->g_x + test->g_w
|
||||
&& frame->g_y + frame->g_h >= test->g_y + test->g_h)
|
||||
return (TRUE);
|
||||
return (FALSE);
|
||||
}
|
||||
static int
|
||||
gc_touch(GRECT *frame, GRECT *test)
|
||||
{
|
||||
GRECT tmp = { test->g_x - 1, test->g_y - 1, test->g_w + 2,
|
||||
test->g_h + 2 };
|
||||
return (rc_intersect(frame, &tmp));
|
||||
}
|
||||
static void
|
||||
gc_combine(GRECT *frame, GRECT *test)
|
||||
{
|
||||
if (!frame || !test)
|
||||
return;
|
||||
if (frame->g_x > test->g_x) {
|
||||
frame->g_w += frame->g_x - test->g_x;
|
||||
frame->g_x = test->g_x;
|
||||
}
|
||||
if (frame->g_y > test->g_y) {
|
||||
frame->g_h += frame->g_y - test->g_y;
|
||||
frame->g_y = test->g_y;
|
||||
}
|
||||
if (frame->g_x + frame->g_w < test->g_x + test->g_w)
|
||||
frame->g_w = test->g_x + test->g_w - frame->g_x;
|
||||
if (frame->g_y + frame->g_h < test->g_y + test->g_h)
|
||||
frame->g_h = test->g_y + test->g_h - frame->g_y;
|
||||
}
|
||||
static long
|
||||
gc_area(GRECT *area)
|
||||
{
|
||||
return ((long) area->g_h * (long) area->g_w);
|
||||
}
|
||||
17
outdated/win/gem/gr_rect.h
Normal file
17
outdated/win/gem/gr_rect.h
Normal file
@@ -0,0 +1,17 @@
|
||||
/* gr_rect.h */
|
||||
/*
|
||||
* $NHDT-Date: 1432512809 2015/05/25 00:13:29 $ $NHDT-Branch: master $:$NHDT-Revision: 1.4 $
|
||||
*/
|
||||
#include <e_gem.h>
|
||||
/********** structs **********/
|
||||
typedef struct {
|
||||
GRECT *rects;
|
||||
int max, used;
|
||||
} dirty_rect;
|
||||
/********* functions ************/
|
||||
dirty_rect *new_dirty_rect(int size);
|
||||
void delete_dirty_rect(dirty_rect *this);
|
||||
int add_dirty_rect(dirty_rect *dr, GRECT *area);
|
||||
int get_dirty_rect(dirty_rect *dr, GRECT *area);
|
||||
int clear_dirty_rect(dirty_rect *dr);
|
||||
int resize_dirty_rect(dirty_rect *dr, int new_size);
|
||||
321
outdated/win/gem/load_img.c
Normal file
321
outdated/win/gem/load_img.c
Normal file
@@ -0,0 +1,321 @@
|
||||
/*
|
||||
* $NHDT-Date: 1432512809 2015/05/25 00:13:29 $ $NHDT-Branch: master $:$NHDT-Revision: 1.5 $
|
||||
*/
|
||||
#define __TCC_COMPAT__
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <osbind.h>
|
||||
#include <memory.h>
|
||||
#include <aesbind.h>
|
||||
#include <vdibind.h>
|
||||
#include <gemfast.h>
|
||||
#include <e_gem.h>
|
||||
#include "load_img.h"
|
||||
|
||||
#ifndef FALSE
|
||||
#define FALSE 0
|
||||
#define TRUE !FALSE
|
||||
#endif
|
||||
|
||||
/* VDI <-> Device palette order conversion matrixes: */
|
||||
/* Four-plane vdi-device */
|
||||
int vdi2dev4[] = { 0, 15, 1, 2, 4, 6, 3, 5, 7, 8, 9, 10, 12, 14, 11, 13 };
|
||||
/* Two-plane vdi-device */
|
||||
int vdi2dev2[] = { 0, 3, 1, 2 };
|
||||
|
||||
void
|
||||
get_colors(int handle, short *palette, int col)
|
||||
{
|
||||
int i, idx;
|
||||
|
||||
/* get current color palette */
|
||||
for (i = 0; i < col; i++) {
|
||||
/* device->vdi->device palette order */
|
||||
switch (planes) {
|
||||
case 1:
|
||||
idx = i;
|
||||
break;
|
||||
case 2:
|
||||
idx = vdi2dev2[i];
|
||||
break;
|
||||
case 4:
|
||||
idx = vdi2dev4[i];
|
||||
break;
|
||||
default:
|
||||
if (i < 16)
|
||||
idx = vdi2dev4[i];
|
||||
else
|
||||
idx = i == 255 ? 1 : i;
|
||||
}
|
||||
vq_color(handle, i, 0, (int *) palette + idx * 3);
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
img_set_colors(int handle, short *palette, int col)
|
||||
{
|
||||
int i, idx, end;
|
||||
|
||||
/* set color palette */
|
||||
end = min(1 << col, 1 << planes);
|
||||
for (i = 0; i < end; i++) {
|
||||
switch (planes) { /* MAR -- war col 10.01.2001 */
|
||||
case 1:
|
||||
idx = i;
|
||||
break;
|
||||
case 2:
|
||||
idx = vdi2dev2[i];
|
||||
break;
|
||||
case 4:
|
||||
idx = vdi2dev4[i];
|
||||
break;
|
||||
default:
|
||||
if (i < 16)
|
||||
idx = vdi2dev4[i];
|
||||
else
|
||||
idx = i == 255 ? 1 : i;
|
||||
}
|
||||
vs_color(handle, i, (int *) palette + idx * 3);
|
||||
}
|
||||
}
|
||||
|
||||
int
|
||||
convert(MFDB *image, long size)
|
||||
{
|
||||
int plane, mplanes;
|
||||
char *line_addr, *buf_addr, *new_addr, *new1_addr, *image_addr,
|
||||
*screen_addr;
|
||||
MFDB dev_form, tmp;
|
||||
long new_size;
|
||||
|
||||
/* convert size from words to bytes */
|
||||
size <<= 1;
|
||||
|
||||
/* memory for the device raster */
|
||||
new_size = size * (long) planes;
|
||||
if ((new_addr = (char *) calloc(1, new_size)) == NULL)
|
||||
return (FALSE);
|
||||
|
||||
/* initialize MFDBs */
|
||||
tmp = *image;
|
||||
tmp.fd_nplanes = planes;
|
||||
tmp.fd_addr = new_addr;
|
||||
tmp.fd_stand = 1; /* standard format */
|
||||
dev_form = tmp;
|
||||
screen_addr = new_addr;
|
||||
dev_form.fd_stand = 0; /* device format */
|
||||
image_addr = (char *) image->fd_addr;
|
||||
|
||||
/* initialize some variables and zero temp. line buffer */
|
||||
mplanes = min(image->fd_nplanes, planes);
|
||||
/* convert image */
|
||||
line_addr = image_addr;
|
||||
buf_addr = screen_addr;
|
||||
if (mplanes > 1) {
|
||||
/* cut/pad color planes into temp buf */
|
||||
for (plane = 0; plane < mplanes; plane++) {
|
||||
memcpy(buf_addr, line_addr, size);
|
||||
line_addr += size;
|
||||
buf_addr += size;
|
||||
}
|
||||
} else {
|
||||
/* fill temp line bitplanes with a b&w line */
|
||||
for (plane = 0; plane < planes; plane++) {
|
||||
memcpy(buf_addr, line_addr, size);
|
||||
buf_addr += size;
|
||||
}
|
||||
}
|
||||
free(image->fd_addr);
|
||||
/* convert image line in temp into current device raster format */
|
||||
if ((new1_addr = (char *) calloc(1, new_size)) == NULL)
|
||||
return (FALSE);
|
||||
dev_form.fd_addr = new1_addr;
|
||||
vr_trnfm(x_handle, &tmp, &dev_form);
|
||||
free(new_addr);
|
||||
|
||||
/* change image description */
|
||||
image->fd_stand = 0; /* device format */
|
||||
image->fd_addr = new1_addr;
|
||||
image->fd_nplanes = planes;
|
||||
return (TRUE);
|
||||
}
|
||||
|
||||
int
|
||||
transform_img(MFDB *image)
|
||||
{ /* return FALSE if transform_img fails */
|
||||
int success;
|
||||
long size;
|
||||
|
||||
if (!image->fd_addr)
|
||||
return (FALSE);
|
||||
|
||||
size = (long) ((long) image->fd_wdwidth * (long) image->fd_h);
|
||||
success = convert(
|
||||
image, size); /* Use vr_trfm(), which needs quite a lot memory. */
|
||||
if (success)
|
||||
return (TRUE);
|
||||
/* else show_error(ERR_ALLOC); */
|
||||
return (FALSE);
|
||||
}
|
||||
|
||||
/* Loads & depacks IMG (0 if succeded, else error). */
|
||||
/* Bitplanes are one after another in address IMG_HEADER.addr. */
|
||||
int
|
||||
depack_img(char *name, IMG_header *pic)
|
||||
{
|
||||
int b, line, plane, width, word_aligned, opcode, patt_len, pal_size,
|
||||
byte_repeat, patt_repeat, scan_repeat, error = FALSE;
|
||||
char *pattern, *to, *endline, *puffer, sol_pat;
|
||||
long size;
|
||||
FILE *fp;
|
||||
|
||||
if ((fp = fopen(name, "rb")) == NULL)
|
||||
return (ERR_FILE);
|
||||
|
||||
setvbuf(fp, NULL, _IOLBF, BUFSIZ);
|
||||
|
||||
/* read header info (bw & ximg) into image structure */
|
||||
fread((char *) &(pic->version), 2, 8 + 3, fp);
|
||||
|
||||
/* only 2-256 color imgs */
|
||||
if (pic->planes < 1 || pic->planes > 8) {
|
||||
error = ERR_COLOR;
|
||||
goto end_depack;
|
||||
}
|
||||
|
||||
/* if XIMG, read info */
|
||||
if (pic->magic == XIMG && pic->paltype == 0) {
|
||||
pal_size = (1 << pic->planes) * 3 * 2;
|
||||
if ((pic->palette = (short *) calloc(1, pal_size))) {
|
||||
fread((char *) pic->palette, 1, pal_size, fp);
|
||||
}
|
||||
} else {
|
||||
pic->palette = NULL;
|
||||
}
|
||||
|
||||
/* width in bytes word aliged */
|
||||
word_aligned = (pic->img_w + 15) >> 4;
|
||||
word_aligned <<= 1;
|
||||
|
||||
/* width byte aligned */
|
||||
width = (pic->img_w + 7) >> 3;
|
||||
|
||||
/* allocate memory for the picture */
|
||||
free(pic->addr);
|
||||
size = (long) ((long) word_aligned * (long) pic->img_h
|
||||
* (long) pic->planes); /*MAR*/
|
||||
|
||||
/* check for header validity & malloc long... */
|
||||
if (pic->length > 7 && pic->planes < 33 && pic->img_w > 0
|
||||
&& pic->img_h > 0) {
|
||||
if (!(pic->addr = (char *) calloc(1, size))) {
|
||||
error = ERR_ALLOC;
|
||||
goto end_depack;
|
||||
}
|
||||
} else {
|
||||
error = ERR_HEADER;
|
||||
goto end_depack;
|
||||
}
|
||||
|
||||
patt_len = pic->pat_len;
|
||||
|
||||
/* jump over the header and possible (XIMG) info */
|
||||
fseek(fp, (long) pic->length * 2L, SEEK_SET);
|
||||
|
||||
for (line = 0, to = pic->addr; line < pic->img_h;
|
||||
line += scan_repeat) { /* depack whole img */
|
||||
for (plane = 0, scan_repeat = 1; plane < pic->planes;
|
||||
plane++) { /* depack one scan line */
|
||||
puffer = to =
|
||||
pic->addr
|
||||
+ (long) (line + plane * pic->img_h) * (long) word_aligned;
|
||||
endline = puffer + width;
|
||||
do { /* depack one line in one bitplane */
|
||||
switch ((opcode = fgetc(fp))) {
|
||||
case 0: /* pattern or scan repeat */
|
||||
if ((patt_repeat = fgetc(fp))) { /* repeat a pattern */
|
||||
fread(to, patt_len, 1, fp);
|
||||
pattern = to;
|
||||
to += patt_len;
|
||||
while (--patt_repeat) { /* copy pattern */
|
||||
memcpy(to, pattern, patt_len);
|
||||
to += patt_len;
|
||||
}
|
||||
} else { /* repeat a line */
|
||||
if (fgetc(fp) == 0xFF)
|
||||
scan_repeat = fgetc(fp);
|
||||
else {
|
||||
error = ERR_DEPACK;
|
||||
goto end_depack;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case 0x80: /* Literal */
|
||||
byte_repeat = fgetc(fp);
|
||||
fread(to, byte_repeat, 1, fp);
|
||||
to += byte_repeat;
|
||||
break;
|
||||
default: /* Solid run */
|
||||
byte_repeat = opcode & 0x7F;
|
||||
sol_pat = opcode & 0x80 ? 0xFF : 0x00;
|
||||
while (byte_repeat--)
|
||||
*to++ = sol_pat;
|
||||
}
|
||||
} while (to < endline);
|
||||
|
||||
if (to == endline) {
|
||||
/* ensure that lines aren't repeated past the end of the img
|
||||
*/
|
||||
if (line + scan_repeat > pic->img_h)
|
||||
scan_repeat = pic->img_h - line;
|
||||
/* copy line to image buffer */
|
||||
if (scan_repeat > 1) {
|
||||
/* calculate address of a current line in a current
|
||||
* bitplane */
|
||||
/* to=pic->addr+(long)(line+1+plane*pic->img_h)*(long)word_aligned;*/
|
||||
for (b = scan_repeat - 1; b; --b) {
|
||||
memcpy(to, puffer, width);
|
||||
to += word_aligned;
|
||||
}
|
||||
}
|
||||
} else {
|
||||
error = ERR_DEPACK;
|
||||
goto end_depack;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
end_depack:
|
||||
fclose(fp);
|
||||
return (error);
|
||||
}
|
||||
|
||||
int
|
||||
half_img(MFDB *s, MFDB *d)
|
||||
{
|
||||
int pxy[8], i, j;
|
||||
MFDB tmp;
|
||||
|
||||
mfdb(&tmp, NULL, s->fd_w / 2, s->fd_h, s->fd_stand, s->fd_nplanes);
|
||||
tmp.fd_w = s->fd_w / 2;
|
||||
tmp.fd_addr = calloc(1, mfdb_size(&tmp));
|
||||
if (!tmp.fd_addr)
|
||||
return (FALSE);
|
||||
|
||||
pxy[1] = pxy[5] = 0;
|
||||
pxy[3] = pxy[7] = s->fd_h - 1;
|
||||
for (i = 0; i < s->fd_w / 2; i++) {
|
||||
pxy[0] = pxy[2] = 2 * i;
|
||||
pxy[4] = pxy[6] = i;
|
||||
vro_cpyfm(x_handle, S_ONLY, pxy, s, &tmp);
|
||||
}
|
||||
pxy[0] = pxy[4] = 0;
|
||||
pxy[2] = pxy[6] = s->fd_w / 2 - 1;
|
||||
for (j = 0; j < s->fd_h / 2; j++) {
|
||||
pxy[1] = pxy[3] = 2 * j;
|
||||
pxy[5] = pxy[7] = j;
|
||||
vro_cpyfm(x_handle, S_ONLY, pxy, &tmp, d);
|
||||
}
|
||||
free(tmp.fd_addr);
|
||||
return (TRUE);
|
||||
}
|
||||
159
outdated/win/gem/tile2img.c
Normal file
159
outdated/win/gem/tile2img.c
Normal file
@@ -0,0 +1,159 @@
|
||||
/* NetHack 3.6 tile2img.c $NHDT-Date: 1432512809 2015/05/25 00:13:29 $ $NHDT-Branch: master $:$NHDT-Revision: 1.6 $ */
|
||||
/* Copyright (c) NetHack PC Development Team 1995 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
|
||||
/*
|
||||
* Edit History:
|
||||
*
|
||||
* Initial Creation M.Allison 94/01/11
|
||||
* Marvin was here Marvin 97/01/11
|
||||
*
|
||||
*/
|
||||
|
||||
/* #include <stdlib.h> */
|
||||
#include "hack.h"
|
||||
#include "tile.h"
|
||||
#include "bitmfile.h"
|
||||
|
||||
/* #define COLORS_IN_USE MAXCOLORMAPSIZE /* 256 colors */
|
||||
#define COLORS_IN_USE 16 /* 16 colors */
|
||||
|
||||
extern char *FDECL(tilename, (int, int));
|
||||
static void FDECL(build_ximgtile, (pixel(*) [TILE_X]));
|
||||
void get_color(unsigned int colind, struct RGB *rgb);
|
||||
void get_pixel(int x, int y, unsigned int *colind);
|
||||
|
||||
#if COLORS_IN_USE == 16
|
||||
#define MAX_X 320 /* 2 per byte, 4 bits per pixel */
|
||||
#else
|
||||
#define MAX_X 640
|
||||
#endif
|
||||
#define MAX_Y 1200
|
||||
|
||||
FILE *tibfile2;
|
||||
|
||||
pixel tilepixels[TILE_Y][TILE_X];
|
||||
|
||||
char *tilefiles[] = { "..\\win\\share\\monsters.txt",
|
||||
"..\\win\\share\\objects.txt",
|
||||
"..\\win\\share\\other.txt" };
|
||||
|
||||
unsigned int **Bild_daten;
|
||||
int num_colors = 0;
|
||||
int tilecount;
|
||||
int max_tiles_in_row = 40;
|
||||
int tiles_in_row;
|
||||
int filenum;
|
||||
int initflag;
|
||||
int yoffset, xoffset;
|
||||
char bmpname[128];
|
||||
FILE *fp;
|
||||
|
||||
int
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
int i;
|
||||
|
||||
if (argc != 2) {
|
||||
Fprintf(stderr, "usage: tile2img outfile.img\n");
|
||||
exit(EXIT_FAILURE);
|
||||
} else
|
||||
strcpy(bmpname, argv[1]);
|
||||
|
||||
#ifdef OBSOLETE
|
||||
bmpfile2 = fopen(NETHACK_PACKED_TILEFILE, WRBMODE);
|
||||
if (bmpfile2 == (FILE *) 0) {
|
||||
Fprintf(stderr, "Unable to open output file %s\n",
|
||||
NETHACK_PACKED_TILEFILE);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
#endif
|
||||
|
||||
tilecount = 0;
|
||||
xoffset = yoffset = 0;
|
||||
initflag = 0;
|
||||
filenum = 0;
|
||||
fp = fopen(bmpname, "wb");
|
||||
if (!fp) {
|
||||
printf("Error creating tile file %s, aborting.\n", bmpname);
|
||||
exit(1);
|
||||
}
|
||||
fclose(fp);
|
||||
|
||||
Bild_daten = (unsigned int **) malloc(MAX_Y * sizeof(unsigned int *));
|
||||
for (i = 0; i < MAX_Y; i++)
|
||||
Bild_daten[i] = (unsigned int *) malloc(MAX_X * sizeof(unsigned int));
|
||||
|
||||
while (filenum < 3) {
|
||||
if (!fopen_text_file(tilefiles[filenum], RDTMODE)) {
|
||||
Fprintf(stderr, "usage: tile2img (from the util directory)\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
num_colors = colorsinmap;
|
||||
if (num_colors > 62) {
|
||||
Fprintf(stderr, "too many colors (%d)\n", num_colors);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
while (read_text_tile(tilepixels)) {
|
||||
build_ximgtile(tilepixels);
|
||||
tilecount++;
|
||||
xoffset += TILE_X;
|
||||
if (xoffset >= MAX_X) {
|
||||
yoffset += TILE_Y;
|
||||
xoffset = 0;
|
||||
}
|
||||
}
|
||||
(void) fclose_text_file();
|
||||
++filenum;
|
||||
}
|
||||
Fprintf(stderr, "Total of %d tiles in memory.\n", tilecount);
|
||||
|
||||
bitmap_to_file(XIMG, MAX_X, (tilecount / 20 + 1) * 16, 372, 372, 4, 16,
|
||||
bmpname, get_color, get_pixel);
|
||||
|
||||
Fprintf(stderr, "Total of %d tiles written to %s.\n", tilecount, bmpname);
|
||||
|
||||
exit(EXIT_SUCCESS);
|
||||
/*NOTREACHED*/
|
||||
return 0;
|
||||
}
|
||||
|
||||
void
|
||||
get_color(unsigned int colind, struct RGB *rgb)
|
||||
{
|
||||
rgb->r = (1000L * (long) ColorMap[CM_RED][colind]) / 0xFF;
|
||||
rgb->g = (1000L * (long) ColorMap[CM_GREEN][colind]) / 0xFF;
|
||||
rgb->b = (1000L * (long) ColorMap[CM_BLUE][colind]) / 0xFF;
|
||||
}
|
||||
|
||||
void
|
||||
get_pixel(int x, int y, unsigned int *colind)
|
||||
{
|
||||
*colind = Bild_daten[y][x];
|
||||
}
|
||||
|
||||
static void
|
||||
build_ximgtile(pixels)
|
||||
pixel (*pixels)[TILE_X];
|
||||
{
|
||||
int cur_x, cur_y, cur_color;
|
||||
int x, y;
|
||||
|
||||
for (cur_y = 0; cur_y < TILE_Y; cur_y++) {
|
||||
for (cur_x = 0; cur_x < TILE_X; cur_x++) {
|
||||
for (cur_color = 0; cur_color < num_colors; cur_color++) {
|
||||
if (ColorMap[CM_RED][cur_color] == pixels[cur_y][cur_x].r
|
||||
&& ColorMap[CM_GREEN][cur_color] == pixels[cur_y][cur_x].g
|
||||
&& ColorMap[CM_BLUE][cur_color] == pixels[cur_y][cur_x].b)
|
||||
break;
|
||||
}
|
||||
if (cur_color >= num_colors)
|
||||
Fprintf(stderr, "color not in colormap!\n");
|
||||
y = cur_y + yoffset;
|
||||
x = cur_x + xoffset;
|
||||
Bild_daten[y][x] = cur_color;
|
||||
}
|
||||
}
|
||||
}
|
||||
426
outdated/win/gem/title.uu
Normal file
426
outdated/win/gem/title.uu
Normal file
@@ -0,0 +1,426 @@
|
||||
begin 777 title.img
|
||||
M $ .P $ $!= %T 4 R%A)34< /H ^@#Z /H &K ^@ /H ^@
|
||||
M #Z /H #Z LH#Z &K CT"R@$: :L!JP+* 1H CT /H
|
||||
M :L (] 1H -; UL"R@/H LH"/0 _PDH*"BH!H ) ?_@'_^_
|
||||
M___'A( /_#_\!__X _P#__P?__P!B@HAH )_@ ?X ! X!( / \ #^ '
|
||||
M__ /\ /@ /A@>!@ ?@#_^____'@X 0W_@?^ /_\ __ ?_X!__P 8H!X (
|
||||
M?\ '_Q___X.#@ ^/\ _P ?_@ ?P ?_ #_\'AX (?]_W_U___[N#@!"O]^_W
|
||||
M_?_O_\?S^?_?[_\_A@> "& P!@,8 #& X !V( .&!@8 8 P '@.$8# # ,'
|
||||
M* > "#_@ _X/__^#@X /C_ /\ #_X ?_ #_@ ?^!X> "* O^@+H "Z X /
|
||||
MJ!?H%_Z +_^8#>Z O_0"AP> "& P P8, #& X /S# ,, & 8 #@ Q&!P P&
|
||||
M!R@'@ @_X '\!___@X. #X?@!^ _\ ?_X _X '_ >'@ B@+_T%] N@.
|
||||
M#[0O]"_^@%__8 +N@;_T!8<'@ @P, &&# Q@. #\PP## !@& !P &Q@X ,
|
||||
M# <H!X ('^ _ ?__X.#@ ^'X ?@ /_ '__ /X !_@'AX (T"_^A?0 +H#
|
||||
M@ ^T+_0O_H!?_D !3H)_] N'!X (,#X!A_P /X#@!#\/\P_P8!_@8 \8/_
|
||||
M&!__!@B !PX ? #@#@ @P#\ /P ?@ 2! 8 "!_\&!X ('^X _??__[N#
|
||||
M@!"W[\?OP/_?@/__@/[_#_?_!H> "- O_H7T "Z X /M"_T+_Z 7_Z (Z"
|
||||
M_^@7AP6 "O@ ,!X!A_P /X#@!#\/XP_@8!_ P \8/^&#_\!@B !P8 ?
|
||||
M #@#@ <P#X /@ ?!8 $_@ /_ 8%@ KX !_V /WW__^[@X 0M^^'[X#_WP'_
|
||||
M_Z#^_@_O_ :'@ C0%_Z%] N@. #[0O]"_^@%_] "N@O_H+X<%@ KX # ?
|
||||
M 8?\ #^ X 0_#^,/X, /P,!X'&#_#!_\ 8%@ H@ ' 'P X X ', ^
|
||||
M#X #P6 !/P '_ &!8 *N ?]P#]]___NX. $+?OA^^!_^\!___@_OP?W_ &
|
||||
MA8 *W__0%_Z%] N@. #[0O]"_] "_] >!N@O_07X<%@!U\ # ? 8?L/_S^
|
||||
M?P'X_#\,/P, /@<'_#&#_&!_X 8%@ H0 ' '@ X X ', \ #P #@6
|
||||
M!/P '^ &!8 *' ?]P#]Y___NX. $+?O!^\!_^X!_A_@_OP_W^ &A8 <[__0
|
||||
M%_Z%]#_\NG\!^+0O]"_] "_Y!APN@O^@7X<%@!T\ # / 8?L?__^_X/__#\,
|
||||
M/P, /@8/_CN#^&#_P 8%@ H0 # '@ X X 0, \ #P #@ !X H ^ _
|
||||
MP 8%@!T< !_[ /WGP .[@/X'M^\'[P'_[@/YX^K^^#^_P :%@!SO_] +_H7T
|
||||
M0 .Z@(('M"_T+_T +_H)XBZ"_Z"_AP6 "#P , \!A^Q_@X 2@__\/PP_ P ^
|
||||
M!A__/X/PP/^ !@6 '1@ , > ?_#A^ /@P#P / . ?X#@#P #^ !@6
|
||||
M'1P '_L _>??_+M^_OBW[P?O ?_N _?Y[O[P?[^ !H6 '.?_T O^A?1?_+M^
|
||||
M@OBT+_0O_0 O^A?Y+H+_0+^'!8 </X P#X&'['___W^#__P_##\#!#X./_^_
|
||||
M@_&!_P<%@!P;@ #@ '@'_\X?@#_, \ #P #@ /_@X \ !_!P6 '!^ '_N
|
||||
M_>??_SI^_O\W[P?O ?_N ^_^[O[P_W\'A8 <Y__0"_Z%]%__.OZ"_S0O]"_]
|
||||
M!"_R+_ZN@OZ!?X<%@!P_@# /@8?L?__^?X/__#\,/P,.'PQ___^#\8/^!P6
|
||||
M'!N . > ?_[A^ /^P#P / ' !__#@#P /X'!8 <'X ?^X#]Y]__N'[^
|
||||
M_[?O!^\!^_<'W_]N_O#^_@>%@!OG_] +_H7T7_^Y_H+_M"_T+_T*%_1?_VZ"
|
||||
M_H*(!8 </\ P!X&'['___G^#__P_##\&#A\,?___@_,#_@<%@!P;P !@ '@
|
||||
M'__X?@#_\ \ #P !P ?_XX \ #^!P6 '!_ '_V _>??__A^_O_W[P?O _OW
|
||||
M!]__KO[Q_OX'A8 ;Y__0!?Z%]%__^?Z"__0O]"_Z"A?T7_^N@OT"B 6 '#_
|
||||
M, ?!A^Q___Q_@__\/PP_!@X?#/_A_X/V!_P'!8 <&\ < !X!__^'X __ /
|
||||
M \ < /^'. / !_ <%@!P?P!_]P/WGW__X?O[_]^\'[P/[]P>_X<[^\_W\
|
||||
M!X6 &^?_T 7^A?1?__O^@O_T+_0O^@H7]+__SH+Z!8@%@!P_P# 'P8?L?@ \
|
||||
M>8/P?#\,/P8>'QS_@'^#_ _\!P6 '!O ' > > #QX /!P#P / ' #^
|
||||
M;@#P _P'!8 <'\ ?_<#]Y]X /'C^\'?O!^\#\_<'OX!N_O?[_ >%@!OG_] %
|
||||
M_H7T7____H+_]"_T+_H2%^2__^Z"] N(!8 </\ P \&'['X #'&#\ P_##\&
|
||||
M'Q\9_P ?@_P/^ <%@!P;P P '@'@ ,< #P \ #P $!P!_ !X \ /X!P6
|
||||
M'!_ '_[ _>?> QP_O '[P?O _7W#W\ 'O[W^_@'A8 ;Y__0 OZ%]%____Z"
|
||||
M__0O]"_Z%1?I?__^@O0+B 6 '#_ , /!A^Q^ 1AH_ ,/_P_!A\?F?X #X/X
|
||||
M'_ '!8 -&\ , !X!X !& \ . # \ ! > ?@ . . '\ <%@!P?P!_^P/WG
|
||||
MW@ $8-[P!^ '[P/U]X]^ [^[_?P!X6 &^?_T +^A?1?___^@O_T( 0O^A47
|
||||
MZ7___H+H%X@%@!P_P# #X8?L?@ 88/P#!_X/PP?#YG^ >#\#_P!P6 #1O
|
||||
M #@ > > !@ / #@ P/ 0#@'X !@# #_ '!8 <'\ ?_N#]Y]X &#^\ ?_
|
||||
M_^\']?N/?@ &_M_O\ >%@!OG_] "_H7T7____H+_]!_X+_05"^E___Z"T"^(
|
||||
M!8 </\ P ^&'['X $'C\ P #\,'P^9_ #@_ _X <%@ T;P X '@'@
|
||||
M0 #P X ,#P $ X!\ ( P _@!P6 '!_ '_[@_>?> ! GO '___O!_7[CWP
|
||||
M O[?[^ 'A8 ;Y__0 OZ%]%____Z"__0 "_T%0OI?__^@M OB 6 '#_ , 'A
|
||||
MA^Q^ !Z_ , _##\/F?P 8/@?\ '!8 (&\ & !X!X$@ 'P X &#P ,
|
||||
M X!\!( "'\ '!8 ('\ ?_V#]Y]X#@!&6\ ?__^\'[?N/? _C_?P >%@!OG
|
||||
M_] !?H7T7____H+_] +_0M"^E___Z"(%^(!8 </\ Q ?&'['X &C\ P
|
||||
M #\,/P^9^ !@<!_P <%@ @;P < '@'@2 ? #@ 8/ P#@'@$@ (?P <%
|
||||
M@ @?P!__</WGW@. $=[P!___[P?M^X]X #__]_ !X6 &^?_T0%^A?1?___^
|
||||
M@O_T O]"T+Z7___H' 7X@%@!Q_P#.!\8?L?@ 8/P# /PP_C['X &
|
||||
M /^ !P6 "!O !P > >!( !\ . !@\ #@. > 2 C^ !P6 "!_ 'O]P_>?>
|
||||
M X 1_O '___O!^[[GW@ /__OX 'A8 ;Y__2@7Z%]%____Z"__0 "_T+HO1
|
||||
M?__^@ "_B 6 &W_ ,X#QA^Q^! !F_ , !_##^'\?@ 8 !_P@%@ @[P
|
||||
M, '@'@2 ? #@ 8/ X!P'@$@ %_" 6 "#_ 'O^P_>?> X 0YO '__^O!^[]
|
||||
MWW@ /__?PB%@!O'_]* OH7T7_O__H+_] +_0NA=%___Z 7^(@ $.!(&
|
||||
M&L S@/&'['X, '#\ P #\8/X?S^ !@ '_"( !#@2 "#O P > >!( !
|
||||
M\ . !@\ #@' ^ 2 7\(!8 (/\ >_[#]Y]X#@!"^\ ?__^\/[OW>^ __]_
|
||||
M"(6 &\?_TH"^A?1?\__^@O_T OZ"Z%TO___H !?XB (!^ !_\ SP/F'
|
||||
M['X\ &+\ P?^'\8?X?S^ !@ /^"( "'X #@ A[P . '@'@2 ? #@ 8/
|
||||
M !X!P/@$@ '^" 6 &W_ 'G^X_>?>" ]O '__^O#][]WO@ /_^_@B%@!J'
|
||||
M_]) OH7T7\O__H+_]!_X+^A>A=+___Z HF 3.$@!O\ #/ P88,8?P <<
|
||||
M#+_\,!AAAC, & 8 #@ )Y7@. 3^$@ 'X'8 "!_X#@ $,!( 5_ >?X#\
|
||||
M!\ X "Z =@!^ /P/P> X($@ )__@.%@!4$ !) @(0$0#@ (( !" $( A
|
||||
MA!(#@ * 02 G@!@X @;X . #-@888,?\P ;\ ## ,,!AAAC, &!
|
||||
M@8 %@ -UP " 7^$@ & 'X ##\ @!H0?____? 'C_ _ ? ^ P@ 'X ?@
|
||||
M#\#\'@."!H #?\ A( 6_G $B! A 1 R @@ $( 0@"$"$$@. H&!!H #
|
||||
M<#__@ %?A * &3-@888,/PP 8, #K ,<!A@PS, &#P, &@ (- ( !>82
|
||||
M 7 @@ (# ( !( . %@.( !X_P/P'__@ /X !6 'H _ ?AX#@ /^?X &@ (/
|
||||
M (2 %OSX !(@0(0$/P@ (( !" $( A 0A(#@ ."0( &@ (,_X2 '/X #,P
|
||||
M888, P ?, #+ -L!A@PS, &#X, '@ ' @ '@@ 55555^^"& 4 $@!8'
|
||||
M! >'\#\!__X ". =@!F /P'X> X #_C^ !X !P(2 %OF, !(00(0$ @
|
||||
M (( !" $( A 0A(#@ ."(( '@ &_A( <_ ,S QA@P C !XP ,, SP-,##
|
||||
M,P 8-@P > 3" < #@ (=O"& 1 $@!8& @ >'^#\!_]X "> ?@!R ;
|
||||
M@'X> X #_C^ !X !,(2 %OL& !(0((0$ @ (( !" $(!" 0A(#@ ."(( '
|
||||
M@ $OA( 6_ '_\_@_A_P)#___T__\/_T_\O_#\X. X/P?X> ?" < #@ (-
|
||||
M_"($@!P& __>[^[]]_;[__ZN__?O]N_=OW[>___^_M_?AX !\(2 '/L'_]+H
|
||||
M+H7T O__H+_]"_T+]"_0M+___Z"T%^(A( 6Z '_\_@_A_P'[___@__\?_R_
|
||||
M^?_#\X. X/P?X> >" 8 #@!P)_?_ X X!\ #__X __ /\ _ /P# ___^
|
||||
M , ?AX !X 2 '!(#_][O[OWW__O__O[_]Z_W;]:_?M[___[^W]^'@ '@A8 5
|
||||
M!@ 2"""$! ?H "" 0@!" 0@$(2 X #@A! !X !'X& #*JJJH !__/X/Z?\
|
||||
M/X. "L?__'_\__?_P_.#@ .#\'^'@ $P@ & !( ;^?_ X X!\ #__X __ /
|
||||
M\ _ /P# ___^ , ?AX !, & 'U5557D%_][O[MWW^!O__KK_]Z_W+]B_?M[_
|
||||
M__[^W]^'@ $PA8 5C@ 2"""$!#@8 "" 0@!" 0@$(2 X #@A! !X& 5\$
|
||||
M@ <#__/\/[?\A( *@__]/_X_\/_!\X. X/X/X: L7\!8 ;<__ \ 8!\ ?C
|
||||
M__X __ /\ _ !P! ___^ . /AH "Q?R 2"#@!S\B__>]];-]T?C__[^__;O
|
||||
M]>_?AW]>___^_N_OAH "Q?R%@ C\ !($$(0$0 . "H( !" $(!" 01(#@ ."
|
||||
M"" &@ (__X !! 2 " ?_]_R?C_Q_@X *@__]O_T_X7_A\X. \/X/X2 !/P)
|
||||
M__X%@!L'_\#P!@'P'_O__@#_\ _P#X $#___X X ^$@ 3\"?_^@ %[@X <
|
||||
M_G?_VO=V]???^__^_O_V;_;OOOA?7O___K[O[X2 !/P)__Z%@ CX !($$(0$
|
||||
M0 . "H( !" $("!X01(#@ .""" $@ $#@P6 "(__^_X_E_Q_@X *S___/_^_
|
||||
MZQ_I]X. YOX/X. H"?@P6 &XO_P/@& ? ?___^ /_P#_ /@ 0/___@#@
|
||||
M#X. H"?@X !/X2 &X__UOO6[???___^LO_T[_1OM.>76O___N;O[X. H"?
|
||||
M@X6 "'0 $@(0A 1 X *@@ $( 0@( >!$@. X((( . 7^$ 8 !?X6 !?/_
|
||||
M#^?]A( *Q__\/_T_?VS1\X. \/\'X> ?X!@!5____^>__ ^ (!\!____X
|
||||
M__ /\ \#@ = ___^ / 'AX !_H !'X. '/Y__][Z^IWV7____KK_]^_V[R"3
|
||||
M+U[___Z^]_>'@ '^A8 ;A__2^@J%]%____Z"__0O]"^@ %2___^@O07B( !
|
||||
M 8: !O/_G__\?X. "OO__+__?W:.>_.#@ .C_!^'@ 'X@ $!A( 1.__ _ (!
|
||||
M\!____X __ /\ \#@ = ___^ / 'AX !^( !#X2 &S__WOUJA???___^AO_W
|
||||
M;_2O*7&%7O___M[W]X> ?B%@!O'_]+]"H7T7____H+_]"_T+Z 5+___Z"
|
||||
M]!>(@ $'AH %\_\OK_R'@ 5__/]]](6 X/^'X> :" 0>$@!&[_\#\ @'P
|
||||
M'____@#_\ _P#P2"@ 3^ /@'AX !H( !!X2 &[__WOW:U?=?___^@O_TK_<O
|
||||
M(@L DO___O[[]X> :"%@!O'_]+]"H7T7____H+_]"_T+Z( )+___Z"^A>(
|
||||
M@ $'B( #G\_]A( *B___/_]_>?WW]X. ^?^#X: F@ @ $'A( 1F__ _@(!
|
||||
M\!____X __ /\ \$@H $_@#X X: F@ @ $'A( ;G__2_NJU]E____[V__3O
|
||||
M]*\G_@B:___^FOO[AH ": "%@!OG_]+^BH7T7____H+_]"_TKZ/\ )K___Z"
|
||||
M^@N(@ $#AH &]_^7__Q_@X %V___?_Z#@ +L]X2 OX/A( $[4 ( ! X2
|
||||
M$=O_P/X! ? ?___^ /_P#_ /!( &?__^ /@#A( $[4 ( ! X2 &]__VO[M
|
||||
MA???___^IO_TK_4O0@/SF7___H+[^X2 !.U "%@!OG_]+^A87T7____H;_
|
||||
M]"_U+T(#X)E___Z"^@N(@ (!^ . '#_ ,_'GU^_^ !O_ -?PW_[__^_?
|
||||
M ?_S3X '@ (!^ . "!O / > >!( *\ / \ _ @< . _ #@ > @'X
|
||||
M X ('\ >\)LMY%X#@!'"\ :O!B]2_!&K< @O&[@ >%@!OG_]+^@P7T7___
|
||||
M_L+_]"_T+T+\$*E___Z"_0N( 8 !X . '#_ /_#5G^]^ !@_ ,/P[_U__Z
|
||||
M__ ??S3X ' 8 !X . "!O / > >!( *\ / \ _\ @< . _ !@ <!
|
||||
M@ '@ X ('\ 2\&IEY-X#@!'^\ ?O!2]J_]6I< BO&U@ >%@!OG_]+_0 7T
|
||||
M7____M[_]*_T+V+_T*E___Z"_06(!8 </\ [\,N_[/X @&7\ T_#K_O__W_
|
||||
M\ !^_/W@ <%@ @;P #P '@'@2 "O #P / /_ ' #@ /P 8 '!8 ('\ 6
|
||||
M\'1%YUX#@!'J\ ;O!6]2_]))< AO$-@ >%@!OG_]+_0 7T7__]_NK_]"_T
|
||||
M;T+_TDE___Z"_06(!8 </\ _\'S_[_X @'G\ ^_##_?__C]\ !S_''P <%
|
||||
M@ @;P #P '@'@2 "O #P / /_ ' #@ /P < '!8 ('\ 2\",%Y%X#@!&:
|
||||
M\ 1O!^]B_]=+< LO"]P >%@!OG_]+_H 7T7__]_IK_]&_U;T+_T4M___Z"
|
||||
M_H6(!8 </\ [\';O[GX !@';\ \_#G^O__W_^ !__'_P <%@ @;P #P '@
|
||||
M'@2 "O #P . ?_@ '@#@ /P , '!8 ('\ 6\"D5Y=X#@!&F\ 3O!:[5_^I)
|
||||
M> @O""P >%@!OG_]+_H 7U7__Y_J;_]._U+M7_ZDE___Z"_H*(!8 </\ _
|
||||
M\#YG[/X !@'S\ W_#?^_\#M]^ ![_&WP <%@ @;P #P '@'@2 "O #P .
|
||||
M ? @$#@#@ /P , '!8 ('\ 2\!&=YUX#@!&.\ 8O!B[%\"S6N DO#*P >%
|
||||
M@!OG_]+_T 7W7__Y_H[_]B_V+L7_[%:___Z2_H*(!8 </\ W\#O?[_X #@&+
|
||||
M\ Y_#K_W\!M_^ )[_#GX <%@ @;P #P '@'@2 "O #P . ? $#@#@ /P
|
||||
M & '!8 <'\ :\!0EY%X ! #V\ 6O!6Z-\ S4N DO!98 >%@!SG_]+_T 7T
|
||||
M7__U_O;_]:_U;HW_[-2___:2_T%_AP6 '#_ -_ V[^[^ XAB_ /OPS_K_ 8
|
||||
M?O@ ">_P]> '!8 6&\ \ !X!X " \ / X!\ 0. . _ 8 <%@!P?
|
||||
MP!KP&17E7@ $(/;P!&\'+M7P#]6X "2\$M@!X6 '.?_TO_0%?1?__7^]O_T
|
||||
M;_4NU?_N5;__]H+_07^'!8 </\ _\!RO[_X 'B'+\ Q_##^7\!U]> 9S_#[
|
||||
MX <%@!8;P #P '@'@ ( #P \ #@'P 8 X #\ !@!P6 '!_ $O +5>1>
|
||||
M P@MO 'KP?N[? *IM@ ++P16 'A8 <Y__2_^L%]%__[?ZV__>O]^[E_^JF
|
||||
MW__FDO]!?X<%@!P_P#?P'=?O_@ V89/P##\,/R_@&O_X !G'\'7P!P6 %AO
|
||||
M / > > !@ / #P , ^ "!@#@ /P # '!8 <'\ :\ HMY%X '&#N\ ?O
|
||||
M!^W;X TJ6 NO JL >%@!SG_]+_Z@WT7__=_N[_]^_W[=O_[2I?_^::_ZB_
|
||||
MAP6 '#_ /_ /M^U^ .9AP_ ,/PP^#^ ,?WP .?_P?_ '!8 6&\ \ !X!X
|
||||
M & \ / @#X (' . _ , <%@!P?P!+P!$WFW@ \8+[P!^\'Z_O@!ZK<
|
||||
M !""\""P!X6 '.?_TO_T3?;?_SW^OO_W[_?K^__WJM__UH+_H+^'!8 </\ [
|
||||
M\ XG[/X#QN&!\!@?&!P/X P^/ !YG_!_^ <%@!83P #P '@'@ X !P <
|
||||
M /@ @, X #\ X!P6 '!_ %O %W>=> /S@_W /]P_W^^ 'Z^P ,.+P(+@'
|
||||
MA8 <[__6__5=]U_\_?[_?^_W[_?[__<K[_^VXO^@OX<%@!Q_P#_P!U_L?O\&
|
||||
MX8'P&_\?_\?@##\< /&C\#;X!P6 %A/ / > > #@ ' P > # 0#
|
||||
M@ /P !@'!8 <'\ 2\ *EY]X#_.#_< _[#__]X ?M] !@WO 96 >%@!SO_]+_
|
||||
M^J7WWP/]_O]_[_OO__W_]^WW_V[>_]!?AP6 '/O /_ &!^S__ ?C ? __S__
|
||||
M_^ </PX!L8/P/G@'!8 5(\ \ !X! > , ! !X $!( #\ 8!P6
|
||||
M'+O $O #_>=0__WA_[ < 0 /> 'U?@ X/[P$=@'A8 <W__2__O]]U#__?W_
|
||||
MO]P!P ]_^?5^?[N_O_1WX<%@!S[P#?P P?L?P 'X__P?/\ _S_ 'A^'_V&3
|
||||
M\#M\!P6 "P/ / > '@ X$!@0& \ !@2 _ ' <%@!S[P!KP ?WG
|
||||
MS__]X?X /\ _P# #_;^ <#N\!3<!X> #-K__?WWS__]_?X/@X. "\#_[_;^
|
||||
M =[N_]1?AP6 ' / ,_ #!^PP ?G__ _P#_?\ __\'^8Z/P'_P'!8 < \
|
||||
M\ !X > !\ #_ /]_P ' " / # <%@!P#P![P ?WG___]X@'P /\
|
||||
M_W_ ?=__\+>\ @L!X> "MK__?WW___]^@&'@ G!]W__WM[_Z"^'!8 < \ _
|
||||
M\ ,'[ #__\?^ '_@?__P '_< #'@_ ;/ <%@!P#P #P '@ !X!_X ?^!
|
||||
M___ , 8 \ ,!P6 ' / $O !_>?___G@'_@!_X'__\ &S__AO[P#.P'
|
||||
MAX )TO_]_??___G@B( )_AN__[[^_^QOAP6 ' ? ,_ !A^P ?__@'_@!_\'_
|
||||
M_^ _SX#CX/P#_X'!8 <!\ \ !X !^ ?^ '_P?__X #A . / #@<%
|
||||
M@!P'P![P /WG__P'X!_X ?_!___@ .$/_P[^\ 0N!X> "-[__OWW__P'BH (
|
||||
MX<__?O[_]"^'!8 <#X _\ &'[ ___^ __ /_X___X '_O_\?@_ .W@<%@!P/
|
||||
M@ #P '@ /_X#_\ __C___@ ?^P !X \ &!P6 ' ^ $O _>?_@__@/_P#
|
||||
M_^/__^ !_['\'O[P!38'AX 'TO_^_??_@XR !_'\_O[_]#>'!8 &#X S\ #'
|
||||
MA( 2X#__!\ /P ?^?__\#\ Q^!P6 ' ^ / > ?__@/_\'P _ !
|
||||
M_YX#^ #P 8'!8 <#X >\ !][_!__^ __P? #\ '_G@/Y_O 'E@>'@ ?6
|
||||
M__]][_!_C( '_@/Y_O_WEX<'@ 0W\ #'A( #X'_@!H ) _^/__\!\ 9?!PB
|
||||
M"O > /___@?^ &@ D#_X__\ !P <'!X +&O ?>P/___@?^ &@ D#_X__
|
||||
M]_]P [<'AX &VO__?>P/CX %]_]_^[>'!X %,_ 9_R#@ +A\ B "!_'___!
|
||||
M\ :O!PB !/ <"#@ +A\ B "!_'_^ < #!P> !1[P #W @X "X? (@ @?
|
||||
MQ__@_W #6P>'@ 7>__^]PY" !>#_?_M;AP> !3/P '_@@X !@ F " 'C__CY
|
||||
M\ 8/!PB !/ <"#@ & "8 ( >/_^ P ,'!X %'O .<"#@ & "8 ( >/_
|
||||
M^ >P _L'AX %WO__N=^1@ 0'O_O[AP> "#/P #_@___ #(& !O ?\ 8O@ 8(
|
||||
M@ ?P ?@___ #(& !O 0$ #@ 8'@ @>\ 'X/__P R!@ ;P$% #VX &AX $
|
||||
MWO__QY* !/!?^]N'!X '8? #^'_^ V !Q_ ?_ &!X &"( &< /X?_X#8 '
|
||||
M'\!_@ !@ 8'@ <_< /X?_X#8 ''\!_@ /]@ :'@ *_?Y6 X_[_8<'@ 9@
|
||||
M\ /X?\0@8 $^ P'@ 8(@ 40 _A_Q"!@ 3X & !@> !C^0 _A_Q"!@ 3X
|
||||
M!_V !H> K^?EH "]_V'!X &8'@ !^/ #X & ?_X?P? !@J P?CP ^ !@'_
|
||||
M^ !P 8'@ 8_X 'X\ /@ 8!__@/_< &AX "O^>6@ */_8<'@ 7!_ 'XA&
|
||||
M!0_\#\/ !@J @?B$8 %#_P , &!X %?^ !^(1@ 4/_ #^P :'@ )_XY:
|
||||
M O#^AP> !<_P . $H $_@#[P 8(@ 00 . $H $_@ P 8'@ 5^$ #@!*
|
||||
M!/X /L &AX "?A^7@ $^AP: P&_^!6 ! < ?^ &!X " ?@5@ 0' $!@!@>
|
||||
M O'X%8 $!P!'8 :&@ +^\9B L=_A@: P/W_A>!@ '@!@> @?^%X "^" &
|
||||
M!H # <?^%X "^: &AH "_<^8@ +YOX8&@ 0'Q_^ %8 #!__@!@> P?_@!6
|
||||
M @?^!P: ! ('_X 5@ ('_@>&@ +Z/YB OX?A@: ! X/_\ 6@8 !\ 8'@ ,/
|
||||
M_\ 6@8 !P 8'@ ,/_\ 6@8 !P :&@ 'QFH !SX8'@ (/_A> @_P!@> @_^
|
||||
M%X "#_ &!X "#_X7@ (/\ :H!X "'^ 7@ (#^ 8'@ (?X!> @/X!@> A_@
|
||||
M%X " _@&J > 3\9@ %\!@> 3\9@ %\!@> 3\9@ %\!J@'@ %\&8 !'@8'
|
||||
M@ %\&8 !'@8'@ %\&8 !'@:H!X !X!F 0,&!X !X!F 0,&!X !X!F 0,&
|
||||
MJ"@H'8 !. JH*"@<@ (!_@JH"X "'X #@ (#P!8+@ '\!( " \ %@ '\$ N
|
||||
M > $@ (#P 6 ?P$@ (#_PJ+@ +\?X. OP_E@N A^ X "#/ 6"H " _P$
|
||||
M@ (/\ 2 @'^$ J @/@!( "#_ $@ (#_P2 P/_@ F+@ +\?X. O /E@N
|
||||
M A_ X "&?@6"H "!_P$@ (?^ 6 ?P0"H "!^ $@ (?^ 2 P?_@ . P?_
|
||||
M@ F+@ +\/X. N 'E@J P?^0 . A/X%@J @_@!( "'_@%@ '\!8 !_ H*
|
||||
M@ $(!8 "'_@$@ ,'_X #@ ,'_X )BX "X;^#@ +@!Y8*@ ('_@2 B?\%@J
|
||||
M A_@!( "/_P$@ (!_@6 ?P*"H !& 6 C_\!( #!_^ X #!_^ "8N >&$
|
||||
M@ + Y8*@ (/_ 2 B_\%@J A_P!( "/_P$@ (!_@2 @'^"@J 1 %@ (_
|
||||
M_ 2 P?_@ . P?_@ F+@ 'SA( "P .%@ $SA8 !,XH*@ (/_ 2 C_\!8 !
|
||||
M9 6 :@*"H "/_@$@ (__ 2 P??@ . @'>"@J C?@!( "/_P$@ ,'WX #
|
||||
M@ ,'WX )BX !^X2 L #A8 !=X6 ;N*"H "'_P$@ (YG 6 2 %@ $@"@J
|
||||
M C_X!( ".9P$@ (#WP2 @'>"@J B?P!( "/_P$@ ,#WX #@ ,'WX )BX !
|
||||
M^X2 L #E@J AZ\!( "/_P%@ $@!8 !( H*@ (^N 2 C_\!( " ]\$@ (!
|
||||
MW@H*@ (O\ 2 C_\!( " ]\$@ ,'WX )BX !^X2 L9CE@J AU<!( "/=P6
|
||||
M"H "/5@$@ (__ 2 @'^!( " ?X*"H "+_ $@ (SK 2 @'_!( #'__@"8N
|
||||
M ?N$@ +.<Y8*@ (>O 2 AB(!8 !> 6 7@*"H "/K@$@ (?^ 2 @&&!( "
|
||||
M 88*"H "+_ $@ (7> 2 @&'!( #/X?@"8N ?N$@ +O]X6 8>%@ &'B@J
|
||||
M A_\!( "*!06"H "/_@$@ (O] 6 ?P%@ '\"@J BO0!( "+_0%@ '^!( #
|
||||
M/__P"8N ?N$@ +7ZY8*@ ([W 2 @O0!( # P. X $ 08 < @*@ (_^ 2
|
||||
M @PP!( # P. !( #? !P" J @PP!( "## %@ '\!( $/OWP< B+@ '[A( "
|
||||
M_#^*@ /X_'^)"H ".]P$@ (($ 2 ! >'P#@#@ -^#_@("H "/#@$@ (/\ 2
|
||||
M! >'@#@#@ -\#_@("H "## $@ (/\ 6 "7@ . /_W_^ B*@ +\.XR ;^#
|
||||
M@ /X_'^)"H "/#P$@ (,, 2 "@__X/P 0$#_X("H "/_ $@ (/\ 2 ! O_
|
||||
M@/P$@ (/_@@*@ (+T 2 @_P!X '_ ._O__@B+@ 'SBH #^_^?@X "^'B*
|
||||
M"H 6/_\/_ !^ !^ '__]_@ '@#__@@*@!8_\P_\ '__X'X 8 W^
|
||||
M 8 _^" J "@PS#_P ?__@?@$@ @-_@ ?\/_@B+@ 'S@X $_@?@?X.
|
||||
M _@ #X. _@!#XD*@ T__[_^ #__X?\ _@P* !#\!__\("H 6/^.__@ '
|
||||
M___G_ ,_\'_P . /_P@*@ H'X[_^ ?__^?\!( "!_\#@ /^#_\(BX !
|
||||
MXX. !/@'X!^#@ /S_P>#@ /X @^)"H !/X,!@ @"__]O_ ?X,"@ 1_P___
|
||||
M" J %C@'__\ !O__;_P &/_!_\ & !_\("X ) ___ ;__V_\!( "!_\#
|
||||
M@ ,\!_\(BX !YX. !/D#P)^#@ /C_P>#@ /@ >)"H !#X. "8 #?_[__
|
||||
M^X,"A @)@!<!__Q__X /?_[__ R?X#_P Q^0#_P@)@!$!\ !__X /?_[_
|
||||
M_ @ #_P. Q@#_PB+@ C\?___\( !#X. \O^ X. \?\ XD*@ 'G@X 2
|
||||
M@ >__?_\ #Z___^ #_\___" F %P/_^#__@ ^__?_\ #8_@'^ #/X /_
|
||||
M" F $0,8 #__@ ^__?_\ # '^ X #% /_"(N "/@____P0 (/@X #V_X!
|
||||
M@X #S_0#B0F %P'G'__[@ ??^__\ 'Z___X '_\__^" F %P?_X!_[@ _?
|
||||
M^__\ ' _$'X '/X '^" F $088X!_[@ _?^__\ # $'X X #% '^"(N
|
||||
M". ?___P( 0/@X #P_Q!@X #S_0!B0F %P/P'__Q@ >O=?_X '#/^/@ ![
|
||||
M]_G\" F %P__X _Q@ ^O]?_X ' ''W@ '; .?\" F %PP/X _Q@ ^O]?_X
|
||||
M # 'W@ &8]^?\"(N #N /___QT N/___YPQQ]@X #W_?GB0F %P_\/__@
|
||||
M _7<__X 8_W_'X C /'\" F %P__P _@ _7\__X ' #'_X 'C /_\
|
||||
M" J %@/ #^ #]?S__@ !__@?_@ > __P(BX (P ____'H#X^$@ +L?X0!
|
||||
MB@F 0^#@!/ _7\__P "'_/\ #D//\" F %P__^@_ _7\__P #@
|
||||
M#'_\ ##@/_\" J %D "#\ #]?S__ ./@?_P ,!W__P(BX (^@____'H
|
||||
M#X^#@ +[[(6 ?>*"8 7",?_'^ , ##\ +___P 'R__P("8 +#__[
|
||||
M[^ #\ #_\ #@ D(?_P '@__P("8 7!_@#[^ #\ #_\ , ?_P (5
|
||||
M__P(BX "^^^)@ /[SW^$@ 'UB@J %L__#^ "/'#^ +___@ (1__@(
|
||||
M"8 +#__C_^ #R/'_^ $@ A_^ @'_^ @)@!</\ /_X /(\?_X P!_
|
||||
M^ ?;_^ B+@ 'CA( "_#^$@ /[?'^$@ 'WB@F "P''_X_@ G[X_@ X*
|
||||
M!_@ /S__@("8 +#__C_^ #B?O_^ #@ E\?_@ /@__@("8 1#_@#_^
|
||||
M#B?O_^ , ?_@#@ ,4__@(BX !XX2 O@?A8 "?'^$@ 'TB@> #3@ __
|
||||
MG^/ ?O_^ #@H '^ _/_^ @'@!H@ 8_Z__CP 7[__@ #_'_X #
|
||||
MX/_X' <'@!,&' 8P __@ 7[__@ # '_X X #%/_X"(N !^O__#__Z!>%
|
||||
M@ +\?X2 !/3___>'!X -. '___[_ ]__X ."@ ?X #\__X" > &B
|
||||
M #_C_^_P #O?_^ /\/_@ /@?_C\!P> $P<\ " #_^ #O?_^ ,
|
||||
M/_@#@ ,4?_@(BX 'X__QC__$(X6 OP_A( $]'__(X<'@ 0X /@X &^ ,
|
||||
M/__ X* !_@ 'S__@(!X :( ?^O___@ /#__P !_P_^ _!_^_P'
|
||||
M!X 9!_P < /_X /#__P !P _^ @Q_^ B+@ ?K_^!'_\/#A8 "_#^$
|
||||
M@ 3\?_PGAP> &3 #__\]_X !O[^\ '__[@ '__S@(!X :( ?^/S
|
||||
MW_@ ._O[P #_X?N _P_/_P'!X 9#_P 0 /SP ._O[P\ #@ ?O^
|
||||
M @ _. B+@ ?C_^!'_\6'A8 "_A^$@ 3\/_@?AP> &3 #__\]WX ?[^\
|
||||
M ?__S@( '__B (!X :( __WSW_@ )_O[P #_\/. @ !_X>/_ '!X 9
|
||||
M#_P P 'SP@ )_O[S_ " //_@ !@ >( B+@ ?]_^H7_]F'AH !#X2 !/X?
|
||||
MX!^'!X 9, ?__YV)@ '[?YQ40 "__^)P0 __^( @'@!H@ '_\?G?^ _
|
||||
MM_G ! ?_PX@! /_PX__ <&@!H(#_P1@ 'YQV /[?YVKP % ../P # .
|
||||
M( B+@ ?Q_^=G_\/+AH !#X6 P_@/X<&@ </ !?__X X /?[_P$]( '__\
|
||||
M#@( !__^"0: &P$ ?_^G@?^ #_O_ @ __X0 @ ?_X8__ <'@H 6]H
|
||||
M>!_X /^_\"PN " !#'^ !@ !@F+@ +Z?X. @/ AH !AX6 X?!^X<&@!D/
|
||||
M__P#___X 0 _[_P#!$ +__\& $ #___"0: &P& ___+@?_ '_O_ 0!_
|
||||
M_\0 0!__\$__ <(@!<#_ .!F< ?^_\'/O % !&?_ ' 0F+@ C\O_N_
|
||||
M_@/ ?X6 <>%@ /!P:.'!H 9!\ !?__\ -$ ?\_\$ %___ @#___PD&
|
||||
M@ T!P ?__T0'_P!_S_P X +?__H " ___PO_T'!X :/__Z 0&MP!_S_P
|
||||
M/_\ ( __^ P @ $'BX (_1____X#P'^%@ 'KA8 #\, #AP> "#?\!___
|
||||
M ")$!( %0 " !_\$@ 4/_^" 0<'@ @P ?__P ?^ 2 #A_X@ ?_ !_X __
|
||||
MX/__!P> 7@%@ (]N 2 ";__@ ?__@ . L [!Y^ D ZAP> DSD!( "
|
||||
M 8(&@ & !8 &0 /@ "$!P> 4 %@ (^?@2 S_\@ . "#_\0 /@'_^!P:
|
||||
M P'S& 2 CY^!( )\\^ !\\_ X "7WH'AX "_.>6@ +1QX<'@ *Q* 6
|
||||
M 0($@ ,-,( #@ ,-,$ #@ (@0 <'@ *MS 2 C_^!( #/_R X #/_Q X "
|
||||
M<<8'!X "[]P$@ (__@2 ">RW@ >RWP . ENN!X> OWOEH "\<>'!X "
|
||||
M4" $@ (GY 2 P(@@ . T(@0 2 40'!X "3]P$@ (X' 2 S_<@ . S_<
|
||||
M0 . G_^!P> N_<!( ".!P$@ G]WX &]W\ #@ )_N@>-@ +X'YD'@ &P
|
||||
M!8 ", P$@ ."@( #@ /"@$ #@ )@!@<'@ *O_ 2 B_T!( #/_R X #/_Q
|
||||
M X "?_X'!H # >_\!( "+_0$@ E__X $__\ #@ )__@>?@ *__8<'@ ,1
|
||||
M! P#@ 0,, #@!( '@ L 0 . !# D X%!X ##O@, X )>]X X '_B
|
||||
M X #/_Q X $/]P #@4'@ ,N^ P#@ ][W@#@ #__X $__\ #@ 0OW .
|
||||
M!8> ?Z8@ '?AP> "ACP#A@ &?D _@#@ <!@ L/"!( $$>P /@4'@ H'
|
||||
M" X8 &?^X/X X " 8 #@ )\/@2 !!X< #X%!X 5!P@.& !__^#^ ?_^
|
||||
M !?#_P X $'A0 /@6(@ $/D( "_#^$@ +^'X<'@!0, ]\ &#R ?X !#
|
||||
MR8'\ +'X@2 !!@,!'X%!X * _ /? "?_?G^ . !P&!_ >!X$@ 0?_ 1^
|
||||
M!0> %0/P#WP ___Y_@ #PW@?P 7@?\ . !!?\!'X%DX "_#^$@ +X'XT'
|
||||
M@!P&( ?^ (!D _\ "@P/\ +%8@/P ,/ S^!0> ' ' !_X !?_O[_P
|
||||
M :C _P 'U^ _ _\#/X%!X < < '_@ '___O_ /K\#_ !?7_S\
|
||||
M"]P,_@63@ +^OX2 OU_C0: !0'__ __ X 5@ _\ @0 !_^ +CQ _X .
|
||||
M< _\!0: !P'V( __ ^#@!/\ _!P__^ #\/$_X __ _\!0> ' 8CC_\
|
||||
M#_]___P !^__[_X #?P___@ 6@#_P%F8 "_#^$@ +'XX<&@!T#__P?_P "
|
||||
M !/^ $ 0'_@ D P'_ #_ /_ 4&@ <##R ?_P /@X 3^ ?X ?__@ (
|
||||
M'_Q/_ __\/_ 4'@!P&(]__ W__[_X !_O__O^ ]____\ #'XP_\!9^
|
||||
M L?CAP: '0?__!__ $ @(?X 0# /^ "8& /\ #P!_\!0: !P8#P!__
|
||||
M !^#@!/X #_P#__^ #P?^._\ '__Y_\!0> # /#__\ 'O]_?_@ /X. #?X
|
||||
M/W____P </#G_P%GX "Q^.'!H =#_ #_X ,@+!_@ 0 0X _X 0!_P _P
|
||||
M / ?_@%!H 9# #_X '_?W__@ ?_P___X ?A_P__P 8. ?@%!X <#___
|
||||
M_@ ?M_7_^ ____]_@ _[__]_ !P /_^ 6?@ + 'X<&@!</^ /_X P4,'
|
||||
M\ @>!A_@ #^ !_ 2 C_X!0: !PP __@!^#@ /P '^#@ G^ 'X/X'_\
|
||||
M .#@ 'X!0> 0>#@!B '_Z___ ?W__G_X ?_?___P \ #__@%GX "P!^'
|
||||
M!H =#_P"#__@$>(G#\ !X P?P C_@0?P % */_H%!H '"$ "#__@'X.
|
||||
M#\ ?7____P ?C@ ?_P X. ?H%!X !0X. &. .W=OWP !X?_\__ !]P!^_
|
||||
M_ #T O_^@6?@ +0'X<&@!T/]@,/^> 3\ ^?X #@ '!_ #_^'!_ \ \?
|
||||
M_@4'@ ;P P_YX!^#@ /@ '^#@ G\ '_X ?_\ >#@ '^!0> ',G___G@#>_W
|
||||
M;^ ??__O_P ?< ?O_P !_ /__X%GX "\#^'!H =#_,#C_@ ?"/W^ > #
|
||||
M@?P !__CX?P / /'_X%!H ' ? #C_@ #X. #^ ?_OO__P ?_@#__P !X.
|
||||
M ?X%!H = <S___@ #^]WK^ ?]____P >< ?G_P !_ /__X%GX "\#^'!H =
|
||||
M#_&#C_@ ? /C_ &? #D_@ 0?_C@_@ _ /W_@%!H ' ? #C_@ #X. #_
|
||||
M/^____@ ?_@#__@ !X. ?@%!H ' <Y___@ #X. $_ )\__[_@ /\ ?_?@
|
||||
M!? /O_@%GX "\#^'!X <L,,/\ !X.>/\ 0__D/^ !_^.#^ T \?X 4&
|
||||
M@!T/L /_\ /X ?_\ ?X '_^ _^ /_^ 'W___X 4&@!T/CS__\ /_Q__
|
||||
M\ /@ ?W^ _P!__^ 'T __X 6?@ +P?X<'@!8P<X_P # XP?P #_\0_X
|
||||
M '_XX?X X #!Q_ !0: '0XP __P !_ __P _@ ?_X !_X __X <?___
|
||||
M!0: '0X/C__P !__'__P ^ #__X !_ '__X < !__ !9^ >&(!X 6,#^/
|
||||
M\ !P..'\ __,/^ !_^./^ . P,_P 4&@!T., /_\ ?X ?_\ /\ /_
|
||||
M^ /^ /_^ #/___P 4&@!T.#\/_\ ?_Q__\ /P __^ /P!__^ # /_
|
||||
MP 6?@ '#B > !# ?__ #@ \#A^ #_CG^ #_C_^ #@ .#_< %!X <, /_
|
||||
M\ >, __X #. /_X . /_X /__]P 4'@! /X__P !X____@ , '__@
|
||||
M X #'__@ X #@_W !9^ <>(!X $, /]\ . %0./P /^/_X /^/_X
|
||||
M </YP 4'@!PP _WP XX'__ X __@ X __@ ___G !0> "@___?
|
||||
M#C___\ #@ ,?_^ #@ D?_^ '#^< %GX !QX@'@ 00!_G X 5!__ ?
|
||||
MX__ _X__ !P_' !0> '! '^< #Y__\ #@'_\ #@#_\ #__
|
||||
M\< %!X 0#__YP /_O_P (!__P . "1__P </QP 6?@ ''B > '!_[
|
||||
M\< "&'\\ /#\< /#_< '#\\ %!X <'_OQP /__SP /__Q
|
||||
MP /__]P /__SP 4'@!P/__' ?^_/ ___' ___W !P_/
|
||||
M!9^ <>(!X <$<)QP (8?SP \/QP \/YP </SP 4'@!P1PG'
|
||||
M ___/ ___' ___G ___/ !0> ' __\< !_[\\ #__\<
|
||||
M #__^< '#\\ %GX !QX@'@!SYP!A #P_' #P_# #P_# !
|
||||
MP_& !0> ' ' &$ #__\< #__\, #__\, #__\8 %!X <!__X0
|
||||
M/__QP /__PP /__PP </Q@ 6?@ ''B : ! '!@X@#@ D+$/& !
|
||||
M@'@#@ ,!@'@#@ -#@_ &!H $ <& " .!@ X_\8 ?^_^ ?^_^ . S^=
|
||||
M\ 8'@ ,_O'@#@ _W+_& '_O_@ '_O_@#@ ,[C? &J : ! &! X@#@ ,G
|
||||
M!' #@ .I%3@#@ .I%3@#@ .C!> &!H 6 8$ " ?\?\ _]_^ _]_
|
||||
M^ . U\:X 8'@!5_/'@ '?&_ -7:O@ -7:O@#@ -;"N &J : ! &!
|
||||
M!^ #@ .G!7 #@ .I%3 #@ .I%3 #@ ,& . &!H " 8$$@! !_Q_P #_W_P
|
||||
M #_W_P X #_A_@!@> %7\X$ 5\:\ U=J\ U=J\ . _X?X :H
|
||||
M #_ B@H**@/@ '@#H " > (#X !X Z @_@" ^ > .@ (/^ B>@ +P!X@.
|
||||
M@ (!\ . 3X*@ (#P @.@ (!\ Z C_ " Z @'P X " ? )@ (_\ B>@ +
|
||||
M#X@.@ (!\ . 7 *@ (/P @.@ (!\ Z G_ " Z @'P X "#_@)@ )_X B>
|
||||
M@ * 'X@.@ ("X . 6 *@ %_"0Z @+@#H$)#H " ^ #@ (?^ F!@ '@")X!
|
||||
M@ $?B B R 0 . C^@ X !8 6 ?P$@ %^"0Z C^@"8 !_ . @'^"0B
|
||||
M R 0 . C_@ X "'_@(@ ,!_^ (F8 ! X. _X 'X@(@ -@ & #@8 !P .
|
||||
M 6 $@ ,'_X #@0D.@8 !P B !P?_@ ?\)"( #8 !@ X& < #@ (?^ B
|
||||
M P'_P B8@ CX '____X /X@(@ AP & '_P . 6 $@ ,.+\ #@8 !@ @-
|
||||
M@ ,!_\ (@ @.+\ /_@ @(@ AP & '_P . A_X"( # __ "(J 7^-
|
||||
M@ CP #____Q^/X@(@ H__N /_X !@X +_@ $/_@ !_X (#8 # __@
|
||||
M"( ($/_@ #_X ("( (/X;@ #_^ -@ ,#_\ (B( "O@:.@ C@ !____Q_
|
||||
M/X@(@ A__^ ?_\ B "!?NX >N " J !B ?_\ B "!?NX ^N
|
||||
M" B "G\#X !__P .$!X # __ "(B _P#WXV ". '____/\_B B "#__
|
||||
MP !__P"( (/__P !U8 ("H &0 !__P"( (/__P #U8 ("( */@'
|
||||
M '__ 8. ?X'@ ,#_\ (B( #^ &_C8 (P /___\_S^("( "#_\#@ @.
|
||||
M ' '__P. ""@ \ >N " V P__\ . A;1 X (+__P #ZX ("( !
|
||||
M# 2 P__\ 2 0$#@ ('_P. P/_P B(@ +P (B _X6T8. ",?_#____/\_
|
||||
MB B @__ X (# P !XQX#@ AQ2G '_@ @-@ ,/__ #@ )_^@. "'XQ
|
||||
M\ _^ " B 0@$@ ,/__ #@ (<X@. " __@ [W "(B O B( #_F,;
|
||||
M@X (CWN/___\_S^("( "#_\#@ ,,!# #@ +)0@. "'*U$ [V " V P\<
|
||||
M< .!@ '^ X (?)30 #_X ("( !# 2 P_[\ . C[^ X (#^_ #P\ (
|
||||
MB( "\ ")@ +K7X. "(ZUS____/\_B B @__ X ## 0P!( !@@. "E 0,
|
||||
M [V &  ##__P X& ?X#@ I?__ /#@ !@!@V P_[\ .!@ %^ X *
|
||||
M#^_ #P\ 8 :(@ +X 8Z "(__S____,,_B B @__ X ## P!( ! @.
|
||||
M"I@(< \. #_P ##__P X& ?X#@ J?__ /_@ _\!@V P__\ .!
|
||||
M@ '^ X *!_> #O< /_ :8@ @'_X____S_/X@(@ (((0. P0 ( . #PA$
|
||||
M8 N !P #_[#__@8(@ (&<@. P?_X . #W>\8 O__P #_[#__@8(
|
||||
M@ ('W@. P?_X . #W>\8 !_^ #P_#__@:(@ +^<XF O>_@X (!_^/
|
||||
M___\_S^("( ""#$#@ ,"'$ #@ ]'B?P8 ;1X\ _\[__X&"( "!_X#@ ,#
|
||||
MX\ #@ ]X>?P8 ;>'\ _\[__X&"( "!\X#@ ,#X\ #@ =X>?P8 .' X %
|
||||
M __[__X&CH !XX2 #?A____^ X</___\?C^("8 !$ . P, P . #V 9_GP#
|
||||
M?C'P #@'___@8(@ (/_P. P/_P . #W_Y_GP#?\_P #@'___@8(@ (/
|
||||
M[P. P/_P . !W_Y_GP \\#@ $#@X !_@:7@ G\ \\/___\ #^("( "" $#
|
||||
M@!4#@< ? P,?_^ O\#Y_ ,'/_\(&"( "#_\#@!4#_\ ? _\?_^ L'^
|
||||
M)_ #\'/_\(&"( "#_\#@!$#_\ ? _\?_^ '^!_ #X. <(&EX )_#__
|
||||
MW___\ /B B !03B ( !@X #OX #@X ,_@<Y_X/_ Y_@__ !@B "P<> (
|
||||
M 'X /X #@X ,_@<!_@/_ #__@__ !@B !0<> ( !@X .OX #\#__@#'_G__
|
||||
M #^#@ ' !HF #Q____X ?@!___P/P/__^(6 \ X@(@ 4&9@& (2 $=@%
|
||||
MG_G__@XX_X'_ !Y\ ?^ !@B "P>> 8 #P _]@'@X ,_@X _ '_ '[^ ?^
|
||||
M!@B !0>> 8 A( -V /P'_^ <?\?_\ ?X. 8 &B8 !GX,!@ H\ /__^ _
|
||||
M?__QA8 #@ !B B !0,/ X A( 1^ ^?^?_^,C\"@?^ /P !_X &"( + _\#
|
||||
M@ " '_^ ^#@ S^,P _^ ?WP!_X &"( 6 _\#@ !___[_^ '@#_^ <#]
|
||||
M?_^ ?X. 8 &C8 +@ !___P!X __\&%@ . &("( : ?CC@ ?__C_^ /_
|
||||
M_S_^)@.'@?^ ?X _X &"( +!__C@ #@ ?_^ ^#@ S^)T$$#_^ _X _X &
|
||||
M"( 5!__C@ #G_^?_^ P /_^ ?QX?_^ A( !@ :(@ +Y^(. "^ !____
|
||||
M___!A0.("( 9 ?A[X ?__C_X "[/!_^/@// ?^ __\ _@<(@ L/__O@ .
|
||||
M!__@'X. "_X_P@@'_X#__P#^!PB %0__^^ X__'_^ ? /__@'\,/__@(.
|
||||
M ?X'B( (\?A____@ ># 8 $ ___P84#B F &/ _^ ?__C_P #_-!_^>@//
|
||||
M ?^ __X _ <(@ L____X .0 )__ 'X. "_Y[X ?_X#__@#\!PB %3____@
|
||||
MY__G_\ ? /__@'\,/__@(. ?P'B( (P/ ____D "># 8 $ ___@84#B B
|
||||
M&7 '__PG! Y_\ #Y_\?_]X;SV'_@!_^,/X'"( %0_P?__"$@ + 'X2 "M_X
|
||||
M '__@/_^-_X'"( !#X. $?!O__;_P!\ ___@>PP__^ @X !_@>(@ +P (.
|
||||
M _P /X,!@ 0#__^AA8 #^ WB B &? #__@GBBY_\ #YO\?_\X;CF'_@!/\
|
||||
M./X'"( %@?@/_^"$@ + 'X2 "L_X '__@//\/_X'"( !#X. %>!O__;_P!\
|
||||
M ___@>1Q__^ \____@>(@ +P (. _P /X,!@ 4#__^Q]X2 _P /X@'@!H!
|
||||
M\ G_P ,1##_@ .?SQ__GCP \?^ _YX_P<)@ 3P!_\ A( "@!^$@ J?_ #_
|
||||
M_X#C_G__!PB !0__W_\ A( (@!\ ___@<>#@ * XX,'B( "\ "#@ /\ #^#
|
||||
M 8 % ___X>>$@ /\ '^(!X : _@!V_\ #((P_X !F<X?\^8?_^'_@ !\?/\'
|
||||
M"( %. '#_P"$@ * 'X. "_/G_@'__X#!_'__!PB !3__Y_\ A( -@!\ __S
|
||||
MX>X!__^ P8,'B( "^ &#@ /\ #^# 8 % ___^>^$@ /^ '^(!X : _P#^_X
|
||||
M#1%P_X #^?\?\8P^ ?'_ #^?_X'"( %? /C_@"$@ * 'X. "_&-_@'__P !
|
||||
M_G_^!PB !7__Y_X A( (@!\ __Q@<># 8 $ ?___@>(@ +\ X. _P /X,!
|
||||
M@ 4#___SYX2 _X ?X@'@!H#_ /__@ . +#_@ /_]Q_P #ZD\?P 'P_[@<(
|
||||
M@ 5\ ^/^ (2 H ?@X +\ '^ /_\ '\/^X'"( %?__C_@"$@!" 'X '__ !
|
||||
M]UO__ !___N!XB OP#@X #_ _@X "@ >#@ 'WA( #_@ _B B !@__P_X
|
||||
M X,"@ Y@!__@ #7^__@ /Z_[@<'@ 4#R!'__@. C__ X -!__@ #0 __@
|
||||
M _Z_[@<'@!H#R '__@ #@#__ ?___@ 8!__@ ___[@>)@ 'O@X #_ _
|
||||
MB( !SX2 _P /X@)@!@XP_P ____@ 8 ?_X '___X '^/\P'!X % \ X
|
||||
M__P#@ (__@. #0?_X $ /_X /^/\P'!X : \_'__P X(__@ '___X $
|
||||
M /_X /__\P'B8 !QX. _P /XV _P /X@)@!@8X_@ ]___@ 8 ?_P #
|
||||
MMW_X #^O\ '!X % X 8__@#@ (__@. #0?_P ,'_X ?^O\ '!X : X_G
|
||||
M__@ Z(__@ '___P $>/_X ?__\ 'B8 !YX. _P@/XV _@ /X@(@!@/
|
||||
MQ__P /?_YP #,'YX ![-^. #_C\("( 8" #_\ '#^< !##^> P
|
||||
M?C@ !_X_" F %SC_\ #OC^< !/_^> !\_C@ !___"(V _P\/XV _@
|
||||
M/X@(@!@/S__P /__YP ,'YX ![M^> #_]\("( 8" #_\ '#^< !_
|
||||
M_^> X?G@ #__?" F %S#_\ #GC^< !__^> !\_G@ #___"(V _P<
|
||||
M/XV _ 'X@(@!D/___ /__YP ,'XX !7A^> '_Q^ !PF &&#_P
|
||||
M'#^< !__^. +Y?G@ '_\?@ <)@!A@_\ YX_G ?__C@ "__YX !__
|
||||
M_X 'C8 #_!P_C8 #X ?B B "#___P '___ X # P#@ X (<'XP !?_I\ '
|
||||
M"8 "\#\#@!,\!P ___X !W/^, !__Z? !PF &/ _ ?__\ /__^
|
||||
M ?W_C ?___P >-@ /@/ >-@ . >("( (?\_\ ?\_\#@ ,# . #@ A@
|
||||
M'@ /__+P <)@ + ' . $S ' #___@ ?Y_X /__R\ '"8 4P!P !_S
|
||||
M_P ___X '^?^ "#@ ' !XV ^ \!XT"@ $#B B "'_'_ '_'_ X #
|
||||
M#@#@ X '8 X %__T0@(@ ,!P!P#@!)P!P _X_X /^?^ /__]$("( 5
|
||||
M < < ?\?\ /^/^ #_G_@ #@PB-@ /@?@>,@ 3\ !B!V W__\ @=
|
||||
4@ -___ ('8 #?__P")V X #X@
|
||||
end
|
||||
1236
outdated/win/gem/wingem.c
Normal file
1236
outdated/win/gem/wingem.c
Normal file
File diff suppressed because it is too large
Load Diff
3294
outdated/win/gem/wingem1.c
Normal file
3294
outdated/win/gem/wingem1.c
Normal file
File diff suppressed because it is too large
Load Diff
184
outdated/win/gem/xpm2img.c
Normal file
184
outdated/win/gem/xpm2img.c
Normal file
@@ -0,0 +1,184 @@
|
||||
/* NetHack 3.6 xpm2img.c $NHDT-Date: 1432512809 2015/05/25 00:13:29 $ $NHDT-Branch: master $:$NHDT-Revision: 1.7 $ */
|
||||
/* Copyright (c) Christian Bressler 2002 */
|
||||
/* NetHack may be freely redistributed. See license for details. */
|
||||
/* This is mainly a reworked tile2bmp.c + xpm2iff.c -- Marvin */
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <ctype.h>
|
||||
#include "bitmfile.h"
|
||||
#define TRUE 1
|
||||
#define FALSE 0
|
||||
void get_color(unsigned int colind, struct RGB *rgb);
|
||||
void get_pixel(int x, int y, unsigned int *colind);
|
||||
char *xpmgetline();
|
||||
unsigned int **Bild_daten;
|
||||
/* translation table from xpm characters to RGB and colormap slots */
|
||||
struct Ttable {
|
||||
char flag;
|
||||
struct RGB col;
|
||||
int slot; /* output colortable index */
|
||||
} ttable[256];
|
||||
struct RGB *ColorMap;
|
||||
int num_colors = 0;
|
||||
int width = 0, height = 0;
|
||||
int initflag;
|
||||
FILE *fp;
|
||||
int
|
||||
main(argc, argv)
|
||||
int argc;
|
||||
char *argv[];
|
||||
{
|
||||
int i;
|
||||
int row, col, planeno;
|
||||
int farben, planes;
|
||||
if (argc != 3) {
|
||||
fprintf(stderr, "usage: tile2img infile.xpm outfile.img\n");
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
initflag = 0;
|
||||
fp = fopen(argv[2], "wb");
|
||||
if (!fp) {
|
||||
printf("Error creating IMG-file %s, aborting.\n", argv[2]);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
fclose(fp);
|
||||
if (fopen_xpm_file(argv[1], "r") != TRUE) {
|
||||
printf("Error reading xpm-file %s, aborting.\n", argv[1]);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
Bild_daten =
|
||||
(unsigned int **) malloc((long) height * sizeof(unsigned int *));
|
||||
for (i = 0; i < height; i++)
|
||||
Bild_daten[i] =
|
||||
(unsigned int *) malloc((long) width * sizeof(unsigned int));
|
||||
for (row = 0; row < height; row++) {
|
||||
char *xb = xpmgetline();
|
||||
int plane_offset;
|
||||
if (xb == 0) {
|
||||
printf("Error to few lines in xpm-file %s, aborting.\n", argv[1]);
|
||||
exit(EXIT_FAILURE);
|
||||
}
|
||||
for (col = 0; col < width; col++) {
|
||||
int color = xb[col];
|
||||
if (!ttable[color].flag)
|
||||
fprintf(stderr, "Bad image data\n");
|
||||
Bild_daten[row][col] = ttable[color].slot;
|
||||
}
|
||||
}
|
||||
if (num_colors > 256) {
|
||||
fprintf(stderr, "ERROR: zuviele Farben\n");
|
||||
exit(EXIT_FAILURE);
|
||||
} else if (num_colors > 16) {
|
||||
farben = 256;
|
||||
planes = 8;
|
||||
} else if (num_colors > 2) {
|
||||
farben = 16;
|
||||
planes = 4;
|
||||
} else {
|
||||
farben = 2;
|
||||
planes = 1;
|
||||
}
|
||||
bitmap_to_file(XIMG, width, height, 372, 372, planes, farben, argv[2],
|
||||
get_color, get_pixel);
|
||||
exit(EXIT_SUCCESS);
|
||||
/*NOTREACHED*/
|
||||
return 0;
|
||||
}
|
||||
void
|
||||
get_color(unsigned int colind, struct RGB *rgb)
|
||||
{
|
||||
rgb->r = (1000L * (long) ColorMap[colind].r) / 0xFF;
|
||||
rgb->g = (1000L * (long) ColorMap[colind].g) / 0xFF;
|
||||
rgb->b = (1000L * (long) ColorMap[colind].b) / 0xFF;
|
||||
}
|
||||
void
|
||||
get_pixel(int x, int y, unsigned int *colind)
|
||||
{
|
||||
*colind = Bild_daten[y][x];
|
||||
}
|
||||
FILE *xpmfh = 0;
|
||||
char initbuf[200];
|
||||
char *xpmbuf = initbuf;
|
||||
/* version 1. Reads the raw xpm file, NOT the compiled version. This is
|
||||
* not a particularly good idea but I don't have time to do the right thing
|
||||
* at this point, even if I was absolutely sure what that was. */
|
||||
fopen_xpm_file(const char *fn, const char *mode)
|
||||
{
|
||||
int temp;
|
||||
char *xb;
|
||||
if (strcmp(mode, "r"))
|
||||
return FALSE; /* no choice now */
|
||||
if (xpmfh)
|
||||
return FALSE; /* one file at a time */
|
||||
xpmfh = fopen(fn, mode);
|
||||
if (!xpmfh)
|
||||
return FALSE; /* I'm hard to please */
|
||||
/* read the header */
|
||||
xb = xpmgetline();
|
||||
if (xb == 0)
|
||||
return FALSE;
|
||||
if (4 != sscanf(xb, "%d %d %d %d", &width, &height, &num_colors, &temp))
|
||||
return FALSE; /* bad header */
|
||||
/* replace the original buffer with one big enough for
|
||||
* the real data
|
||||
*/
|
||||
/* XXX */
|
||||
xpmbuf = malloc(width * 2);
|
||||
if (!xpmbuf) {
|
||||
fprintf(stderr, "ERROR: Can't allocate line buffer\n");
|
||||
exit(1);
|
||||
}
|
||||
if (temp != 1)
|
||||
return FALSE; /* limitation of this code */
|
||||
{
|
||||
/* read the colormap and translation table */
|
||||
int ccount = -1;
|
||||
ColorMap =
|
||||
(struct RGB *) malloc((long) num_colors * sizeof(struct RGB));
|
||||
while (ccount++ < (num_colors - 1)) {
|
||||
char index;
|
||||
int r, g, b;
|
||||
xb = xpmgetline();
|
||||
if (xb == 0)
|
||||
return FALSE;
|
||||
if (4 != sscanf(xb, "%c c #%2x%2x%2x", &index, &r, &g, &b)) {
|
||||
fprintf(stderr, "Bad color entry: %s\n", xb);
|
||||
return FALSE;
|
||||
}
|
||||
ttable[index].flag = 1; /* this color is valid */
|
||||
ttable[index].col.r = r;
|
||||
ttable[index].col.g = g;
|
||||
ttable[index].col.b = b;
|
||||
ttable[index].slot = ccount;
|
||||
ColorMap[ccount].r = r;
|
||||
ColorMap[ccount].g = g;
|
||||
ColorMap[ccount].b = b;
|
||||
}
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
/* This deserves better. Don't read it too closely - you'll get ill. */
|
||||
#define bufsz 2048
|
||||
char buf[bufsz];
|
||||
char *
|
||||
xpmgetline()
|
||||
{
|
||||
char *bp;
|
||||
do {
|
||||
if (fgets(buf, bufsz, xpmfh) == 0)
|
||||
return 0;
|
||||
} while (buf[0] != '"');
|
||||
/* strip off the trailing <",> if any */
|
||||
for (bp = buf; *bp; bp++)
|
||||
;
|
||||
bp--;
|
||||
while (isspace(*bp))
|
||||
bp--;
|
||||
if (*bp == ',')
|
||||
bp--;
|
||||
if (*bp == '"')
|
||||
bp--;
|
||||
bp++;
|
||||
*bp = '\0';
|
||||
return &buf[1];
|
||||
}
|
||||
Reference in New Issue
Block a user