home *** CD-ROM | disk | FTP | other *** search
/ NetNews Usenet Archive 1993 #3 / NN_1993_3.iso / spool / comp / sources / hp48 / 304 < prev    next >
Encoding:
Text File  |  1993-01-22  |  31.4 KB  |  754 lines

  1. Newsgroups: comp.sources.hp48
  2. Path: sparky!uunet!seq!spell
  3. From: Jonathan Tomohiko Higa <jonhiga@phoenix.Princeton.EDU>
  4. Subject:  v08i007:  tasc.jth - Tasc v3.0 - ->ASC / ASC->, Part01/01
  5. Message-ID: <1993Jan22.043824.2923@seq.uncwil.edu>
  6. Followup-To: comp.sys.hp48
  7. Sender: spell@seq.uncwil.edu (Chris Spell)
  8. Organization: Univ. of North Carolina @ Wilmington
  9. Date: Fri, 22 Jan 1993 04:38:24 GMT
  10. Approved: spell@seq.uncwil.edu
  11. Lines: 745
  12.  
  13. Checksum:  202422666 (verify with brik -cv)
  14. Submitted-by: Jonathan Tomohiko Higa <jonhiga@phoenix.Princeton.EDU>
  15. Posting-number: Volume 8, Issue 7
  16. Archive-name: tasc.jth
  17.  
  18. It's finally ready. ...  Here follows the official public release of
  19. TASC version 3.
  20.  
  21. BEGIN_RDME tasc.rdm
  22. TASC (version 3) is an ASC <-> HP48 binary translator.
  23.  
  24. Why do you want TASC at all?
  25. 1. Do the translation on another computer instead of on the HP48.  A binary
  26. is approximately half the size of its ASC equivalent; therefore, you
  27. will require less battery power.
  28. 2. It behaves like uuencode to the extent that you don't have to strip off
  29. the non-ASC parts of a post or message if it contains only one ASCed object.
  30. I've been using commands like | "tasc - newgame.bin" within my mail reader
  31. to extract HP48 programs with ease.
  32. 3. There's no memory limit.  Some programs are too large to be
  33. downloaded in ASC form but can still be downloaded in binary form.
  34.  
  35. Why is it better than previous versions?
  36. 1. It determines the file type by inspecting the file instead of expecting
  37. a filename extension.
  38. 2. It determines how to invent a target file name by knowing the source
  39. file's type.
  40. 3. The target file is overwritten when translation begins, not upon
  41. program startup as before.  If the source file seems corrupt, a usable
  42. target file is still created and a warning is given.
  43. END_RDME
  44.  
  45. BEGIN_DOC tasc.1
  46. TASC(1)                  USER COMMANDS                    TASC(1)
  47.  
  48. NAMES
  49.      tasc - translate HP48 binary files to and from ASC format
  50.  
  51. SYNOPSIS
  52.      tasc [opt ...] source [target]
  53.  
  54. DESCRIPTION
  55.      This program translates HP48 binary files to  and  from  ASC
  56.      format.   It  should  be fully compatible with Bill Wickes's
  57.      original ->ASC-> programs.  The symbol "-"  in  place  of  a
  58.      filename  represents  the terminal.  If a target filename is
  59.      not provided, one will be invented by  changing  the  source
  60.      filename's  suffix  to ".asc" or ".bin".  Note that a target
  61.      filename cannot be invented if the  standard  input  is  the
  62.      source.   Multiple  options  should be specified as separate
  63.      arguments.
  64.  
  65. OPTIONS
  66.      -d   Force ASC->bin (ASC decoding) mode.
  67.  
  68.      -e   Force bin->ASC (ASC encoding) mode.
  69.  
  70.      -q   Don't print reports (quiet).
  71.  
  72. DIAGNOSTICS
  73.      Returns 0 on success, 1 on error.   On  successful  exit,  a
  74.      BYTES statement is given if not in quiet mode.
  75.  
  76. AUTHOR
  77.      Jonathan T. Higa (jonhiga@phoenix.princeton.edu)
  78.  
  79. CREDITS
  80.      - ASC:  Bill Wickes (billw@hpcvdw.cv.hp.com).
  81.      - Cyclic Redundancy Check: da Cruz, Frank.  _K_e_r_m_i_t:  _A  _F_i_l_e
  82.      _T_r_a_n_s_f_e_r _P_r_o_t_o_c_o_l. Bedford, MA:  Digital Press, 1987.
  83.      - Object structure: HP48 Tools Manual;  "HP48SX  Internals,"
  84.      by Derek S. Nickel.
  85.      - Guidance:  Joe Horn (akcs.joehorn@hpcvbbs.cv.hp.com)
  86.      - Original inspiration: miscellaneous  asc2bin  programs  on
  87.      seq.uncwil.edu
  88.  
  89. Sun Release 4.1   Last change: 1993 January 18                  1
  90. END_DOC
  91.  
  92. BEGIN_SRC tasc.c
  93. /* tasc (version 3):  ASC-encoder/decoder for HP48 files
  94. Copyright (c) 1993 by Jonathan T. Higa
  95. This program is free.  It may be reproduced or modified as long as
  96. appropriate credit is given.
  97. Credits:
  98. - ASC:  Bill Wickes (billw@hpcvdw.cv.hp.com).
  99. - Cyclic Redundancy Check:
  100. da Cruz, Frank.  _Kermit:  A File Transfer Protocol._
  101. Bedford, MA:  Digital Press, 1987.
  102. - Object structure:
  103. HP48 Tools Manual;
  104. "HP48SX Internals," by Derek S. Nickel.
  105. - Guidance:  Joe Horn (akcs.joehorn@hpcvbbs.cv.hp.com)
  106. - Original inspiration:
  107. miscellaneous asc2bin programs on seq.uncwil.edu
  108. */
  109.  
  110. #include <stdio.h>
  111. #include <string.h>
  112.  
  113. struct hexbuf {
  114.    unsigned long bits;
  115.    long nibs;
  116.    int bsize;
  117.    unsigned short crc;
  118. };
  119.  
  120. enum hpdatatype { HPBIN, HPASC, UNKNOWN = -1 };
  121.  
  122. int verbose = 1;
  123.  
  124. void pushhex(struct hexbuf *b, int h)
  125. /* Add a hex digit to the bit buffer. */
  126. {
  127.    b->bits |= (h & 0xfuL) << b->bsize;
  128.    b->bsize += 4;
  129. }
  130.  
  131. int pophex(struct hexbuf *b)
  132. /* Remove and return a hex digit from the bit buffer, and
  133.    include it in the CRC. */
  134. {
  135.    int h = b->bits & 0xf;
  136.    b->crc = (b->crc >> 4) ^ (((b->crc ^ h) & 0xf) * 0x1081);
  137.    b->nibs++;
  138.    b->bits >>= 4;
  139.    b->bsize -= 4;
  140.    return h;
  141. }
  142.  
  143. enum hpdatatype hptype(FILE *f)
  144. /* Determine the type of HP file by scanning the beginning of the file.
  145.    If the type is known, put the file pointer at the start of data. */
  146. {
  147.    char c;
  148.    if (fscanf(f, "HPHP48-%c", &c) == 1)
  149.       return HPBIN;
  150.    else
  151.       for (; ; )
  152.      switch (fscanf(f, "%*[%]HP:%*[^;]%c", &c)) {
  153.      case 1:
  154.         while (fscanf(f, " @%c", &c) == 1) {
  155.            if (c != '\n') {
  156.           fscanf(f, "%*[^\n]");
  157.           fscanf(f, "%*1[\n]");
  158.            }
  159.         }
  160.         return fscanf(f, "%c", &c) == 1 && c == '"' ? HPASC : UNKNOWN;
  161.      case 0:
  162.         fscanf(f, "%*[^\n]");
  163.         fscanf(f, "%*1[\n]");
  164.         break;
  165.      case EOF:
  166.         return UNKNOWN;
  167.      }
  168. }
  169.  
  170. char *newext(char *new, const char *old, const char *ext)
  171. /* Create a new filename from the old filename and extension. */
  172. {
  173.    char *p = strrchr(strcpy(new, old), ext[0]);
  174.    if (p) strcpy(p, ext);
  175.    else strcat(new, ext);
  176.    if (verbose) fprintf(stderr, "tasc: inventing filename \"%s\"\n", new);
  177.    return new;
  178. }
  179.  
  180. int asctobin(FILE *fasc, FILE *fbin)
  181. {
  182.    struct hexbuf hb = {0, 0, 0, 0};
  183.    int d, err = 0;
  184.  
  185.    /* write header into binary file */
  186.    fputs("HPHP48-E", fbin);
  187.  
  188.    /* translate data */
  189.    while (fscanf(fasc, "%1x", &d) == 1) {
  190.       pushhex(&hb, d);
  191.       if (hb.bsize >= 24) {
  192.      d = pophex(&hb);
  193.      d |= pophex(&hb) << 4;
  194.      putc(d, fbin);
  195.       }
  196.    }
  197.    if (hb.bsize > 16) {
  198.       d = pophex(&hb);
  199.       putc(d, fbin);
  200.    }
  201.  
  202.    /* check CRC */
  203.    if (hb.crc != hb.bits || hb.bsize != 16) {
  204.       fprintf(stderr, "tasc: ASC->bin: warning: CRC is incorrect\n");
  205.       err = 1;
  206.    }
  207.    if (verbose)
  208.       fprintf(stderr, "tasc: ASC->bin: BYTES: #%hXh %ld%s\n",
  209.               hb.crc, hb.nibs/2, hb.nibs & 1 ? ".5" : "");
  210.    return err;
  211. }
  212.  
  213. int bintoasc(FILE *fbin, FILE *fasc)
  214. {
  215.    struct hexbuf hb = {0, 0, 0, 0};
  216.    unsigned long fldlen = 0;
  217.    enum { SIZE, ASCIC, ASCIX, DIR, ANY = -1 } fldnxt = ANY;
  218.    int c, err = 0, width = 0;
  219.  
  220.    /* write header into ASC file */
  221.    fprintf(fasc, "%%%%HP: T(1);\n\"");
  222.  
  223.    /* parse binary */
  224.    while ((c = getc(fbin)) != EOF) {
  225.       pushhex(&hb, c);
  226.       pushhex(&hb, c >> 4);
  227.       if (!fldlen) /* done with previous field */
  228.      switch (fldnxt) { /* now for the current field */
  229.      case SIZE:
  230.         if (hb.bsize >= 20) {
  231.            /* this object's length is known by the size field */
  232.            fldlen = hb.bits & 0xfffff;
  233.            fldnxt = ANY;
  234.         }
  235.         break;
  236.      case ASCIC:
  237.         if (hb.bsize >= 8) {
  238.            /* ASCII-char identifier */
  239.            fldlen = 2 + 2 * (hb.bits & 0xff);
  240.            fldnxt = ANY;
  241.         }
  242.         break;
  243.      case ASCIX:
  244.         if (hb.bsize >= 8) {
  245.            /* ASCII-extended identifier */
  246.            fldlen = 4 + 2 * (hb.bits & 0xff);
  247.            fldnxt = ANY;
  248.         }
  249.         break;
  250.      case DIR:
  251.         if (hb.bsize >= 20) {
  252.            /* first object pointer in a directory, to an ASCIX name */
  253.            fldlen = hb.bits & 0xfffff;
  254.            fldnxt = ASCIX;
  255.         }
  256.         break;
  257.      default:
  258.         if (hb.bsize >= 20) {
  259.            unsigned long pro = hb.bits & 0xfffff;
  260.            fldlen = 5; /* the prolog field is 5 nibbles long */
  261.            if (pro == 0x29e8uL || pro == 0x2a0auL || pro == 0x2a2cuL
  262.            || pro == 0x2a4euL || pro == 0x2b1euL || pro == 0x2b40uL
  263.            || pro == 0x2b62uL || pro == 0x2b88uL || pro == 0x2dccuL)
  264.           fldnxt = SIZE; /* expect a size field */
  265.            else if (pro == 0x2e48uL || pro == 0x2e6duL || pro == 0x2afcuL)
  266.           fldnxt = ASCIC; /* expect an ASCIC object */
  267.            else if (pro == 0x2a96uL) {
  268.           /* expect the directory pointer after the first 8 nibbles */
  269.           fldlen = 8;
  270.           fldnxt = DIR;
  271.            }
  272.            else if (pro == 0x2911uL) fldlen = 10; /* is system binary */
  273.            else if (pro == 0x2933uL) fldlen = 21; /* is real */
  274.            else if (pro == 0x2955uL) fldlen = 26; /* is long real */
  275.            else if (pro == 0x2977uL) fldlen = 37; /* is complex */
  276.            else if (pro == 0x299duL) fldlen = 47; /* is long complex */
  277.            else if (pro == 0x29bfuL) fldlen = 7; /* is char */
  278.            else if (pro == 0x2e92uL) fldlen = 11; /* is XLIB name */
  279.         }
  280.         break;
  281.      }
  282.       
  283.       /* write out the current field */
  284.       while (fldlen && hb.bsize) {
  285.      c = pophex(&hb);
  286.      if (width == 64) {
  287.         putc('\n', fasc);
  288.         width = 0;
  289.      }
  290.      fprintf(fasc, "%X", c);
  291.      width++;
  292.      fldlen--;
  293.       }
  294.    }
  295.    if (hb.bits) {
  296.       fprintf(stderr, "tasc: bin->ASC: warning: last object incomplete\n");
  297.       err = 1;
  298.    }
  299.  
  300.    /* append CRC */
  301.    if (verbose)
  302.       fprintf(stderr, "tasc: bin->ASC: BYTES: #%hXh %ld%s\n",
  303.               hb.crc, hb.nibs / 2, hb.nibs & 1 ? ".5" : "");
  304.    hb.bits = hb.crc;
  305.    hb.bsize = 16;
  306.    while (hb.bsize) {
  307.       if (width == 64) {
  308.      putc('\n', fasc);
  309.      width = 0;
  310.       }
  311.       fprintf(fasc, "%X", pophex(&hb));
  312.       width++;
  313.    }
  314.    fprintf(fasc, "\"\n");
  315.    return err;
  316. }
  317.  
  318. int main(int argc, char **argv)
  319. {
  320.    const char *STDIO = "-";
  321.    enum hpdatatype coding = UNKNOWN;
  322.    int i = 1, opt = 1;
  323.    char *iname, *oname, temp[256];
  324.    while (i < argc && opt) {
  325.       if (argv[i][0] == '-') {
  326.      opt = 1;
  327.      switch (argv[i][1]) {
  328.      case 'd':
  329.         coding = HPASC;
  330.         break;
  331.      case 'e':
  332.         coding = HPBIN;
  333.         break;
  334.      case 'q':
  335.         verbose = 0;
  336.         break;
  337.      default:
  338.         opt = 0;
  339.      }
  340.       } else
  341.      opt = 0;
  342.       i += opt;
  343.    }
  344.    argc -= i;
  345.    if (argc < 1 || argc > 2) {
  346.       fprintf(stderr, "Use: %s [opt ...] source [target]\n"
  347.               "opt\taction\n"
  348.               " -d\tForce ASC->bin (ASC decode)\n"
  349.               " -e\tForce bin->ASC (ASC encode)\n"
  350.               " -q\tSuppress non-error messages (quiet)\n"
  351.               "The filename \"-\" represents the terminal.\n",
  352.               argv[0]);
  353.       return 1;
  354.    }
  355.    iname = argv[i];
  356.    if (strcmp(iname, STDIO)) {
  357.       if (!freopen(iname, "rb", stdin)) {
  358.      fprintf(stderr, "tasc: ");
  359.      perror(iname);
  360.      return 1;
  361.       }
  362.    } else if (argc == 1) {
  363.       fprintf(stderr, "tasc: cannot invent output filename for stdin\n");
  364.       return 1;
  365.    }
  366.    switch (hptype(stdin)) {
  367.    case HPASC:
  368.       if (coding == HPBIN) {
  369.      fprintf(stderr, "tasc: ASC->bin mode was disallowed\n");
  370.      return 1;
  371.       }
  372.       if (verbose) fprintf(stderr, "tasc: entering ASC->bin mode\n");
  373.       oname = argc == 1 ? newext(temp, iname, ".bin") : argv[i+1];
  374.       if (strcmp(oname, STDIO) && !freopen(oname, "wb", stdout)) {
  375.      fprintf(stderr, "tasc: ");
  376.      perror(oname);
  377.      return 1;
  378.       }
  379.       if (asctobin(stdin, stdout))
  380.      return 1;
  381.       break;
  382.    case HPBIN:
  383.       if (coding == HPASC) {
  384.      fprintf(stderr, "tasc: bin->ASC mode was disallowed\n");
  385.      return 1;
  386.       }
  387.       if (verbose) fprintf(stderr, "tasc: entering bin->ASC mode\n");
  388.       oname = argc == 1 ? newext(temp, iname, ".asc") : argv[i+1];
  389.       if (strcmp(oname, STDIO) && !freopen(oname, "w", stdout)) {
  390.      fprintf(stderr, "tasc: ");
  391.      perror(oname);
  392.      return 1;
  393.       }
  394.       if (bintoasc(stdin, stdout))
  395.      return 1;
  396.       break;
  397.    default:
  398.       fprintf(stderr, "tasc: unknown input type\n");
  399.       return 1;
  400.    }
  401.    if (fclose(stdin)) {
  402.       fprintf(stderr, "tasc: ");
  403.       perror(iname);
  404.       return 1;
  405.    }
  406.    if (fclose(stdout)) {
  407.       fprintf(stderr, "tasc: ");
  408.       perror(oname);
  409.       return 1;
  410.    }
  411.    return 0;
  412. }
  413. END_SRC
  414.  
  415. compiled with Turbo C 2.0
  416.  
  417. BEGIN_UUE tasc.uue
  418. begin 644 tasc.com
  419. MC,HNB1;6`K0PS2&++@(`BQXL`([:H]DOC`;7+XD>TR^)+O,OQP;=+___Z!,!
  420. MQ#[1+XO'B]BY_W\F@3TX-W49)HM5`H#Z/740@.;?_P;=+X#^674$_P;=+_*N
  421. MXV%#)C@%==:`S8#WV8D.T2^Y`0#3XX/#"(/C^(D>U2^,VBOJBSY.-('_``)S
  422. M![\``HD^3C2!QY(Z<B@#/DPT<B*Q!-/O1SOO<AF#/DXT`'0'@SY,-`!U#K\`
  423. M$#OO=P>+_>L#Z0`!B]\#VHD>ZR^)'N\OH=<O*]B.P+1*5\TA7]/G^H[2B^?[
  424. M,\`NC@;6`K\\.KF2.BO/\ZH._Q8N.NB_"NBG"[0`S1J)%M\OB0[A+_\6,CK_
  425. M-L\O_S;-+_\VRR_H>P=0Z&0*+HX>U@+H6P`._Q8P.HOLM$R*1@+-(;D.`)"Z
  426. MCR_IAP`>N``US2&)'KLOC`:]+[@$-<TAB1Z_+XP&P2^X!37-(8D>PR^,!L4O
  427. MN`8US2&)'L<OC`;)+[@`)8S*CMJZ-@+-(1_#'K@`)<46NR_-(1\>N`0EQ1:_
  428. M+\TA'QZX!27%%L,OS2$?'K@&)<46QR_-(1_#QP;=+P``R\.T0+L"`,TAP[D>
  429. M`)"ZG2\NCA[6`NCI_[@#`%#H2O\``%6+[%:+=@2+1@:9)0\`@>(``(I,"`[H
  430. M82L+!`M4`HE4`HD$@T0(!%Y=PU6+[%97BW8$BSR!YP\`BT0*L033Z%"+1`HS
  431. MQR4/`+J!$/?B6C/0B50*@T0$`8-4!@"+5`*+!+$$#N@S*XE4`HD$@VP(!(O'
  432. M7UY=PU6+[(/L`E:+=@2-1O]0N/8P4%;HV2.#Q`8]`0!U!3/`Z9(`C4;_4+@`
  433. M,5!6Z,`C@\0&/?__=0/I>``+P'1;/0$`=![KWH!^_PIT%K@6,5!6Z)PC@\0$
  434. MN!TQ4%;HD2.#Q`2-1O]0N!$Q4%;H@B.#Q`8]`0!TT(U&_U"X)#%05NAN(X/$
  435. M!CT!`'4+@'[_(G4%N`$`ZP.X___K'+@G,5!6Z$XC@\0$N"XQ4%;H0R.#Q`3I
  436. M<?^X__]>B^5=PU6+[%97BW8$BUX(B@>84/]V!E;H`QF#Q`10Z,`J@\0$B_@+
  437. M_W0,_W8(5^CL&(/$!.L*_W8(5NA6&(/$!(,^W#``=`]6N#4Q4+AT-5#HGR*#
  438. MQ`:+QE]>7<-5B^R#[`Y65XMV!HU>\A93N]XP'E.Y#``.Z$TJ,_]6N%0Q4.B(
  439. M(H/$!.M-_W;^C4;R4.A$_H/$!(-^^AA\.HU&\E#H7OY$1(E&_HU&\E#H4OY$
  440. M1+$$T^`)1O[_!'T0BD;^_T0*BUP*B$?_M`#K"E;_=O[HFAF#Q`2-1OY0N%TQ
  441. M4/]V!.A7(H/$!CT!`'2=@W[Z$'XJC4;R4.@(_D1$B4;^_P1]$(I&_O]$"HM<
  442. M"HA'_[0`ZPI6_W;^Z%09@\0$BT;\,]([5O1U"SM&\G4&@W[Z$'01N&$Q4+AT
  443. M-5#HN"&#Q`2_`0"#/MPP`'0^BU;XBT;V)0$`@>(```O0=`6XL#'K`[BS,5`S
  444. MTK@"`%)0_W;X_W;V#N@Z*%)0_W;\N(PQ4+AT-5#H<"&#Q`R+QU]>B^5=PU6+
  445. M[(/L&E97BW8&C5[J%E.[ZC`>4[D,``[H'"G'1O@``,=&]@``QT;Z___'1OX`
  446. M`#/_N+0Q4%;H*R&#Q`3IV@+_=OR-1NI0Z/[\@\0$BT;\L033^%"-1NI0Z.S\
  447. M@\0$BT;V"T;X=`/IH@*+1OH]`P!V`^FI`(O8T>,N_Z<.!A8&.@9B!HH&@W[R
  448. M%'T#Z7T"BU;LBT;J)?__@>(/`(E6^(E&]L=&^O__Z6("@W[R"'T#Z5D"BU;L
  449. MBT;J)?\`@>(``-'@T=(%`@"#T@")5OB)1O;KT(-^\@A]`^DQ`HM6[(M&ZB7_
  450. M`('B``#1X-'2!00`@](`B5;XB4;VZZB#?O(4?0/I"0*+5NR+1NHE__^!X@\`
  451. MB5;XB4;VQT;Z`@#I[@&#?O(4?0/IY0&+5NR+1NHE__^!X@\`B5;HB4;FQT;X
  452. M``#'1O8%``O2=0@]Z"EU`^EK`(-^Z`!U"H%^Y@HJ=0/I6P"#?N@`=0>!?N8L
  453. M*G1.@W[H`'4'@7[F3BIT08-^Z`!U!X%^YAXK=#2#?N@`=0>!?N9`*W0G@W[H
  454. M`'4'@7[F8BMT&H-^Z`!U!X%^YH@K=`V#?N@`=0^!?N;,+74(QT;Z``#I20&#
  455. M?N@`=0>!?N9(+G0:@W[H`'4'@7[F;2YT#8-^Z`!U#X%^YOPJ=0C'1OH!`.D:
  456. M`8-^Z`!U&8%^YI8J=1+'1O@``,=&]@@`QT;Z`P#I^P"#?N@`=12!?N81*74-
  457. MQT;X``#'1O8*`.GA`(-^Z`!U%(%^YC,I=0W'1O@``,=&]A4`Z<<`@W[H`'44
  458. M@7[F52EU#<=&^```QT;V&@#IK0"#?N@`=12!?N9W*74-QT;X``#'1O8E`.F3
  459. M`(-^Z`!U%(%^YITI=0W'1O@``,=&]B\`Z7D`@W[H`'43@7[FOREU#,=&^```
  460. MQT;V!P#K8(-^Z`!U6H%^YI(N=5/'1O@``,=&]@L`ZT>-1NI0Z*;Z1$2)1OR#
  461. M_T!U'_\$?0^P"O]$"HM<"HA'_[0`ZPI6L`I0Z.X5@\0$,___=ORXQ#%05NAE
  462. M'H/$!D>#;O8!@U[X`(M&]@M&^'0&@W[R`'6KBUX$_P]\#?]'"HM?"HI'_[0`
  463. MZPC_=@3HA0Q$1(E&_#W__W0#Z?_\BT;J"T;L=!.XQS%0N'0U4.@1'H/$!,=&
  464. M_@$`@S[<,`!T/HM6\(M&[B4!`('B```+T'0%N!PRZP.X'S)0,]*X`@!24/]V
  465. M\/]V[@[HD2124/]V]+CX,5"X=#50Z,<=@\0,BT;T,]*)5NR)1NK'1O(0`.LZ
  466. M@_]`=1__!'T/L`K_1`J+7`J(1_^T`.L*5K`*4.@,%8/$!#/_C4;J4.B4^41$
  467. M4+@@,E!6Z'P=@\0&1X-^\@!UP+@C,E!6Z&H=@\0$BT;^7UZ+Y5W#58OL@>P(
  468. M`597QX;X_B8RQX;Z_O__O@$`B_[K2XO>T>,#7@:+'X`_+74YOP$`B][1XP->
  469. M!HL?BD<!F#UD`'0,/64`=`\]<0!T$NL8QX;Z_@$`ZQ+'AOK^``#K"L<&W#``
  470. M`.L",_\#]SMV!'T$"_]UK"EV!(-^!`%\!H-^!`)^%HM>!O\WN"@R4+AT-5#H
  471. MSQR#Q`;I#P*+WM'C`UX&BP>)AOS^_[;X_E#HKA*#Q`0+P'0GN%0U4+CH,E#_
  472. MMOS^Z$\'@\0&"\!U*+CK,E"X=#50Z(P<@\0$Z9T!@WX$`741N/(R4+AT-5#H
  473. M=1R#Q`3IM0&X5#50Z,#X1$0+P'4#Z:P`/0$`=`/I0P&#OOK^`'41N"$S4+AT
  474. M-5#H11R#Q`3IA0&#/MPP`'0.N$4S4+AT-5#H+1R#Q`2#?@0!=16X8S-0_[;\
  475. M_HV&`/]0Z";Y@\0&ZPJ+WD/1XP->!HL'B8;^_O^V^/Y0Z/,1@\0$"\!T)[AD
  476. M-5"X:#-0_[;^_NB4!H/$!@O`=1&X:S-0N'0U4.C1&X/$!.D(`;AD-5"X5#50
  477. MZ"KY@\0$"\!U`^FR`.GY`(.^^OX!=1&X<C-0N'0U4.BA&X/$!.GA`(,^W#``
  478. M=`ZXEC-0N'0U4.B)&X/$!(-^!`%U%;BT,U#_MOS^C88`_U#H@OB#Q`;K"HO>
  479. M0]'C`UX&BP>)AO[^_[;X_E#H3Q&#Q`0+P'0FN&0U4+BY,U#_MO[^Z/`%@\0&
  480. M"\!U$+B[,U"X=#50Z"T;@\0$ZV6X9#50N%0U4.BX^8/$!`O`=!+K6KC",U"X
  481. M=#50Z`D;@\0$ZTJX5#50Z'<+1$0+P'09N-PS4+AT-5#H[!J#Q`3_MOS^Z'TB
  482. M1$3K)+AD-5#H40M$1`O`=!RXXS-0N'0U4.C&&H/$!/^V_O[H5R)$1+@!`.L"
  483. M,\!?7HOE7<-5B^Q6BW8$"_9\%(/^6'8#OE<`B3;J,XJ$[#.8ENL-]]Z#_B-W
  484. MZL<&ZC/__XO&H]LON/__ZP!>7<("`,-5B^SK"HL>4#31X_^7/#JA4#3_#E`T
  485. M"\!UZ_\61C3_%D@T_Q9*-/]V!.AP]5E=PP```````"Z/!K,,+HP>M0S\C@;7
  486. M+[Z``#+D)JQ`C,6'UI.+-M$O@\8"N0$`@#[9+P-R$8X&TR^+_K%_,L#RKN-V
  487. M@/%_@^P"N`$``\,#P27^_XO\*_AR8(OGC,".V(S0CL!12?.D,L"JCMV'\H?9
  488. MB\.+T$/H&0!W!W)`Z!(`=_D\('0(/`UT!#P)=>@RP.OD"\!T!T*J"L!U`4.&
  489. MX#+`^>,5K$DL(G0/!"(\7'4'@#PB=0*L20OVP^E3]5D#RBZ.'K4,B1[++T,#
  490. MVXOTB^PKZW+FB^6)+LTOXPZ)=@"#Q0(VK`K`X/IT\#/`B48`+O\FLPR+#M$O
  491. M4>A'`5F+^`O`="0>'@>.'M,O,_;\\Z0?B_@&_S;5+^@I`8/$`HO8!Z//+PO`
  492. M=0/IYO0SP+G__XD_@\,"\JXF.`5U](D'PU6+[(,^4#0@=06X`0#K%8M&!(L>
  493. M4#31XXF'/#K_!E`T,\#K`%W#58OL5E>+?@2+10:C?CH[QW4(QP9^.@``ZQ"+
  494. M=02+'GXZB7<$H7XZB40&7UY=PU6+[%97BWX$BT8&*06+-0/WBT8&0(D$B7P"
  495. MH7PZ.\=U!HDV?#KK"(O^`WX&B74"B\8%!`#K`%]>7<-5B^Q6BT8$,](E__^!
  496. MX@``4E#H]`!968OP@_[_=00SP.L8H7PZB40"BT8$0(D$B39\.J%\.@4$`.L`
  497. M7EW#58OL5HM&!#/2)?__@>(``%)0Z+<`65F+\(/^_W4$,\#K%8DV@#J)-GPZ
  498. MBT8$0(D$B\8%!`#K`%Y=PU6+[%97BWX$"_]U!#/`ZUJ+QP4+`"7X_XOX@SZ`
  499. M.@!U!U?HH?]9ZT*+-GXZB\8+P'0QBP2+UX/"*#O"<@E75N@-_UE9ZR2+!#O'
  500. M<@Y6Z-'^6?\$B\8%!`#K$(MT!CLV?CIUSU?H(O]9ZP!?7EW#58OLBT8$B]2!
  501. MZ@`!.\)S!Z/E+S/`ZPO'!MLO"`"X___K`%W#58OLBT8$BU8&`P;E+X/2`(O(
  502. M@<$``8/2``O2=0H[S',&AP;E+^L+QP;;+P@`N/__ZP!=PU6+[/]V!.B?_UGK
  503. M`%W#58OLBT8$F5)0Z++_B^7K`%W#58OL@^P&5E>+=@@S_\=&^@``QT;\``"+
  504. MWD:*!XA&_SQR=0J_`0#'1OP!`.LO@'[_=W4/OP(#QT;Z@`#'1OP"`.L:@'[_
  505. M874/OP()QT;Z@`#'1OP"`.L%,\#IA0"*!(A&_T:`?O\K=!&`/"MU*X!^_W1T
  506. M!H!^_V)U'X!^_RMU!8H$B$;_B\<E_/\-!`"+^,=&^H`!QT;\`P"`?O]T=0:!
  507. MSP!`ZR6`?O]B=0N!SP"`@4[\0`#K%*&\-B4`P`OXB\>I`(!T!8%._$``QP9(
  508. M-$`8BUX&B3^+1OJ+7@2)!XM&_.L`7UZ+Y5W"!@!5B^R#[`16BW8(_W8$C4;\
  509. M4(U&_E#H__Z)1`(+P'0<@'P$`'TC_W;^_W;\_W8&Z#8!@\0&B$0$"L!]#<9$
  510. M!/_'1`(``#/`ZT>*1`284.AS!5D+P'0%@4P"``*X``)0]T0"``)T!;@!`.L"
  511. M,\!0,\!05NAG!8/$"`O`=`M6Z"X&63/`ZPOK"<=$#```B\;K`%Z+Y5W"!@!6
  512. MOE0UZP+K`(!\!`!\"HO&@\80/90V<NZ`?`0`?`8SP.L&ZP2+QNL`7L-5B^Q6
  513. MZ,__B_"+Q@O`=08SP.L.ZPQ6_W8$_W8&Z"'_ZP!>7<-5B^Q6BW8(BT0..\9T
  514. M!#/`ZQ%6Z+,%65;_=@3_=@;H^_[K`%Y=PU6+[%:#?@0`?`OH?_^+\(O&"\!U
  515. M!#/`ZQ**1@2(1`16,\!0_W8&Z,W^ZP!>7<-5B^R+3@2T/(M6!LTA<@+K!E#H
  516. M.?KK`%W"!`!5B^R+7@0KR2O2M$#-(>L`7<("`%6+[(/L!%97BWX&]\<`P'4(
  517. MH;PV)0#`"_CWQP`!=0/IC0"AOC8A1@B+1@BI@`%U![@!`%#HZ/DSP%#_=@3H
  518. MVPI968E&_#W__W43]T8(@`!T!#/`ZP.X`0")1OSK%/?'``1T#+A0`%#HM?GI
  519. MU@#K`NL^]\?P`'0?_W8$,\!0Z%'_B_"+Q@O`?06+QNFV`%;H8@59ZR#K%O]V
  520. M!/]V_.@R_XOPB\8+P'T%B\;IEP#K<)#'1OP``%?_=@3HC@!968OPB\8+P'Q9
  521. M,\!05NAG`UE9B4;^J8``="&!SP`@]\<`@'05BT;^)?\`#2``4+@!`%!6Z$$#
  522. M@\0&ZPKWQP`"=`16Z.O^@W[\`'07]\?P`'01N`$`4+@!`%#_=@3H``J#Q`8+
  523. M]GP=]\<``W0%N``0ZP(SP(O7@>+_^`O"B][1XXF'E#:+QNL`7UZ+Y5W#58OL
  524. M5K`!BTX&]\$"`'4*L`+WP00`=0*P`(M6!+'P(DX&"L&T/<TA<A>+\(M&!B7_
  525. M^`T`@(O>T>.)AY0VB\;K!E#HDOCK`%Y=PU6+[(/L`E97BUX$BS>+QHE&_HM>
  526. M!/='`D``=`2+QNL?BUX$BW\*ZPN+WT>`/PIU`_]&_HO&3@O`=>Z+1O[K`%]>
  527. MB^5=P@(`58OL5HMV!%;HXPE9"\!T!;C__^M,@WX*`740@SP`?@M6Z)7_F2E&
  528. M!AE6"(%D`E_^QP0``(M$"(E$"O]V"O]V"/]V!HI$!)A0Z)T&@\0(@_K_=0H]
  529. M__]U!;C__^L",\#K`%Y=PU6+[(/L!%:+=@16Z'P)60O`=`BZ__^X___K/[@!
  530. M`%`SP%!0BD0$F%#H60:#Q`B)5OZ)1OR#/`!^&8M6_HM&_%)05N@0_YF+V(O*
  531. M6%HKPQO1ZP:+5OZ+1OSK`%Z+Y5W#5E>_%`"^5#7K$XM$`B4``ST``W4%5N@2
  532. M"5F#QA"+QT\+P'7F7U[#58OL5HMV!/=$`@`"=`/HR/__=`:+1`B)1`I0BD0$
  533. MF%#H<0.#Q`:)!`O`?@N!9`+?_S/`ZR/K'(,\`'4.BT0")7_^#2``B40"ZPG'
  534. M!```@4P"$`"X___K`%Y=P@(`58OL5HMV!/\$5N@&`%GK`%Y=PU6+[(/L`E:+
  535. M=@3_#'P._T0*BUP*BD?_M`#IU`#_!'P']T0"$`%T"X%,`A``N/__Z;X`@4P"
  536. M@`"#?`8`=!-6Z$__"\!T!KC__^FE`.N]Z:``@S[`-@!U.+A4-3O&=3&*1`28
  537. M4.C#`%D+P'4%@60"__VX``)0]T0"``)T!;@!`.L",\!0,\!05NBW`(/$".NC
  538. M]T0"``)T`^C0_K@!`%"-1O]0BD0$F%#H-P.#Q`8]`0!T)HI$!)A0Z&T'63T!
  539. M`'0'@4P"$`#K#(M$`B5__@T@`(E$`KC__^L9@'[_#74']T0"0`!TJX%D`M__
  540. MBD;_M`#K`%Z+Y5W#N%0U4.@$_UGK`,-5B^RT1(I&!HM>!(M."HM6",TA<@R#
  541. M?@8`=02+PNL(ZP90Z,?UZP!=PU6+[+@`1(M>!,TAN```<@31XM'0ZP!=PU6+
  542. M[%97BWX*BW8$BT0..\9U#(-^"`)_!H'__W]V!KC__^FJ`(,^PC8`=0^X9#4[
  543. MQG4(QP;"-@$`ZQ2#/L`V`'4-N%0U.\9U!L<&P#8!`(,\`'0/N`$`4#/`4%!6
  544. MZ`;]@\0(]T0"!`!T!_]T".C"#UF!9`+S_\=$!@``B\8%!0")1`B)1`J#?@@"
  545. M=#\+_W8[QP9&-%\8@WX&`'485^BW]UF)1@8+P'0'@4P"!`#K!;C__^L;BT8&
  546. MB40*B40(B7P&@WX(`74%@4P""``SP.L`7UY=PU6+[%97BW8$O___BT0..\9T
  547. M!(O'ZV:#?`8`=""#/`!]#5;H7`99"\!T!(O'ZT[W1`($`'0'_W0(Z"0/68!\
  548. M!`!\"XI$!)A0Z#8`68OXQT0"``#'1`8``,<$``#&1`3_@WP,`'03,\!0_W0,
  549. MZ",$4.B=!%G'1`P``(O'ZP!?7EW#58OL5HMV!`OV?`6#_A1\";@&`%#H0O3K
  550. M$8O>T>/'AY0V__]6Z`8`6>L`7EW#58OL5HMV!+0^B][-(7(,T>/'AY0V__\S
  551. MP.L&4.@-].L`7EW#5E>_#P"^I#7K#_=$`@,`=`56Z!K_68/&$$]U[E]>PU97
  552. MOP0`OE0UZQ#W1`(#`'0%5NA\!5E/@\80"_]U[%]>PU6+[(/L!%97BT8(0#T"
  553. M`'(-BUX$T>/WAY0V``)T!3/`Z9,`_W8(_W8&_W8$Z(T`@\0&B4;\BT;\0#T"
  554. M`'(-BUX$T>/WAY0V`(!T!HM&_.MFD(M._(MV!AX'B_Z+WORL/!IT+3P-=`6J
  555. MXO3K'.+P!E.X`0!0C4;_4/]V!.@^`(/$!EL'_(I&_ZH[^W4"ZY7K(%.X`@!0
  556. M]]D;P%!1_W8$Z,D!@\0(BUX$T>.!CY0V``);B\<KP^L`7UZ+Y5W#58OLM#^+
  557. M7@2+3@B+5@;-(7("ZP90Z/3RZP!=PU6+[('LB@!65XM&"$`]`@!S!3/`Z?8`
  558. MBUX$T>/WAY0V`(!T$O]V"/]V!O]V!.CC`(/$!NG7`(M>!-'C@:>4-O_]BT8&
  559. MB89\_XM&"(F&>/^-MG[_ZVW_CGC_BYY\__^&?/^*!XB&>_\\"G4$Q@0-1HJ&
  560. M>_^(!$:-AG[_B]8KT('Z@`!\/HV&?O^+_BOX5XV&?O]0_W8$Z'L`@\0&B89V
  561. M_SO'=!N#OG;_`',%N/__ZPV+1@@KAGC_`X9V_RO'ZT^-MG[_@[YX_P!T`^F)
  562. M_XV&?O^+_BOXB\<+P'8N5XV&?O]0_W8$Z"T`@\0&B89V_SO'=!>#OG;_`',%
  563. MN/__ZPF+1@@#AG;_*\?K!8M&".L`7UZ+Y5W#58OLBUX$T>/WAY0V``AT$+@"
  564. M`%`SP%!0_W8$Z&$`B^6T0(M>!(M."(M6!LTA<@]0BUX$T>.!CY0V`!!8ZP90
  565. MZ)OQZP!=PU6+[%8SP%#_=@3HA@)968OP@_[_=02+QNL<]T8&`@!T!O?&`0!U
  566. M!#/`ZPO'!MLO!0"X___K`%Y=PU6+[(M>!-'C@:>4-O_]M$**1@J+7@2+3@B+
  567. M5@;-(7("ZP=0Z#CQF>L`7<-5B^R#[")65P:+?@H>!XM>"(/[)'=8@/L"<E.+
  568. M1@R+3@X+R7T1@'X&`'0+Q@4M1_?9]]B#V0"-=M[C#Y$KTO?SD??SB!1&XPGK
  569. M\2O2]_.(%$8+P'7UC4[>]]D#SOQ.B@0L"G,$!#KK`P)&!*KB[[``J@>+1@KK
  570. M`%]>B^5=P@P`58OL@WX("G4&BT8$F>L%BT8$,])24/]V!O]V"+`!4+!A4.A<
  571. M_^L`7<-5B^S_=@;_=@3_=@C_=@JP`%"P85#H0/_K`%W#58OL_W8&_W8$_W8(
  572. M_W8*@WX*"G4%N`$`ZP(SP%"P85#H&?_K`%W#58OL5HMV!@OV=0.^A#K&!`"X
  573. MQ#905NA]`%E9N`H`4(O&!0,`4(M&!#/24E#HCO^#Q`BXR#905NA<`%E9B\;K
  574. M`%Y=P@0`58OL5HMV!%:#/H(Z_W4%N`(`ZP.X`0`!!H(ZH8(Z4.B9_XOP,\!0
  575. M5NA!_EE9/?__==6+QNL`7EW#58OLM$&+5@3-(7($,\#K!E#HMN_K`%W#58OL
  576. M5E?\BWX$'@>+US+`N?__\JZ-=?^+?@:Y___RKO?1*_F']_?&`0!T`J1)T>GS
  577. MI7,!I(O"ZP!?7EW#58OL5E<>!_R+?@0RP+G___*NB\'WT$CK`%]>7<-5B^Q6
  578. M5XS8CL#\,\"+V(M^!HOW,L"Y___RKO?1B_Z+=@3SIHI$_XI=_RO#ZP!?7EW#
  579. M58OL5E<>!_R+?@:+]S+`N?__\J[WT8M^!/.DBT8$ZP!?7EW#58OLM$.*1@:+
  580. M3@B+5@3-(7(#D>L&4.CK[NL`7<.ZSC;K`[K3-KD%`)"T0+L"`,TAN2<`D+K8
  581. M-K1`S2'I/N55B^R#[`2+7@31X_>'E#8``G0&N`$`ZU*0N`!$BUX$S2%R0?;"
  582. M@'4XN`%",\DSTLTA<C%24+@"0C/),]+-(8E&_(E6_EI9<ARX`$+-(7(5.U;^
  583. M<@QW!3M&_'(%N`$`ZPHSP.L&4.A>[NL`B^5=PU6+[%97BW8$BT0..\9T!;C_
  584. M_^MF@SP`?"WW1`((`'4,BT0*B]:#P@4[PG46QP0``(M$"HO6@\(%.\)U!HM$
  585. M"(E$"C/`ZS2+?`8#/$<I/%>+1`B)1`I0BD0$F%#H"ON#Q`8[QW01]T0"``)U
  586. M"H%,`A``N/__ZP0SP.L`7UY=PU6+[(M>!O\/_W8&BD8$F%#H!@"+Y>L`7<-5
  587. MB^R#[`)6BW8&BD8$B$;__P1]-HI&__]$"HM<"HA'__=$`@@`=!N`?O\*=`:`
  588. M?O\-=0]6Z#+_60O`=`:X___IZ0"*1O^T`.GA`/\,]T0"D`!U!_=$`@(`=0N!
  589. M3`(0`+C__^G&`(%,`@`!@WP&`'0F@SP`=!%6Z/#^60O`=`:X___IIP#K"KC_
  590. M_XM4!BO"B03I??_IE0"#/L(V`'4YN&0U.\9U,HI$!)A0Z%+W60O`=06!9`+_
  591. M_;@``E#W1`(``G0%N`(`ZP(SP%`SP%!6Z$;W@\0(Z8__@'[_"G4?]T0"0`!U
  592. M&+@!`%"X`#=0BD0$F%#H\?J#Q`8]`0!U&+@!`%"-1@10BD0$F%#HV?J#Q`8]
  593. M`0!T$?=$`@`"=0J!3`(0`+C__^L'BD;_M`#K`%Z+Y5W#58OL5HMV!+AD-5!6
  594. MZ,'^65GK`%Y=PU6+[(/L`E97BW8$BWX&1_=$`@@`="/K`NL`3XO'"\!T%5:+
  595. M7@C_1@B*!YA0Z(O^65D]__]UXNEU`/=$`D``=#>#?`8`=#&+1`8[QW,J@SP`
  596. M=`U6Z,W]60O`=`0SP.M33U?_=@B*1`284.@R^H/$!HE&_BM^_NLWZP+K`$^+
  597. MQPO`="S_!'T5BUX(_T8(B@?_1`J+7`J(1_^T`.L.5HM>"/]&"/\WZ/K]65D]
  598. M__]URXO'ZP!?7HOE7<(&`/\F-#I5B^R+5@2Y!`^["3?\BL;2Z->JBL8BQ=>J
  599. MBL+2Z->JBL(BQ=>JZP!=P@(`58OL@>R6`%97QT:J``#&1JU0ZSA7N?__,L#R
  600. MKO?125_#B`5'_DZM?B)345(&C4:N*_B-1JY05_]V"/]6"L9&K5`!?JJ-?JX'
  601. M6EE;PP;\C7ZNB;YL_XN^;/^+=@:L"L!T$3PE=!"(!4?^3JU_[^BY_^OJZ74$
  602. MB;9X_ZP\)73GB;YL_S/)B8YV_XF.:O^(CG7_QX9P____QX9R____ZP&L,N2+
  603. MT(O8@.L@@/M@<T>*GQDWB\,]%P!V`^D=!(O8T>,N_Z=Z(<4AK2$&(KDA*R(U
  604. M(G<B@2*1(NPAQB*A(J4BJ2)+(_TCGB.^(V$ECB6.)8XEV"'B(>GA`X#]`'?X
  605. M@XYJ_P'KFX#]`'?L@XYJ_P+KCX#]`'?@@+YU_RMT!(B6=?_I?/^#IFK_W[4%
  606. MZ7+_@XYJ_R"U!>EH_X#]`'=$]X9J_P(`=2&#CFK_"+4!Z5'_Z8@#BWX$BP6#
  607. M1@0"@/T"<PF)AG#_M0/I-_^`_01UX8F&<O_^Q>DI_X#]!'/3M03I'_^2+#"8
  608. M@/T"=QNU`H>&</\+P'S2T>"+T-'@T>`#P@&&</_I^_Z`_01UI8>&<O\+P'RT
  609. MT>"+T-'@T>`#P@&&<O_IW?Z#CFK_$+4%Z=/^@8YJ_P`!@Z9J_^^U!>G#_H.F
  610. M:O_O@8YJ_X``M07IL_ZW".L*MPKK"[<0L^D"VL:&=?\`QH9O_P"(EF[_BWX$
  611. MBP4STNL1MPK&AF__`8B6;O^+?@2+!9E'1XEV!O>&:O\0`'0$BQ5'1XE^!(V^
  612. M>_\+P'4S"])U+X.^<O\`=2V+OFS_BXYP_^,;@_G_=!:+AFK_)0@`=`2R,.L"
  613. MLB"*PNBV_>+YZ>G]@XYJ_P124%>*QYA0BH9O_U!3Z-KW%@>+EG+_"])_`^D4
  614. M`>DA`8B6;O^)=@:-OGK_BUX$_S=#0XE>!/>&:O\@`'0/_S=#0XE>!!8'Z!?]
  615. ML#JJ%@?H#_W&!0#&AF__`(.F:O_[C8YZ_ROYA\^+EG+_.]%_`HO1Z;X`B78&
  616. MB)9N_XM^!(L%@T8$`A8'C;Y[_S+DB06Y`0#IV`")=@:(EF[_BWX$]X9J_R``
  617. M=0R+/8-&!`(>!PO_ZPK$/8-&!`2,P`O'=04>![\"-^C:_#N.<O]V!(N.<O_I
  618. MF0")=@:(EF[_BWX$BXYR_PO)?0.Y!@!748V>>_]34K@!`".&:O]0BX9J_ZF`
  619. M`'0*N`(`QT;^!`#K%ZD``70*N`@`QT;^"@#K",=&_@@`N`8`4.@W_(M&_@%&
  620. M!!8'C;Y[__>&:O\(`'03BY9P_PO2?@OH6_PKT7X$B99V_XJ&=?\*P'04)H`]
  621. M+70.@ZYV_P&#EG;_`$\FB`7H-/R+]XN^;/^+GG#_N`4`(X9J_ST%`'46BJ9N
  622. M_X#\;W40@[YV_P!_!L>&=O\!`.L?D(#\>'0%@/Q8=12#CFK_0$M+@ZYV_P)]
  623. M!L>&=O\```..=O_WAFK_`@!U#.L&L"#HX?M+.]E_]O>&:O]``'0,L##HS_N*
  624. MAF[_Z,C[BY9V_PO2?B<KRBO:)HH$/"UT"#P@=`0\*W4')JSHJ/M)2X?*XP>P
  625. M,.B=^^+YA\KC$2O9)JR(!4?^3JU_`^B0^^+Q"]M^"8O+L"#H>_OB^>FN^XEV
  626. M!HM^!/>&:O\@`'4*BSV#1@0"'@?K!L0]@T8$!+A0`"I&K0-&JB:)!>E]^XNV
  627. M>/^+OFS_L"7H//NL"L!U^(!^K5!]`^@V^P>+1JKK`%]>B^5=P@@`58OL5E>+
  628. M=@2#/GXZ`'0<BQY^.HM_!HL>?CJ)=P:)=02)?`:A?CJ)1`3K"HDV?CJ)=`2)
  629. M=`9?7EW#58OL@^P"5E>+=@:+?@2+!`$%H7PZ.\9U!HD^?#KK#8L$`\:)1OZ+
  630. M7OZ)?P)6Z/3G65]>B^5=PU:A@#H[!GPZ=1+_-H`ZZ('I63/`HWPZHX`ZZSN+
  631. M'GPZBW<"]P0!`'4B5NC`YUD[-H`Z=0HSP*-\.J.`.NL&BT0"HWPZ5NA*Z5GK
  632. M#/\V?#KH0.E9B39\.E[#58OL@^P"5E>+=@3_#(L$`\:)1OZ+?`+W!0$`=10[
  633. M-H`Z=`Z+!`$%BU[^B7\"B_?K!5;H`O]9BU[^]P<!`'4)_W;^5N@J_UE97UZ+
  634. MY5W#58OL5HMV!`OV=0+K%XO&!?S_B_`[-GPZ=07H//_K!5;HC_]97EW#58OL
  635. MN,T?4/]V!/]V!HU&"%#HK?GK`%W#58OL5E>+?@17Z+GU68OP5U;_=@;HJ?@+
  636. MP'0%N/__ZPF+WP/>BD?_M`#K`%]>7<-5B^R-1@A0_W8&_W8$N`\O4+A<%5#H
  637. M!@"+Y>L`7<-5B^R#["I65\=&V```QT;:``#K&I"+?@SV1M<@=`?$/8-&#`3#
  638. MBST>!X-&#`+#!OR+=@JL"L!T73PE=%R8E_]&VO]V"/]6!%D+P'PE"_]X,H"]
  639. M>C<!=2N3"MMX&("_>C<!=1'_1MK_=@C_5@19"\!_YNE^`_]V"%/_5@996?].
  640. MVNNQ.\=TK?]V"%#_5@996?].VNEQ`^EN`\=&WO__QD;7`*R8B78*EPO_?$B*
  641. MG7HW,O^+PST5`'8#Z3<#B]C1XR[_IQXH32A-*$TH2BA0*%8H*2J>*)XHJ"AI
  642. M*6HH=BAP*)DHS2EG*HLHHRC\*'THA"CI2?_I$`.`3M<!ZZ6#[S"'?MX+_WR;
  643. MN`H`]^<!1M[KD8!.UPCKBX!.UP3KA8!.UP+I?O^`9M??Z7?_@$[7(.EP_XM&
  644. MVBO2]D;7`71/Z6+_O@@`ZPV^"@#K"+X0`.L#O@``]\<@`'4$@$[7!(U&W%"-
  645. M1MI0BT;>)?]_4(O&4/]V"/]V!O]V!.A:`X/$#H-^W`!^&/9&UP%U#_]&V.B'
  646. M_JOV1M<$=`*2J^F6_GP#Z6<"Z5`"Z```Z64"_W8(4/]6!EE9_T[:@6;>_W_H
  647. M``#I=`)2/#IT%0O`?@S_=@A0_U8&65G_3MI:C-OK&^@``.E4`EL+P'X04E/_
  648. M=@A0_U8&65G_3MI;6O9&UP%U"N@8_O]&V)*KDZOI*?Y\`^GZ`>GC`8U&W%"-
  649. M1MI0N/]_(T;>4/]V"/]V!O]V!.AO`H/$#(-^W`!^./9&UP%T`^LJD.C6_?]&
  650. MV/9&UP1T!;@$`.L-]D;7"'0%N`@`ZP(SP%!7Z#X"@\0$Z<O]Z#D"Z<7]Z#,"
  651. M?)SIDP'H``#IE`'V1M<!=0;HD_W_1MB!9M[_?W0I]D;7`74!JO]&V@;_=@C_
  652. M5@19!PO`?A(*P'@)DX"_>C<!DWX%_T[>?]<&_W8(4/]6!EE9!_].VO9&UP%U
  653. M`[``JNEA_?9&UP%U`^@]_8MVW@OV?0.^`0!T&O]&V@;_=@C_5@19!_9&UP%U
  654. M`:H+P'P/3G_F]D;7`74#_T;8Z2;]Z>4`*\#\%@>-?N"Y$`#SJZR`9M?O/%YU
  655. M!8!.UQ"LM`"*T(OXL0/3[[D'`2+*TN4(:^"L/`!T)CQ=="4\+77A.A1WW8`\
  656. M7738K"K"=.4"T-#%@]<`"&O@_LAU].O5Z9P`B78*@6;>_W^+=M[V1M<!=0/H
  657. ME_Q.?%#_1MH&_W8(_U8$60<+P'Q/EHO>L0/3[KD'`2++TN6$:N"6DW0(]D;7
  658. M$'0(ZP_V1M<0=`GV1M<!=<2JZ\$&_W8(4/]6!EE9!_].VD8[=MY]"?9&UP%U
  659. M!O]&V+``JNE0_$8[=MY]#/9&UP%U!K``JO]&V/]V"+C__U#_5@9968-^V`&#
  660. M7M@`!XM&V.F&`/]&VO]V"/]6!%D+P'X3"L!X"9.`OWHW`9-TY5F#P0/_X73X
  661. M6>N_*]*Y!`#_3MY\15)1_T;:_W8(_U8$65E:"\!^-?[)?#&*Z(#M,'(J@/T*
  662. M<A>`[1%R((#]!G(*@.T@<A:`_09S$8#%"M'BT>+1XM'B`M7KMBO`@/D$=`99
  663. M@\$#_^%9Z5__7UZ+Y5W#_R8V.O\F.#K_)CHZ4X#K,'(C@/L)=A*`^RIW!8#K
  664. M!^L#@.LG@/L)=@PZV7,(@\0"^+<`ZP1;^>OZPU6+[(/L!E97QD;[`,=&_```
  665. MQT;^`0`&OU,T_T;\_W8(_U8$60O`?&:8D_;#@'4%]@$!=>:3_TX,?%L\*W0'
  666. M/"UU%OY&^_].#'Q+_T;\_W8(_U8$60O`?#8K]HO^BTX*XTZ#^21W+X#Y`G(J
  667. M/#!U;(#Y$'5E_TX,?#/_1OS_=@C_5@19/'AT4CQ8=$[K=)#'1O[__^L%QT;^
  668. M``#_=@A0_U8&65G_3OPKP)GIIP#IE``\,,=&"@H`=2/_3@Q\[_]&_/]V"/]6
  669. M!%G'1@H(`#QX=`0\6'4MQT8*$`#K%XM."I/H\/Z3<K"6ZPJ6]V8*`_`3^G4L
  670. M_TX,?$S_1OS_=@C_5@19BTX*D^C*_I-SW>LJEO?AEX?*]^(#]Q/!EQ+6=4C_
  671. M3@Q\(/]&_/]V"/]6!%F+3@J3Z)[^DW/6_W8(4/]6!EE9_T[\B]>6@'[[`'0'
  672. M]]KWV(/:`(M^#HM>_`$=BWX0BU[^B1T'ZQ:X__^Z_W\"1ON`U`"#T@#'1OX"
  673. M`.O77UZ+Y5W#,\GK#;D!`.L(N0(`ZP.Y`P!55E>+[(OYBT8*BU8,BUX.BTX0
  674. M"\EU"`O2=&D+VW1E]\<!`'4<"])Y"O?:]]B#V@"#SPP+R7D*]]GWVX/9`(/W
  675. M!(OIN2``5S/_,_;1X-'2T=;1USO]<@MW!#OS<@4K\QO]0.+G6_?#`@!T!HO&
  676. MB]?1Z_?#!`!T!_?:]]B#V@!?7EW*"`#W\_?'`@!T`HO",]+K[(#Y$',0B]C3
  677. MX-/B]MF`P1#3ZPO3RX#I$(O0,\#3XLN`^1!S$(O:T^C3ZO;9@,$0T^,+P\N`
  678. MZ1"+PC/2T^C+58OL5J';+SL&0CA]$X,^VR\`?`R+'MLOT>.+M_HWZP.^%SI6
  679. M_W8$N"4Z4+AT-5#H,_B#Q`A>7<-5B^Q65Q[%=@;$?@K\T>GSI1/)\Z0?7UY=
  680. MR@@`58OL5E>+?@17Z.+M68OP`_?K#(H$.D8&=02+QNL)3COW<_`SP.L`7UY=
  681. MPU6+[%:+=@:#?@3_=#7_!(L$/0$`?A&*1@3_3`J+7`J(![0`ZR+K&X,\`744
  682. MB\8%!0")1`J*1@2(1`6T`.L)ZP+_#+C__^L`7EW#``````````````!4=7)B
  683. M;RU#("T@0V]P>7)I9VAT("AC*2`Q.3@X($)O<FQA;F0@26YT;"X`1&EV:61E
  684. M(&5R<F]R#0I!8FYO<FUA;"!P<F]G<F%M('1E<FUI;F%T:6]N#0H`````````
  685. M````````````````````````````````````````````DCJ2.I(Z````````
  686. M````````````````````````````````````````````````````````````
  687. M````````````````````````````````````````````````````````````
  688. M````````````````````````````````````````````````````````````
  689. M````````````````````````````````````````````````````````````
  690. M````````````````````````````````````````````````````````````
  691. M`````````````````0````````````````````````````````!(4$A0-#@M
  692. M)6,`)2I;)5U(4#HE*EM>.UTE8P`@0"5C`"4J6UX*70`E*C%;"ET`)6,`)2I;
  693. M7@I=`"4J,5L*70!T87-C.B!I;G9E;G1I;F<@9FEL96YA;64@(B5S(@H`2%!(
  694. M4#0X+44`)3%X`'1A<V,Z($%30RT^8FEN.B!W87)N:6YG.B!#4D,@:7,@:6YC
  695. M;W)R96-T"@!T87-C.B!!4T,M/F)I;CH@0EE415,Z(",E:%AH("5L9"5S"@`N
  696. M-0``)24E)4A0.B!4*#$I.PHB`"58`'1A<V,Z(&)I;BT^05-#.B!W87)N:6YG
  697. M.B!L87-T(&]B:F5C="!I;F-O;7!L971E"@!T87-C.B!B:6XM/D%30SH@0EE4
  698. M15,Z(",E:%AH("5L9"5S"@`N-0``)5@`(@H`+0!5<V4Z("5S(%MO<'0@+BXN
  699. M72!S;W5R8V4@6W1A<F=E=%T*;W!T"6%C=&EO;@H@+60)1F]R8V4@05-#+3YB
  700. M:6X@*$%30R!D96-O9&4I"B`M90E&;W)C92!B:6XM/D%30R`H05-#(&5N8V]D
  701. M92D*("UQ"5-U<'!R97-S(&YO;BUE<G)O<B!M97-S86=E<R`H<75I970I"E1H
  702. M92!F:6QE;F%M92`B+2(@<F5P<F5S96YT<R!T:&4@=&5R;6EN86PN"@!R8@!T
  703. M87-C.B``=&%S8SH@8V%N;F]T(&EN=F5N="!O=71P=70@9FEL96YA;64@9F]R
  704. M('-T9&EN"@!T87-C.B!!4T,M/F)I;B!M;V1E('=A<R!D:7-A;&QO=V5D"@!T
  705. M87-C.B!E;G1E<FEN9R!!4T,M/F)I;B!M;V1E"@`N8FEN`'=B`'1A<V,Z(`!T
  706. M87-C.B!B:6XM/D%30R!M;V1E('=A<R!D:7-A;&QO=V5D"@!T87-C.B!E;G1E
  707. M<FEN9R!B:6XM/D%30R!M;V1E"@`N87-C`'<`=&%S8SH@`'1A<V,Z('5N:VYO
  708. M=VX@:6YP=70@='EP90H`=&%S8SH@`'1A<V,Z(``````3`@($!08("`@4%043
  709. M_Q8%$0+_________________!07_____________________#_\C`O\/____
  710. M_Q/__P("!0\"____$___________(_____\C_Q/_`(,,@PR##````!`````@
  711. M("`@("`@("`A(2$A(2`@("`@("`@("`@("`@("`@(`%`0$!`0$!`0$!`0$!`
  712. M0$`"`@("`@("`@("0$!`0$!`0!04%!04%`0$!`0$!`0$!`0$!`0$!`0$!`0$
  713. M0$!`0$!`&!@8&!@8"`@("`@("`@("`@("`@("`@("`A`0$!`(```````````
  714. M````````````````````````````````````````````````````````````
  715. M````````````````````````````````````````````````````````````
  716. M````````````````````````````````````````````"0(`````````````
  717. M5#4```H"`0```````````&0U```"`@(```````````!T-0``0P(#````````
  718. M````A#4``$("!````````````)0U`````/\```````````"D-0````#_````
  719. M````````M#4`````_P```````````,0U`````/\```````````#4-0````#_
  720. M````````````Y#4`````_P```````````/0U`````/\````````````$-@``
  721. M``#_````````````%#8`````_P```````````"0V`````/\````````````T
  722. M-@````#_````````````1#8`````_P```````````%0V`````/\`````````
  723. M``!D-@````#_````````````=#8`````_P```````````(0V`2`"(`(@!*`"
  724. MH/_______________________________________P!`__\`````5$U0`"XD
  725. M)"0``'!R:6YT('-C86YF(#H@9FQO871I;F<@<&]I;G0@9F]R;6%T<R!N;W0@
  726. M;&EN:V5D#0H`#0`H;G5L;"D`,#$R,S0U-C<X.4%"0T1%1@`4%`$4%104%!0"
  727. M`!0#!!0)!04%!04%!04%%!04%!04%!04%!0/%P\(%!04!Q06%!04%!04%!04
  728. M#104%!04%!04%!00"@\/#P@*%!0&%!(+#A04$10,%!0-%!04%!04%````@("
  729. M`@("`@(!`0$!`0("`@("`@("`@("`@("`@("`@$"`@("`P("`@($`@("`@(%
  730. M!04%!04%!04%`@("`@("`@("`@<*%0H,"0(""P(4#@("`@(""`("$@("$`(0
  731. M`@("`@(&!PH*"@P)`@(-`A$.$P("#P((`@(2`@("`@("`D0X3#AD.'XXC3BA
  732. M.+,XPSC8..HX!SD;.2HY/CD``$LY6CF`.9`YGCFO.<`YTCD`````````````
  733. M`````````````.0Y\CD#.B0`17)R;W(@,`!);G9A;&ED(&9U;F-T:6]N(&YU
  734. M;6)E<@!.;R!S=6-H(&9I;&4@;W(@9&ER96-T;W)Y`%!A=&@@;F]T(&9O=6YD
  735. M`%1O;R!M86YY(&]P96X@9FEL97,`4&5R;6ES<VEO;B!D96YI960`0F%D(&9I
  736. M;&4@;G5M8F5R`$UE;6]R>2!A<F5N82!T<F%S:&5D`$YO="!E;F]U9V@@;65M
  737. M;W)Y`$EN=F%L:60@;65M;W)Y(&)L;V-K(&%D9')E<W,`26YV86QI9"!E;G9I
  738. M<F]N;65N=`!);G9A;&ED(&9O<FUA=`!);G9A;&ED(&%C8V5S<R!C;V1E`$EN
  739. M=F%L:60@9&%T80!.;R!S=6-H(&1E=FEC90!!='1E;7!T960@=&\@<F5M;W9E
  740. M(&-U<G)E;G0@9&ER96-T;W)Y`$YO="!S86UE(&1E=FEC90!.;R!M;W)E(&9I
  741. M;&5S`$EN=F%L:60@87)G=6UE;G0`07)G(&QI<W0@=&]O(&)I9P!%>&5C(&9O
  742. M<FUA="!E<G)O<@!#<F]S<RUD979I8V4@;&EN:P!-871H(&%R9W5M96YT`%)E
  743. M<W5L="!T;V\@;&%R9V4`1FEL92!A;')E861Y(&5X:7-T<P!5;FMN;W=N(&5R
  744. ;<F]R`"5S.B`E<PH``+`"L`*W`F$=9AUF'68=
  745. `
  746. end
  747. sum -r/size 9430/20213 section (from "begin" to "end")
  748. sum -r/size 19821/14652 entire input file
  749. END_UUE
  750.  
  751. -- 
  752. Jon (jonhiga@phoenix.princeton.edu)
  753.  
  754.