home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1994 March / Source_Code_CD-ROM_Walnut_Creek_March_1994.iso / compsrcs / misc / volume28 / screen32 / part08 < prev    next >
Encoding:
Text File  |  1992-02-08  |  55.0 KB  |  1,541 lines

  1. Newsgroups: comp.sources.misc
  2. From: jnweiger@immd4.informatik.uni-erlangen.de (Juergen Weigert)
  3. Subject:  v28i025:  screen-3.2 - multiple windows on an ASCII terminal, v3.2, Part08/11
  4. Message-ID: <1992Feb9.223811.6987@sparky.imd.sterling.com>
  5. X-Md4-Signature: 4ffbb05717f9e1fc6ba4a51637c990db
  6. Date: Sun, 9 Feb 1992 22:38:11 GMT
  7. Approved: kent@sparky.imd.sterling.com
  8.  
  9. Submitted-by: jnweiger@immd4.informatik.uni-erlangen.de (Juergen Weigert)
  10. Posting-number: Volume 28, Issue 25
  11. Archive-name: screen-3.2/part08
  12. Environment: UNIX
  13.  
  14. #!/bin/sh
  15. # do not concatenate these parts, unpack them in order with /bin/sh
  16. # file screen3.2/socket.c continued
  17. #
  18. if test ! -r _shar_seq_.tmp; then
  19.     echo 'Please unpack part 1 first!'
  20.     exit 1
  21. fi
  22. (read Scheck
  23.  if test "$Scheck" != 8; then
  24.     echo Please unpack part "$Scheck" next!
  25.     exit 1
  26.  else
  27.     exit 0
  28.  fi
  29. ) < _shar_seq_.tmp || exit 1
  30. if test ! -f _shar_wnt_.tmp; then
  31.     echo 'x - still skipping screen3.2/socket.c'
  32. else
  33. echo 'x - continuing file screen3.2/socket.c'
  34. sed 's/^X//' << 'SHAR_EOF' >> 'screen3.2/socket.c' &&
  35. X    }
  36. X  close(ns);
  37. #endif                /* NAMEDPIPE */
  38. X
  39. X  if (len == -1)
  40. X    Msg(errno, "read");
  41. X  if (left > 0)
  42. X    return;
  43. X  debug1("RecMsg: type %d !, ", m.type);
  44. X  switch (m.type)
  45. X    {
  46. X    case MSG_WINCH:
  47. X      /* Already processed in screen.c */
  48. #ifdef notdef
  49. X      CheckScreenSize(1); /* Change fore */
  50. #endif
  51. X      break;
  52. X    case MSG_CREATE:
  53. X      if (!Detached)
  54. X    ExecCreate(&m);
  55. X      break;
  56. X    case MSG_CONT:
  57. X      debug3("RecMsg: apid=%d,was %d, Detached=%d\n", m.m.attach.apid,
  58. X             AttacherPid, Detached);
  59. X
  60. #ifdef SECURE_MSG_CONT
  61. X      if (m.m.attach.apid != AttacherPid || !Detached)
  62. X    /*
  63. X     * now we realize, that there is something strange happening.
  64. X     * First, there was some idiot who said "CONT" and thought
  65. X     * "ATTACH". This is, when we have (AttacherPid == 0). Harmless.
  66. X     * Let him in. Second, we are waiting for a certain AttacherPid,
  67. X     * and not for "any" attacher. This is when (AttacherPid != 0).
  68. X     * But Darwin's rule says "survival of the fittest", thus: Look
  69. X     * weather "our" AttacherPid is still alive and well, and let the
  70. X     * new one only in, if the old Attacher has been killed. jw.
  71. X     */
  72. X    if (AttacherPid != 0 && kill(AttacherPid, 0) == 0)
  73. X      break;        /* Intruder Alert */
  74. X    else
  75. #endif                /* SECURE_MSG_CONT */
  76. X      AttacherPid = 0;    /* we dont want to kill ourselves
  77. X                 * later. jw. */
  78. X      /* FALLTHROUGH */
  79. X    case MSG_ATTACH:
  80. X      if (CheckPid(m.m.attach.apid))
  81. X    {
  82. X      debug1("Attach attempt with bad pid(%d)\n", m.m.attach.apid);
  83. X      Msg(0, "Attach attempt with bad pid(%d) !", m.m.attach.apid);
  84. X          break;
  85. X    }
  86. #ifdef PASSWORD
  87. X      if (!CheckPasswd(m.m.attach.password, m.m.attach.apid, m.m.attach.tty))
  88. X    {
  89. X      debug3("RcvMsg:Checkpass(%s,%d,%s) failed\n",
  90. X         m.m.attach.password, m.m.attach.apid, m.m.attach.tty);
  91. X      break;
  92. X    }
  93. #endif                /* PASSWORD */
  94. X      if (!Detached)
  95. X    {
  96. X      debug("RecMsg: hey, why you disturb, we are not detached. hangup!\n");
  97. X      Kill(m.m.attach.apid, SIG_BYE);
  98. X      Msg(0, "Attach msg ignored: We are not detached.");
  99. X      break;
  100. X    }
  101. X      if ((i = secopen(m.m.attach.tty, O_RDWR | O_NDELAY, 0)) < 0)
  102. X    {
  103. X      debug1("ALERT: Cannot open %s!\n", m.m.attach.tty);
  104. #ifdef NETHACK
  105. X          if (nethackflag)
  106. X        Msg(errno, 
  107. X            "You can't open (%s). Perhaps there's a Monster behind it.",
  108. X            m.m.attach.tty);
  109. X          else
  110. #endif
  111. X      Msg(errno, "Attach: Could not open %s", m.m.attach.tty);
  112. X      Kill(m.m.attach.apid, SIG_BYE);
  113. X      break;
  114. X    }
  115. X      errno = 0;
  116. X      if (i)
  117. X    {
  118. X      debug("PANIC: open did not return fd 0!\n");
  119. X      close(0);
  120. X      dup(i);
  121. X      close(i);
  122. X      close(1);
  123. X      close(2);
  124. X    }
  125. X      debug2("RecMsg: apid %d is o.k. and we just opened '%s'\n", m.m.attach.apid, m.m.attach.tty);
  126. X
  127. #ifdef hpux_and_it_still_does_not_work
  128. X      {
  129. X    int pgrp, zero = 0;
  130. X
  131. X    if (ioctl(0, TIOCGPGRP, &pgrp) == -1)
  132. X      debug1("tcgetpgrp: %d\n", errno);    /* save old pgrp from tty */
  133. X
  134. X    if (ioctl(0, TIOCSPGRP, &zero) == -1)
  135. X      debug1("tcsetpgrp: %d\n", errno);    /* detach tty from proc grp */
  136. #ifdef hpux
  137. X    setpgrp();
  138. #else
  139. X    if (setpgrp(0, getpid()) == -1)
  140. X      debug1("setpgrp: %d\n", errno);    /* make me proc group leader */
  141. #endif
  142. X
  143. X    close(0);    /* reopen tty, now we should get it as our tty */
  144. X    (void)secopen(m.m.attach.tty, O_RDWR | O_NDELAY, 0);    /* */
  145. X
  146. #ifdef hpux
  147. X    setpgrp2(0, pgrp);
  148. #else
  149. X    setpgrp(0, pgrp);
  150. #endif
  151. X    ioctl(0, TIOCSPGRP, &pgrp);
  152. X      }
  153. #endif  /* hpux_and_it_still_does_not_work */
  154. X
  155. X      (void) dup(0);
  156. X      (void) dup(0);
  157. X      GetTTY(0, &OldMode);
  158. #if defined(BSDJOBS) && !(defined(POSIX) || defined(SYSV))
  159. X      if ((DevTty = open("/dev/tty", O_RDWR | O_NDELAY)) == -1)
  160. X    {
  161. X      debug1("DevTty not opened: %d.\n", errno);
  162. X      Msg(errno, "/dev/tty");
  163. X    }
  164. #endif
  165. X      signal(SIGHUP, SigHup);
  166. #ifdef BSDJOBS
  167. X      if (Suspended && m.type == MSG_ATTACH)
  168. X    if (kill(AttacherPid, SIG_BYE) == 0)
  169. X      kill(AttacherPid, SIGCONT);
  170. #endif
  171. X
  172. X      AttacherPid = m.m.attach.apid;
  173. X      strcpy(display_tty, m.m.attach.tty);
  174. #ifdef UTMPOK
  175. X      /*
  176. X       * we set the Utmp slots again, if we were detached normally
  177. X       * and if we were detached by ^Z.
  178. X       */
  179. X      ReInitUtmp();
  180. X      for (i = WinList; i != -1; i = wtab[i]->WinLink)
  181. X    if (wtab[i]->slot != (slot_t) -1)
  182. X      SetUtmp(wtab[i], i);
  183. #endif
  184. X      (void) chmod(SockPath, /* S_IFSOCK | */ 0700);
  185. X      Detached = 0;
  186. #ifdef BSDJOBS
  187. X      Suspended = 0;
  188. #endif
  189. X      /*
  190. X       * we like to have always the valid termcap, even if we are
  191. X       * reattached from a different tty type. thus attacher had to
  192. X       * tell us, what TERM we have. The attacher has correct env
  193. X       * setting. we (the backend may be wrong).
  194. X       */
  195. X      if (*m.m.attach.envterm)
  196. X    {
  197. #if defined(pyr) || defined(xelos) || defined(sequent)
  198. X      /*
  199. X       * Kludge for systems with braindamaged termcap routines,
  200. X       * which evaluate $TERMCAP, regardless weather it describes
  201. X       * the correct terminal type or not.
  202. X       */
  203. X      if (strcmp(getenv("TERM"), m.m.attach.envterm + 5))
  204. X        {
  205. X          debug("a different terminal, so unsetenv(TERMCAP)");
  206. X          unsetenv("TERMCAP");
  207. X        }
  208. #endif
  209. X    
  210. #if !defined(sequent) && !defined(MIPS)
  211. X      putenv(m.m.attach.envterm);
  212. #else
  213. X      setenv("TERM", m.m.attach.envterm + 5, 1);
  214. #endif
  215. X    }
  216. #if !defined(sequent) && !defined(MIPS)
  217. X      sprintf(lbuf, "LINES=%d", m.m.attach.lines);
  218. X      if (m.m.attach.lines > 0 || getenv("LINES"))
  219. X        putenv(lbuf);
  220. X      sprintf(cbuf, "COLUMNS=%d", m.m.attach.columns);
  221. X      if (m.m.attach.columns > 0 || getenv("COLUMNS"))
  222. X        putenv(cbuf);
  223. #else
  224. X      sprintf(lbuf, "%d", m.m.attach.lines);
  225. X      if (m.m.attach.lines > 0 || getenv("LINES"))
  226. X        setenv("LINES", lbuf, 1);
  227. X      sprintf(cbuf, "%d", m.m.attach.columns);
  228. X      if (m.m.attach.columns > 0 || getenv("COLUMNS"))
  229. X        setenv("COLUMNS", cbuf, 1);
  230. #endif
  231. X      
  232. X      /*
  233. X       * We reboot our Terminal Emulator. Forget all we knew about
  234. X       * the old terminal, reread the termcap entries in .screenrc
  235. X       * (and nothing more from .screenrc is read. Mainly because
  236. X       * I did not check, weather a full reinit is save. jw) 
  237. X       * and /etc/screenrc, and initialise anew.
  238. X       */
  239. X      if (extra_outcap)
  240. X    Free(extra_outcap);
  241. X      if (extra_incap)
  242. X    Free(extra_incap);
  243. #ifdef ETCSCREENRC
  244. X      if ((p = getenv("SYSSCREENRC")) == NULL)
  245. X    StartRc(ETCSCREENRC);
  246. X      else
  247. X    StartRc(p);
  248. #endif
  249. X      StartRc(RcFileName);
  250. X      InitTermcap();
  251. X      InitTerm(m.m.attach.adaptflag);
  252. X      SetMode(&OldMode, &NewMode);
  253. X      SetTTY(0, &NewMode);
  254. X      fore->active = 1;
  255. X      Activate(0);
  256. X      debug("activated...\n");
  257. X      break;
  258. X    case MSG_ERROR:
  259. X      Msg(0, "%s", m.m.message);
  260. X      break;
  261. X    case MSG_HANGUP:
  262. #ifdef REMOTE_DETACH
  263. X    case MSG_DETACH:
  264. # ifdef POW_DETACH
  265. X    case MSG_POW_DETACH:
  266. # endif                /* POW_DETACH */
  267. #endif
  268. #ifdef REMOTE_DETACH
  269. # ifdef POW_DETACH
  270. X      if (m.type == MSG_POW_DETACH)
  271. X    Detach(D_REMOTE_POWER);
  272. X      else
  273. # endif                /* POW_DETACH */
  274. X      if (m.type == MSG_DETACH)
  275. X    Detach(D_REMOTE);
  276. X      else
  277. #endif
  278. X      SigHup(SIGARG);
  279. X      break;
  280. X    default:
  281. X      Msg(0, "Invalid message (type %d).", m.type);
  282. X    }
  283. }
  284. X
  285. #if defined(_SEQUENT_) && !defined(NAMEDPIPE)
  286. #undef connect
  287. X
  288. sconnect(s, sapp, len)
  289. int s, len;
  290. struct sockaddr *sapp;
  291. {
  292. X  register struct sockaddr_un *sap;
  293. X  struct stat st;
  294. X  int x;
  295. X
  296. X  sap = (struct sockaddr_un *)sapp;
  297. X  if (stat(sap->sun_path,&st))
  298. X    return -1;
  299. X  chmod(sap->sun_path, 0);
  300. X  x = connect(s, (struct sockaddr *) sap, len);
  301. X  chmod(sap->sun_path, st.st_mode);
  302. X  return x;
  303. }
  304. #endif
  305. SHAR_EOF
  306. echo 'File screen3.2/socket.c is complete' &&
  307. chmod 0444 screen3.2/socket.c ||
  308. echo 'restore of screen3.2/socket.c failed'
  309. Wc_c="`wc -c < 'screen3.2/socket.c'`"
  310. test 27101 -eq "$Wc_c" ||
  311.     echo 'screen3.2/socket.c: original size 27101, current size' "$Wc_c"
  312. rm -f _shar_wnt_.tmp
  313. fi
  314. # ============= screen3.2/window.c ==============
  315. if test -f 'screen3.2/window.c' -a X"$1" != X"-c"; then
  316.     echo 'x - skipping screen3.2/window.c (File already exists)'
  317.     rm -f _shar_wnt_.tmp
  318. else
  319. > _shar_wnt_.tmp
  320. echo 'x - extracting screen3.2/window.c (Text)'
  321. sed 's/^X//' << 'SHAR_EOF' > 'screen3.2/window.c' &&
  322. /* Copyright (c) 1991
  323. X *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
  324. X *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
  325. X * Copyright (c) 1987 Oliver Laumann
  326. X *
  327. X * This program is free software; you can redistribute it and/or modify
  328. X * it under the terms of the GNU General Public License as published by
  329. X * the Free Software Foundation; either version 1, or (at your option)
  330. X * any later version.
  331. X *
  332. X * This program is distributed in the hope that it will be useful,
  333. X * but WITHOUT ANY WARRANTY; without even the implied warranty of
  334. X * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  335. X * GNU General Public License for more details.
  336. X *
  337. X * You should have received a copy of the GNU General Public License
  338. X * along with this program (see the file COPYING); if not, write to the
  339. X * Free Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  340. X *
  341. X * Noteworthy contributors to screen's design and implementation:
  342. X *    Wayne Davison (davison@borland.com)
  343. X *    Patrick Wolfe (pat@kai.com, kailand!pat)
  344. X *    Bart Schaefer (schaefer@cse.ogi.edu)
  345. X *    Nathan Glasser (nathan@brokaw.lcs.mit.edu)
  346. X *    Larry W. Virden (lwv27%cas.BITNET@CUNYVM.CUNY.Edu)
  347. X *    Howard Chu (hyc@hanauma.jpl.nasa.gov)
  348. X *    Tim MacKenzie (tym@dibbler.cs.monash.edu.au)
  349. X *    Markku Jarvinen (mta@{cc,cs,ee}.tut.fi)
  350. X *    Marc Boucher (marc@CAM.ORG)
  351. X *
  352. X ****************************************************************
  353. X */
  354. X
  355. #ifndef lint
  356. X  static char rcs_id[] = "$Id: window.c,v 1.2 92/02/03 02:28:20 jnweiger Exp $ FAU";
  357. #endif
  358. X
  359. #include <stdio.h>
  360. #include <sys/types.h>
  361. #include <signal.h>
  362. #ifndef sun
  363. #include <sys/ioctl.h>
  364. #endif
  365. #ifdef BSDI
  366. # include <string.h>
  367. #endif /* BSDI */
  368. X
  369. #ifdef ISC
  370. # include <sys/tty.h>
  371. # include <sys/sioctl.h>
  372. # include <sys/pty.h>
  373. #endif
  374. X
  375. #ifdef MIPS
  376. extern int errno;
  377. #endif
  378. X
  379. #include "config.h"
  380. #include "screen.h"
  381. #include "extern.h"
  382. X
  383. static void FreeScrollback __P((struct win *));
  384. X
  385. static int ResizeHistArray __P((struct win *, char ***, int, int, int));
  386. static int ResizeScreenArray __P((struct win *, char ***, int, int, int));
  387. static void FreeArray __P((char ***, int));
  388. X
  389. extern TermcapCOLS, TermcapROWS;
  390. extern int maxwidth;
  391. extern int default_width, default_height, screenwidth, screenheight;
  392. extern char *blank, *null, *OldImage, *OldAttr;
  393. extern char *OldFont, *LastMsg;
  394. extern struct win *wtab[], *fore;
  395. extern int WinList, ForeNum;
  396. extern char *Z0, *Z1, *WS;
  397. extern int Z0width, Z1width;
  398. X
  399. extern int Detached;
  400. X
  401. #if defined(TIOCGWINSZ) || defined(TIOCSWINSZ)
  402. X  struct winsize glwz;
  403. #endif
  404. X
  405. /*
  406. X * ChangeFlag:   0: try to modify no window
  407. X *               1: modify fore (and try to modify no other)
  408. X *               2: modify all windows
  409. X *
  410. X * Note: Activate() is only called if change_flag == 1
  411. X *       i.e. on a WINCH event
  412. X */
  413. X
  414. void
  415. CheckScreenSize(change_flag)
  416. int change_flag;
  417. {
  418. X  int width, height, n;
  419. X  struct win *p;
  420. X
  421. X  if (Detached)
  422. X    {
  423. X      debug("CheckScreenSize: Detached -> No check.\n");
  424. X      return;
  425. X    }
  426. #ifdef TIOCGWINSZ
  427. X  if (ioctl(0, TIOCGWINSZ, &glwz) != 0)
  428. X    {
  429. X      debug1("CheckScreenSize: ioctl(0, TIOCGWINSZ) errno %d\n", errno);
  430. X      width = TermcapCOLS;
  431. X      height = TermcapROWS;
  432. X    }
  433. X  else
  434. X    {
  435. X      width = glwz.ws_col;
  436. X      height = glwz.ws_row;
  437. X      if (width == 0)
  438. X        width = TermcapCOLS;
  439. X      if (height == 0)
  440. X        height = TermcapROWS;
  441. X    }
  442. #else
  443. X  width = TermcapCOLS;
  444. X  height = TermcapROWS;
  445. #endif
  446. X  
  447. X  debug2("CheckScreenSize: screen is (%d,%d)\n", width, height);
  448. X
  449. X  if (change_flag == 2)
  450. X    {
  451. X      for (n = WinList; n != -1; n = p->WinLink)
  452. X        {
  453. X          p = wtab[n];
  454. X          ChangeWindowSize(p, width, height);
  455. X    }
  456. X    }
  457. X  if (screenwidth == width && screenheight == height)
  458. X    {
  459. X      debug("CheckScreenSize: No change -> return.\n");
  460. X      return;
  461. X    }
  462. X  ChangeScreenSize(width, height, change_flag);
  463. X  if (change_flag == 1 && WinList != -1)    /* was HasWindow */
  464. X    Activate(fore->norefresh);
  465. }
  466. X
  467. void
  468. ChangeScreenSize(width, height, change_fore)
  469. int width, height;
  470. int change_fore;
  471. {
  472. X  struct win *p;
  473. X  int n, wwi;
  474. X
  475. X  if (screenwidth == width && screenheight == height)
  476. X    {
  477. X      debug("ChangeScreenSize: no change\n");
  478. X      return;
  479. X    }
  480. X  debug3("ChangeScreenSize to (%d,%d) (change_fore: %d)\n",width, height, change_fore);
  481. X  screenwidth = width;
  482. X  screenheight = height;
  483. X
  484. X  if (WS)
  485. X    {
  486. X      default_width = TermcapCOLS;
  487. X      default_height = TermcapROWS;
  488. X    }
  489. X  else
  490. X    {
  491. X      if (Z0 && (width == Z0width || width == Z1width) &&
  492. X          (TermcapCOLS == Z0width || TermcapCOLS == Z1width))
  493. X        default_width = TermcapCOLS;
  494. X      else
  495. X        default_width = width;
  496. X      default_height = height;
  497. X    }
  498. X  debug2("Default size: (%d,%d)\n",default_width, default_height);
  499. X  if (change_fore)
  500. X    {
  501. X      if (WinList != -1 && change_fore) /* was HasWindow */
  502. X        {
  503. X          debug("Trying to change fore.\n");
  504. X          ChangeWindowSize(fore, width, height);
  505. X        }
  506. X    }
  507. X  if (WS == NULL)
  508. X    {
  509. X      /* We have to adapt all windows */
  510. X      for (n = WinList; n != -1; n = p->WinLink)
  511. X        {
  512. X          p = wtab[n];
  513. X          debug1("Trying to change window %d.\n",n);
  514. X          wwi = width;
  515. X          if (Z0 && (width==Z0width || width==Z1width))
  516. X        {
  517. X          if (p->width > (Z0width + Z1width) / 2)
  518. X        wwi = Z0width;
  519. X          else
  520. X        wwi = Z1width;
  521. X        }
  522. X          ChangeWindowSize(p, wwi, height);
  523. X        }
  524. X    }
  525. }
  526. X
  527. int
  528. ChangeScrollback(p, histheight, histwidth)
  529. struct win *p;
  530. int histheight, histwidth;
  531. {
  532. X  if (histheight > MAXHISTHEIGHT)
  533. X    histheight = MAXHISTHEIGHT;
  534. X  debug2("ChangeScrollback(..., %d, %d)\n", histheight, histwidth);
  535. X  debug2("  was %d, %d\n", p->histheight, p->width);
  536. X
  537. X  if (histheight == 0)
  538. X    {
  539. X      FreeScrollback(p);
  540. X      return 0;
  541. X    }
  542. X
  543. X  if (ResizeHistArray(p, &p->ihist, histwidth, histheight, 1)
  544. X      || ResizeHistArray(p, &p->ahist, histwidth, histheight, 0)
  545. X      || ResizeHistArray(p, &p->fhist, histwidth, histheight, 0))
  546. X    {
  547. X      debug("   failed, removing all histbuf\n");
  548. X      FreeScrollback(p);
  549. X      Msg_nomem;
  550. X      return (-1);
  551. X    }
  552. X  if (p->histheight != histheight)
  553. X    p->histidx = 0;
  554. X  p->histheight = histheight;
  555. X
  556. X  return(0);
  557. }
  558. X
  559. static void FreeScrollback(p)
  560. struct win *p;
  561. {
  562. X  FreeArray(&p->ihist, p->histheight);
  563. X  FreeArray(&p->ahist, p->histheight);
  564. X  FreeArray(&p->fhist, p->histheight);
  565. X  p->histheight = 0;
  566. }
  567. X
  568. static int
  569. ResizeHistArray(p, arr, wi, hi, fillblank)
  570. struct win *p;
  571. char ***arr;
  572. int wi, hi, fillblank;
  573. {
  574. X  char **narr, **np, **onp, **onpe;
  575. X  int t, x, first;
  576. X
  577. X  if (p->width == wi && p->histheight == hi)
  578. X    return(0);
  579. X  if (p->histheight != hi)
  580. X    {
  581. X      if ((narr = (char **)calloc(sizeof(char *), hi)) == NULL)
  582. X    {
  583. X      FreeArray(arr, p->histheight);
  584. X      return(-1);
  585. X    }
  586. X      np = narr;
  587. X      onp = (*arr) + p->histidx;
  588. X      onpe = (*arr) + p->histheight;
  589. X      first = p->histheight - hi;
  590. X      if (first<0)
  591. X     np-=first;
  592. X      for(t=0; t<p->histheight; t++)
  593. X    {
  594. X          if (t-first >=0 && t-first < hi)
  595. X        *np++ = *onp;
  596. X      else
  597. X        Free(*onp);
  598. X      if (++onp == onpe)
  599. X        onp = *arr;
  600. X    }
  601. X      if (*arr)
  602. X    Free(*arr);
  603. X    }
  604. X  else
  605. X    narr = *arr;
  606. X  for (t=0, np=narr; t<hi; t++, np++)
  607. X    {
  608. X      x = p->width;
  609. X      if (*np == 0)
  610. X    {
  611. X      *np = (char *)malloc(wi);
  612. X          x = 0;
  613. X    }
  614. X      else if (p->width != wi)
  615. X    {
  616. X      *np = (char *)xrealloc(*np, wi);
  617. X    }
  618. X      if (*np == 0)
  619. X    {
  620. X      FreeArray(&narr, hi);
  621. X      return(-1);
  622. X    }
  623. X      if (x<wi)
  624. X    {
  625. X      if (fillblank)
  626. X        bclear(*np+x, wi-x);
  627. X      else
  628. X        bzero(*np+x, wi-x);
  629. X    }
  630. X    }
  631. X  *arr = narr;
  632. X  return(0);
  633. }
  634. X      
  635. X
  636. static int
  637. ResizeScreenArray(p, arr, wi, hi, fillblank)
  638. struct win *p;
  639. char ***arr;
  640. int wi, hi, fillblank;
  641. {
  642. X  int minr;
  643. X  char **cp;
  644. X
  645. X  if (p->width == wi && p->height == hi)
  646. X    return(0);
  647. X
  648. X  if (hi > p->height)
  649. X    minr = p->height;
  650. X  else
  651. X    minr = hi;
  652. X
  653. X  if (p->height > hi)
  654. X    {
  655. X      for (cp = *arr; cp < *arr + (p->height - hi); cp++)
  656. X    Free(*cp);
  657. X      bcopy((char *)(*arr + (p->height - hi)), (char *)(*arr),
  658. X        hi * sizeof(char *));
  659. X    }
  660. X  if (*arr && p->width != wi)
  661. X    for (cp = *arr; cp < *arr + minr; cp++)
  662. X      {
  663. X    if ((*cp = (char *)xrealloc(*cp, (unsigned) wi)) == 0)
  664. X      {
  665. X        FreeArray(arr, p->height);
  666. X        return(-1);
  667. X      }
  668. X    if (wi > p->width)
  669. X      {
  670. X        if (fillblank)
  671. X          bclear(*cp + p->width, wi - p->width);
  672. X        else
  673. X          bzero(*cp + p->width, wi - p->width);
  674. X      }
  675. X      }
  676. X  if (*arr)
  677. X    *arr = (char **) xrealloc((char *) *arr, (unsigned) hi * sizeof(char *));
  678. X  else
  679. X    *arr = (char **) malloc((unsigned) hi * sizeof(char *));
  680. X  if (*arr == 0)
  681. X    return(-1);
  682. X  for (cp = *arr + p->height; cp < *arr + hi; cp++)
  683. X    {
  684. X      if ((*cp = malloc((unsigned) wi)) == 0)
  685. X    {
  686. X      while (--cp >= *arr)
  687. X        Free(*cp);
  688. X      Free(*arr);
  689. X          return(-1);
  690. X    }
  691. X      if (fillblank)
  692. X    bclear(*cp, wi);
  693. X      else
  694. X    bzero(*cp, wi);
  695. X    }
  696. X  return(0);
  697. }
  698. X
  699. static void
  700. FreeArray(arr, hi)
  701. char ***arr;
  702. int hi;
  703. {
  704. X  register char **p;
  705. X  register int t;
  706. X
  707. X  if (*arr == 0)
  708. X    return;
  709. X  for (t = hi, p = *arr; t--; p++)
  710. X    if (*p)
  711. X      Free(*p);
  712. X  Free(*arr);
  713. }
  714. X
  715. X
  716. int
  717. ChangeWindowSize(p, width, height)
  718. struct win *p;
  719. int width, height;
  720. {
  721. X  int t, scr;
  722. X  
  723. X  if (width > maxwidth)
  724. X    {
  725. X      maxwidth = width;
  726. X      debug1("New maxwidth: %d\n", maxwidth);
  727. X      if (blank == 0)
  728. X        blank = malloc((unsigned) maxwidth);
  729. X      else
  730. X        blank = xrealloc(blank, (unsigned) maxwidth);
  731. X      if (null == 0)
  732. X        null = malloc((unsigned) maxwidth);
  733. X      else
  734. X        null = xrealloc(null, (unsigned) maxwidth);
  735. X      if (OldImage == 0)
  736. X        OldImage = malloc((unsigned) maxwidth);
  737. X      else
  738. X        OldImage = xrealloc(OldImage, (unsigned) maxwidth);
  739. X      if (OldAttr == 0)
  740. X        OldAttr = malloc((unsigned) maxwidth);
  741. X      else
  742. X        OldAttr = xrealloc(OldAttr, (unsigned) maxwidth);
  743. X      if (OldFont == 0)
  744. X        OldFont = malloc((unsigned) maxwidth);
  745. X      else
  746. X        OldFont = xrealloc(OldFont, (unsigned) maxwidth);
  747. X      if (LastMsg == 0)
  748. X        {
  749. X          LastMsg = malloc((unsigned) maxwidth + 1);
  750. X          *LastMsg = 0;
  751. X        }
  752. X      else
  753. X        LastMsg = xrealloc(LastMsg, (unsigned) maxwidth + 1);
  754. X      LastMsg[maxwidth]=0;
  755. X      if (!(blank && null && OldImage && OldAttr && OldFont && LastMsg))
  756. X    {
  757. nomem:      for (t = WinList; t != -1 && wtab[t] != p; t = p->WinLink) 
  758. X        ;
  759. X      if (t >= 0)
  760. X        KillWindow(t);
  761. X      Msg(0, "Out of memory -> Window destroyed !!");
  762. X      return(-1);
  763. X    }
  764. X      MakeBlankLine(blank, maxwidth);
  765. X      bzero(null, maxwidth);
  766. X    }
  767. X  
  768. X  if (width == p->width && height == p->height)
  769. X    {
  770. X      debug("ChangeWindowSize: No change.\n");
  771. X      return(0);
  772. X    }
  773. X
  774. X  debug2("ChangeWindowSize from (%d,%d) to ", p->width, p->height);
  775. X  debug2("(%d,%d)\n", width, height);
  776. X
  777. X  if (width == 0 && height == 0)
  778. X    {
  779. X      FreeArray(&p->image, p->height);
  780. X      FreeArray(&p->attr, p->height);
  781. X      FreeArray(&p->font, p->height);
  782. X      if (p->tabs)
  783. X    Free(p->tabs);
  784. X      p->width = 0;
  785. X      p->height = 0;
  786. X      FreeScrollback(p);
  787. X      return(0);
  788. X    }
  789. X
  790. X  /* when window gets smaller, scr is the no. of lines we scroll up */
  791. X  scr = p->height - height;
  792. X  if (scr < 0)
  793. X    scr = 0;
  794. X  for (t = 0; t < scr; t++)
  795. X    AddLineToHist(p, p->image+t, p->attr+t, p->font+t); 
  796. X  if (ResizeScreenArray(p, &p->image, width, height, 1)
  797. X      || ResizeScreenArray(p, &p->attr, width, height, 0)
  798. X      || ResizeScreenArray(p, &p->font, width, height, 0))
  799. X    {
  800. X      goto nomem;
  801. X    }
  802. X  /* this won't change the height of the scrollback history buffer, but
  803. X   * it will check the width of the lines.
  804. X   */
  805. X  ChangeScrollback(p, p->histheight, width);
  806. X
  807. X  if (p->tabs == 0)
  808. X    {
  809. X      /* tabs get width+1 because 0 <= x <= width */
  810. X      if ((p->tabs = malloc((unsigned) width + 1)) == 0)
  811. X        goto nomem;
  812. X      t = 8;
  813. X    }
  814. X  else
  815. X    {
  816. X      if ((p->tabs = xrealloc(p->tabs, (unsigned) width + 1)) == 0)
  817. X        goto nomem;
  818. X      t = p->width;
  819. X    }
  820. X  for (t = (t + 7) & 8; t < width; t += 8)
  821. X    p->tabs[t] = 1; 
  822. X  p->height = height;
  823. X  p->width = width;
  824. X  if (p->x >= width)
  825. X    p->x = width - 1;
  826. X  if ((p->y -= scr) < 0)
  827. X    p->y = 0;
  828. X  if (p->Saved_x >= width)
  829. X    p->Saved_x = width - 1;
  830. X  if ((p->Saved_y -= scr) < 0)
  831. X    p->Saved_y = 0;
  832. X  if (p->autoaka > 0) 
  833. X    if ((p->autoaka -= scr) < 1)
  834. X      p->autoaka = 1;
  835. X  p->top = 0;
  836. X  p->bot = height - 1;
  837. #ifdef TIOCSWINSZ
  838. X  if (p->ptyfd && p->wpid)
  839. X    {
  840. X      glwz.ws_col = width;
  841. X      glwz.ws_row = height;
  842. X      debug("Setting pty winsize.\n");
  843. X      if (ioctl(p->ptyfd, TIOCSWINSZ, &glwz))
  844. X    debug2("SetPtySize: errno %d (fd:%d)\n", errno, p->ptyfd);
  845. # if defined(STUPIDTIOCSWINSZ) && defined(SIGWINCH)
  846. #  ifdef POSIX
  847. X      pgrp = tcgetpgrp(p->ptyfd);
  848. #  else
  849. X      if (ioctl(p->ptyfd, TIOCGPGRP, &pgrp))
  850. X    pgrp = 0;
  851. #  endif
  852. X      if (pgrp)
  853. X    {
  854. X      debug1("Sending SIGWINCH to pgrp %d.\n", pgrp);
  855. X      if (killpg(pgrp, SIGWINCH))
  856. X        debug1("killpg: errno %d\n", errno);
  857. X    }
  858. X      else
  859. X    debug1("Could not get pgrp: errno %d\n", errno);
  860. # endif /* STUPIDTIOCSWINSZ */
  861. X    }
  862. #endif
  863. X  return(0);
  864. }
  865. X
  866. X
  867. void
  868. ResizeScreen(wi)
  869. struct win *wi;
  870. {
  871. X  int width, height;
  872. X
  873. X  if (wi)
  874. X    {
  875. X      width = wi->width;
  876. X      height = wi->height;
  877. X    }
  878. X  else
  879. X    {
  880. X      width = default_width;
  881. X      height = default_height;
  882. X    }
  883. X  if (screenwidth == width && screenheight == height)
  884. X    {
  885. X      debug("ResizeScreen: No change\n");
  886. X      return;
  887. X    }
  888. X  debug2("ResizeScreen: to (%d,%d).\n", width, height);
  889. X  if (WS)
  890. X    {
  891. X      debug("ResizeScreen: using WS\n");
  892. X      WSresize(width, height);
  893. X      ChangeScreenSize(width, height, 0);
  894. X    }
  895. X  else if (Z0 && (width == Z0width || width == Z1width))
  896. X    {
  897. X      debug("ResizeScreen: using Z0/Z1\n");
  898. X      PutStr(width == Z0width ? Z0 : Z1);
  899. X      ChangeScreenSize(width, screenheight, 0);
  900. X    }
  901. X  if (screenwidth != width || screenheight != height)
  902. X    {
  903. X      debug2("BUG: Cannot resize from (%d,%d)",screenwidth, screenheight);
  904. X      debug2(" to (%d,%d) !!\n", width, height);
  905. X      if (wi)
  906. X    ChangeWindowSize(wi, screenwidth, screenheight);
  907. X    }
  908. }
  909. X
  910. char *
  911. xrealloc(mem, len)
  912. char *mem;
  913. int len;
  914. {
  915. X  register char *nmem;
  916. X
  917. X  if (nmem = realloc(mem, len))
  918. X    return(nmem);
  919. X  free(mem);
  920. X  return((char *)0);
  921. }
  922. SHAR_EOF
  923. chmod 0444 screen3.2/window.c ||
  924. echo 'restore of screen3.2/window.c failed'
  925. Wc_c="`wc -c < 'screen3.2/window.c'`"
  926. test 14071 -eq "$Wc_c" ||
  927.     echo 'screen3.2/window.c: original size 14071, current size' "$Wc_c"
  928. rm -f _shar_wnt_.tmp
  929. fi
  930. # ============= screen3.2/terminfo/s/screen-w ==============
  931. if test ! -d 'screen3.2/terminfo'; then
  932.     echo 'x - creating directory screen3.2/terminfo'
  933.     mkdir 'screen3.2/terminfo'
  934. fi
  935. if test ! -d 'screen3.2/terminfo/s'; then
  936.     echo 'x - creating directory screen3.2/terminfo/s'
  937.     mkdir 'screen3.2/terminfo/s'
  938. fi
  939. if test -f 'screen3.2/terminfo/s/screen-w' -a X"$1" != X"-c"; then
  940.     echo 'x - skipping screen3.2/terminfo/s/screen-w (File already exists)'
  941.     rm -f _shar_wnt_.tmp
  942. else
  943. > _shar_wnt_.tmp
  944. echo 'x - extracting screen3.2/terminfo/s/screen-w (Binary)'
  945. sed 's/^X//' << 'SHAR_EOF' > _shar_tmp_.tmp &&
  946. begin 600 screen3.2/terminfo/s/screen-w
  947. M&@$L`!4`"`"3`/\`<V-R965N+7=\5E0@,3`P+T%.4TD@6#,N-C0@=FER='5A
  948. M;"!T97)M:6YA;`````````````````````$```````$`A``(`!@`________
  949. M_____P``!``&``@`&0`>`"4`*0#_____+0`^`$``__]$`/____]&`$H`4`#_
  950. M____4P#_______]7`%P`________________80!F`&L`_____W``________
  951. M=`!Z`/__________@`#_______^$`/__B`#_____________B@#_________
  952. M_XX`__^2`)8`F@#_____________G@#_____H0#_______^E`/_______ZD`
  953. MK0"P`/__________________________________LP#_____M@"_`/_____(
  954. M`-$`V@#__^,`_____________________^P`_____^\`___R`/4`]P#___H`
  955. M___]`/_______________________________QM;6@`'``T`&ULE:25P,25D
  956. M.R5P,B5D<@`;6S-G`!M;2!M;2@`;6TL`&UM*`!M;)6DE<#$E9#LE<#(E9$@`
  957. M"@`;6T@`"``;6T,`&ULR-$@`&TT`&UM-`!M;-6T`&ULQ;0`;6S=M`!M;,VT`
  958. M&ULT;0`;6VT`&ULR,VT`&ULR-&T`&RDP`!M;3``(`!M/0@`;3U``&T]1`!M/
  959. M4@`;3U,`&S\`&T]$`!M/0P`;3T$`&SX`&ST`&T4`&ULE<#$E9$T`&ULE<#$E
  960. M9$(`&ULE<#$E9$P`&ULE<#$E9$0`&ULE<#$E9$,`&ULE<#$E9$$`&V,`&S@`
  961. -&S<`"@`;30`;2``)`%LE
  962. `
  963. end
  964. SHAR_EOF
  965. echo 'uudecoding file screen3.2/terminfo/s/screen-w' &&
  966. uudecode < _shar_tmp_.tmp && rm -f _shar_tmp_.tmp &&
  967. chmod 0644 screen3.2/terminfo/s/screen-w ||
  968. echo 'restore of screen3.2/terminfo/s/screen-w failed'
  969. Wc_c="`wc -c < 'screen3.2/terminfo/s/screen-w'`"
  970. test 643 -eq "$Wc_c" ||
  971.     echo 'screen3.2/terminfo/s/screen-w: original size 643, current size' "$Wc_c"
  972. rm -f _shar_wnt_.tmp
  973. fi
  974. # ============= screen3.2/terminfo/s/screen ==============
  975. if test -f 'screen3.2/terminfo/s/screen' -a X"$1" != X"-c"; then
  976.     echo 'x - skipping screen3.2/terminfo/s/screen (File already exists)'
  977.     rm -f _shar_wnt_.tmp
  978. else
  979. > _shar_wnt_.tmp
  980. echo 'x - extracting screen3.2/terminfo/s/screen (Binary)'
  981. sed 's/^X//' << 'SHAR_EOF' > _shar_tmp_.tmp &&
  982. begin 600 screen3.2/terminfo/s/screen
  983. M&@$J`!L`#0`I`2D!<V-R965N?%94(#$P,"]!3E-)(%@S+C8T('9I<G1U86P@
  984. M=&5R;6EN86P````````````````````!```````!`````````%``"``8`/__
  985. M________________________-@`J`$$`0P`D`3H`I0"A`/____]W`&@`J0#_
  986. M_UT`_____W,`Z@"1`/____^=`/_______RP`,0#________________V`!H!
  987. M'P'_____$P'_______\!`0<!___________!`/_______[L`___%`/______
  988. M_______+`/__________UP#__]L`WP#C`/_____________G`/_____'`/__
  989. M_____\\`________TP#^`!<!___________________________________P
  990. M`/____^4`%\`_____[(`5`!J`/__B`#_____________________#0'_____
  991. M\P#__Q`!OP#[`/__KP#__ZT`____________________________________
  992. M____________________________________________________________
  993. M____________________________________________________________
  994. M____________________________________________________________
  995. M____________________________________________________________
  996. M____________________________________________________________
  997. M____________________________________________________________
  998. M____________________________________<V-R965N?%94(#$P,"]!3E-)
  999. M(%@S+C8T('9I<G1U86P@=&5R;6EN86P`!P`;6S5M`!M;,6T`&UM:`!M;2!M;
  1000. M2@`-`!M;)6DE<#$E9#LE<#(E9'(`&ULE<#$E9$0`"``;6R5P,25D0@`*`!M;
  1001. M)7`Q)61#`!M;0P`;6R5I)7`Q)60[)7`R)61(`!M;)7`Q)61!`!M-`!M;)7`Q
  1002. M)61-`!M;30`;6TH`&UM+`!M;2``)`!M(`!M;)7`Q)61,`!M;3``*`!LI,``(
  1003. M`!M/1``;3T(`&T]#`!M/00`;3U``&T]1`!M/4@`;3U,`&S\`&ULR-$@`&T4`
  1004. M&S@`&ULW;0`;30`;/@`;6S(S;0`;6S(T;0`;8P`;-P`;6VT`&ST`&ULS;0`;
  1005. )6S1M`!M;,V<`
  1006. `
  1007. end
  1008. SHAR_EOF
  1009. echo 'uudecoding file screen3.2/terminfo/s/screen' &&
  1010. uudecode < _shar_tmp_.tmp && rm -f _shar_tmp_.tmp &&
  1011. chmod 0644 screen3.2/terminfo/s/screen ||
  1012. echo 'restore of screen3.2/terminfo/s/screen failed'
  1013. Wc_c="`wc -c < 'screen3.2/terminfo/s/screen'`"
  1014. test 999 -eq "$Wc_c" ||
  1015.     echo 'screen3.2/terminfo/s/screen: original size 999, current size' "$Wc_c"
  1016. rm -f _shar_wnt_.tmp
  1017. fi
  1018. # ============= screen3.2/terminfo/screeninfo.src ==============
  1019. if test -f 'screen3.2/terminfo/screeninfo.src' -a X"$1" != X"-c"; then
  1020.     echo 'x - skipping screen3.2/terminfo/screeninfo.src (File already exists)'
  1021.     rm -f _shar_wnt_.tmp
  1022. else
  1023. > _shar_wnt_.tmp
  1024. echo 'x - extracting screen3.2/terminfo/screeninfo.src (Text)'
  1025. sed 's/^X//' << 'SHAR_EOF' > 'screen3.2/terminfo/screeninfo.src' &&
  1026. screen|VT 100/ANSI X3.64 virtual terminal,
  1027. X    msgr, xon,
  1028. X    cols#80, it#8, lines#24,
  1029. X    bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
  1030. X    clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
  1031. X    cub=\E[%p1%dD, cub1=\b, cud=\E[%p1%dB, cud1=\n,
  1032. X    cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
  1033. X    cuu=\E[%p1%dA, cuu1=\EM, dl=\E[%p1%dM, dl1=\E[M,
  1034. X    ed=\E[J, el=\E[K, home=\E[H, ht=\t, hts=\EH,
  1035. X    il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E)0, kbs=\b,
  1036. X    kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
  1037. X    kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E?,
  1038. X    nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
  1039. X    rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs2=\Ec, sc=\E7,
  1040. X    sgr0=\E[m, smkx=\E=, smso=\E[3m, smul=\E[4m,
  1041. X    tbc=\E[3g,
  1042. SHAR_EOF
  1043. chmod 0644 screen3.2/terminfo/screeninfo.src ||
  1044. echo 'restore of screen3.2/terminfo/screeninfo.src failed'
  1045. Wc_c="`wc -c < 'screen3.2/terminfo/screeninfo.src'`"
  1046. test 668 -eq "$Wc_c" ||
  1047.     echo 'screen3.2/terminfo/screeninfo.src: original size 668, current size' "$Wc_c"
  1048. rm -f _shar_wnt_.tmp
  1049. fi
  1050. # ============= screen3.2/terminfo/screencap ==============
  1051. if test -f 'screen3.2/terminfo/screencap' -a X"$1" != X"-c"; then
  1052.     echo 'x - skipping screen3.2/terminfo/screencap (File already exists)'
  1053.     rm -f _shar_wnt_.tmp
  1054. else
  1055. > _shar_wnt_.tmp
  1056. echo 'x - extracting screen3.2/terminfo/screencap (Text)'
  1057. sed 's/^X//' << 'SHAR_EOF' > 'screen3.2/terminfo/screencap' &&
  1058. SC|screen|VT 100/ANSI X3.64 virtual terminal|\
  1059. X    :DO=\E[%dB:LE=\E[%dD:RI=\E[%dC:UP=\E[%dA:bs:bt=\E[Z:\
  1060. X    :cd=\E[J:ce=\E[K:cl=\E[H\E[J:cm=\E[%i%d;%dH:ct=\E[3g:\
  1061. X    :do=^J:nd=\E[C:pt:rc=\E8:rs=\Ec:sc=\E7:st=\EH:up=\EM:\
  1062. X    :le=^H:bl=^G:cr=^M:it#8:ho=\E[H:nw=\EE:ta=^I:is=\E)0:xv:\
  1063. X    :li#43:co#80:LP:us=\E[4m:ue=\E[24m:so=\E[3m:se=\E[23m:\
  1064. X    :mb=\E[5m:md=\E[1m:mr=\E[7m:me=\E[m:ms:sr=\EM:al=\E[L:\
  1065. X    :AL=\E[%dL:dl=\E[M:DL=\E[%dM:cs=\E[%i%d;%dr:dc=\E[P:\
  1066. X    :DC=\E[%dP:im=\E[4h:ei=\E[4l:mi:ic=\E[@:IC=\E[%d@:\
  1067. X    :ks=\E=:ke=\E>:G0:
  1068. SHAR_EOF
  1069. chmod 0644 screen3.2/terminfo/screencap ||
  1070. echo 'restore of screen3.2/terminfo/screencap failed'
  1071. Wc_c="`wc -c < 'screen3.2/terminfo/screencap'`"
  1072. test 515 -eq "$Wc_c" ||
  1073.     echo 'screen3.2/terminfo/screencap: original size 515, current size' "$Wc_c"
  1074. rm -f _shar_wnt_.tmp
  1075. fi
  1076. # ============= screen3.2/terminfo/screenwinfo.src ==============
  1077. if test -f 'screen3.2/terminfo/screenwinfo.src' -a X"$1" != X"-c"; then
  1078.     echo 'x - skipping screen3.2/terminfo/screenwinfo.src (File already exists)'
  1079.     rm -f _shar_wnt_.tmp
  1080. else
  1081. > _shar_wnt_.tmp
  1082. echo 'x - extracting screen3.2/terminfo/screenwinfo.src (Text)'
  1083. sed 's/^X//' << 'SHAR_EOF' > 'screen3.2/terminfo/screenwinfo.src' &&
  1084. screen-w|VT 100/ANSI X3.64 virtual terminal,
  1085. X    msgr, xon,
  1086. X    cols#132, it#8, lines#24,
  1087. X    bel=^G, blink=\E[5m, bold=\E[1m, cbt=\E[Z,
  1088. X    clear=\E[H\E[J, cr=\r, csr=\E[%i%p1%d;%p2%dr,
  1089. X    cub=\E[%p1%dD, cub1=\b, cud=\E[%p1%dB, cud1=\n,
  1090. X    cuf=\E[%p1%dC, cuf1=\E[C, cup=\E[%i%p1%d;%p2%dH,
  1091. X    cuu=\E[%p1%dA, cuu1=\EM, dl=\E[%p1%dM, dl1=\E[M,
  1092. X    ed=\E[J, el=\E[K, home=\E[H, ht=\t, hts=\EH,
  1093. X    il=\E[%p1%dL, il1=\E[L, ind=\n, is2=\E)0, kbs=\b,
  1094. X    kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA,
  1095. X    kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, khome=\E?,
  1096. X    nel=\EE, rc=\E8, rev=\E[7m, ri=\EM,
  1097. X    rmkx=\E>, rmso=\E[23m, rmul=\E[24m, rs2=\Ec, sc=\E7,
  1098. X    sgr0=\E[m, smkx=\E=, smso=\E[3m, smul=\E[4m,
  1099. X    tbc=\E[3g,
  1100. SHAR_EOF
  1101. chmod 0644 screen3.2/terminfo/screenwinfo.src ||
  1102. echo 'restore of screen3.2/terminfo/screenwinfo.src failed'
  1103. Wc_c="`wc -c < 'screen3.2/terminfo/screenwinfo.src'`"
  1104. test 671 -eq "$Wc_c" ||
  1105.     echo 'screen3.2/terminfo/screenwinfo.src: original size 671, current size' "$Wc_c"
  1106. rm -f _shar_wnt_.tmp
  1107. fi
  1108. # ============= screen3.2/terminfo/getwinsize.c ==============
  1109. if test -f 'screen3.2/terminfo/getwinsize.c' -a X"$1" != X"-c"; then
  1110.     echo 'x - skipping screen3.2/terminfo/getwinsize.c (File already exists)'
  1111.     rm -f _shar_wnt_.tmp
  1112. else
  1113. > _shar_wnt_.tmp
  1114. echo 'x - extracting screen3.2/terminfo/getwinsize.c (Text)'
  1115. sed 's/^X//' << 'SHAR_EOF' > 'screen3.2/terminfo/getwinsize.c' &&
  1116. main()
  1117. {
  1118. X  char *term, *s;
  1119. X  int li, co;
  1120. X  char tbuf[1024];
  1121. X
  1122. X  term = (char *)getenv("TERM");
  1123. X  printf("under iScreen getenv(\"TERM\") should return \"screen\": %s\n", term);
  1124. X  printf("getenv(\"LINES\") returns ");
  1125. X  if (s = (char *)getenv("LINES"))
  1126. X    {
  1127. X      li = atoi(s);
  1128. X      printf("%d\n", li);
  1129. X    }
  1130. X  else
  1131. X    printf("nothing valuable\n");
  1132. X  printf("getenv(\"COLUMNS\") returns ");
  1133. X  if (s = (char *)getenv("COLUMNS"))
  1134. X    {
  1135. X      co = atoi(s);
  1136. X      printf("%d\n", co);
  1137. X    }
  1138. X  else
  1139. X    printf("nothing valuable\n");
  1140. X  if (tgetent(tbuf, term) != 1)
  1141. X    {
  1142. X      printf("Oh, no termcap/info entry for %s!\n", term);
  1143. X    }
  1144. X  li = tgetnum("li");
  1145. X  printf("tgetnum(\"li\") returns %d\n", li);
  1146. X  co = tgetnum("co");
  1147. X  printf("tgetnum(\"co\") returns %d\n", co);
  1148. }
  1149. SHAR_EOF
  1150. chmod 0644 screen3.2/terminfo/getwinsize.c ||
  1151. echo 'restore of screen3.2/terminfo/getwinsize.c failed'
  1152. Wc_c="`wc -c < 'screen3.2/terminfo/getwinsize.c'`"
  1153. test 768 -eq "$Wc_c" ||
  1154.     echo 'screen3.2/terminfo/getwinsize.c: original size 768, current size' "$Wc_c"
  1155. rm -f _shar_wnt_.tmp
  1156. fi
  1157. # ============= screen3.2/terminfo/screen-sco.src ==============
  1158. if test -f 'screen3.2/terminfo/screen-sco.src' -a X"$1" != X"-c"; then
  1159.     echo 'x - skipping screen3.2/terminfo/screen-sco.src (File already exists)'
  1160.     rm -f _shar_wnt_.tmp
  1161. else
  1162. > _shar_wnt_.tmp
  1163. echo 'x - extracting screen3.2/terminfo/screen-sco.src (Binary)'
  1164. sed 's/^X//' << 'SHAR_EOF' > _shar_tmp_.tmp &&
  1165. begin 600 screen3.2/terminfo/screen-sco.src
  1166. M1G)O;2!R;V]T)6UJ8G1N+E550U!`=75N970N554N3D54(%1U92!/8W0@,C(@
  1167. M,#,Z,#DZ,30@,3DY,0I296-E:79E9#H@9G)O;2!R96QA>3(N554N3D54(&)Y
  1168. M(&EM;60T+FEN9F]R;6%T:6LN=6YI+65R;&%N9V5N+F1E("!W:71H(%--5%`@
  1169. M*#4N-C0K+S<N,V$M1D%5*0H):60@04$Q,#`Q.#L@5'5E+"`R,B!/8W0@.3$@
  1170. M,#,Z,#DZ,#0@*S`Q,#`*4F5C96EV960Z(&9R;VT@=75N970N=74N;F5T("AV
  1171. M:6$@3$]#04Q(3U-4+E55+DY%5"D@8GD@<F5L87DR+E55+DY%5"!W:71H(%--
  1172. M5%`@"@DH-2XV,2]554Y%5"UI;G1E<FYE="UP<FEM87)Y*2!I9"!!03`Y-C0P
  1173. M.R!-;VXL(#(Q($]C="`Y,2`R,CHP.3HP-R`M,#0P,`I296-E:79E9#H@9G)O
  1174. M;2!M:F)T;BY554-0(&)Y('5U;F5T+G5U+FYE="!W:71H(%550U`O4DU!24P*
  1175. M"2AQ=65U96EN9RUR;6%I;"D@:60@,C(P.#,P+C$W,C`S.R!-;VXL(#(Q($]C
  1176. M="`Q.3DQ(#(R.C`X.C,P($5$5`I296-E:79E9#H@8GD@;6IB=&XN:F]B<V]F
  1177. M="YC;VT@*"]</3TO7"!3;6%I;#,N,2XR,2XQ*3L@36]N+"`R,2!/8W0@.3$@
  1178. M,C`Z-#D@0T14"DUE<W-A9V4M260Z(#QM,&M:0D9D+3`P,#=82$-`;6IB=&XN
  1179. M:F]B<V]F="YC;VT^"D9R;VTZ(')O;W1`;6IB=&XN:F]B<V]F="YC;VT@*$UA
  1180. M<FL@2BX@0F%I;&5Y(%M!1$U)3ETI"E-U8FIE8W0Z(%)E.B!O:"!Y97,*5&\Z
  1181. M(&IN=V5I9V5R)6EM;60T+FEN9F]R;6%T:6LN=6YI+65R;&%N9V5N+F1E)75U
  1182. M;F5T+E550U!`=75N970N554N3D54("A*=65R9V5N(%=E:6=E<G0I"D1A=&4Z
  1183. M($UO;BP@,C$@3V-T(#DQ(#(P.C0Y.C0Y($-$5`I);BU297!L>2U4;SH@/#DQ
  1184. M,3`R,3(Q-#@N04$P,3<S-T!F875I-#,N:6YF;W)M871I:RYU;FDM97)L86YG
  1185. M96XN9&4^.R!F<F]M(")*=65R9V5N(%=E:6=E<G0B(&%T($]C="`R,2P@.3$@
  1186. M,3`Z-#@@<&T*6"U-86EL97(Z($5,32!;=F5R<VEO;B`R+C,@4$PQ,5T*4W1A
  1187. M='5S.B!/4@H*2&DL"@I796QL+"!M;W)E('!L87EI;F<@86YD(&9I;F%L;'D@
  1188. M<V]M92!P<F]G<F5S<R$@(#HM*0H*5&AI<R!I<R!M>2`N<V-R965N<F,Z"@IT
  1189. M97)M:6YF;R!A;G-I($<P.FAS0#IA;3I,4$`Z3U`*"DYO=RP@22!A;2!N;W0@
  1190. M=V]R<FEE9"!A8F]U="!I=',@=&]T86P@86-C=7)R86-Y+"!B=70@22!J=7-T
  1191. M('=A;G1E9"!T;R!S:&]W"GEO=2!W:&%T($D@=')I960N("!)(&%L<V\@9FEX
  1192. M960@82!S8W)E96XM,C4@=&5R;6EN9F\@96YT<GDZ"@IS8W)E96XM,C5\5E0@
  1193. M,3`P+T%.4TD@6#,N-C0@=FER='5A;"!T97)M:6YA;"P*"6%M+"!M<V=R+"!X
  1194. M;VXL"@EC;VQS(S@P+"!I=",X+"!L:6YE<R,R-2P*"6)E;#U>1RP@8FQI;FL]
  1195. M7$5;-6TL(&)O;&0]7$5;,6TL(&-B=#U<15M:+`H)8VQE87(]7$5;2%Q%6THL
  1196. M(&-R/5QR+"!C<W(]7$5;)6DE<#$E9#LE<#(E9'(L"@EC=6(]7$5;)7`Q)61$
  1197. M+"!C=6(Q/5QB+"!C=60]7$5;)7`Q)61"+"!C=60Q/5QN+`H)8W5F/5Q%6R5P
  1198. M,25D0RP@8W5F,3U<15M#+"!C=7`]7$5;)6DE<#$E9#LE<#(E9$@L"@EC=74]
  1199. M7$5;)7`Q)61!+"!C=74Q/5Q%32P@9&P]7$5;)7`Q)61-+"!D;#$]7$5;32P*
  1200. M"65D/5Q%6THL(&5L/5Q%6TLL(&AO;64]7$5;2"P@:'0]7'0L(&AT<SU<14@L
  1201. M"@EI;#U<15LE<#$E9$PL(&EL,3U<15M,+"!I;F0]7&XL(&ES,CU<12DP+"!K
  1202. M8G,]7&(L"@EK8W5B,3U<14]$+"!K8W5D,3U<14]"+"!K8W5F,3U<14]#+"!K
  1203. M8W5U,3U<14]!+`H):V8Q/5Q%3U`L(&MF,CU<14]1+"!K9C,]7$5/4BP@:V8T
  1204. M/5Q%3U,L(&MH;VUE/5Q%/RP*"6QL/5Q%6S(U2"P@;F5L/5Q%12P@<F,]7$4X
  1205. M+"!R978]7$5;-VTL(')I/5Q%32P*"7)M:W@]7$4^+"!R;7-O/5Q%6S(S;2P@
  1206. M<FUU;#U<15LR-&TL(')S,CU<16,L('-C/5Q%-RP*"7-G<C`]7$5;;2P@<VUK
  1207. M>#U<13TL('-M<V\]7$5;,VTL('-M=6P]7$5;-&TL"@ET8F,]7$5;,V<L"@I!
  1208. M;F0@;F]T:6-E(&9O<B!30T\@56YI>"!T:&%T($D@861D960@)V%M)R!T;R!T
  1209. M:&4@96YT<GD@9F]R('-C<F5E;BTR-2X@($5V96X*=&AO=6=H('1H92!E>'1E
  1210. M<FYA;"`H;&]G:6X@<VAE;&PI('1Y<&4@)V%N<VDG('=A<R!M;V1I9FEE9"!W
  1211. M:71H('1H92`N<V-R965N<F,L"G=H96X@22!A9&1E9"`G86TG('1O('1H92!S
  1212. M8W)E96X@=VEN9&]W('1E<FT@<V-R965N+3(U+"!I="!F=6YC=&EO;F5D(&9L
  1213. M87=L97-S;'D*86YD($D@86T@;F]T('-U<F4@=VAY+B`@06YY=V%Y+"!V:2!A
  1214. M;F0@86QL('1H92!O=&AE<G,@<V5E;2!T;R!W;W)K(&=R96%T(`IN;W<N("!.
  1215. M97AT+"!)(&YE960@=&\@=V]R:R!O;B!T:&4@1S`@+3X@0S`@9W)A<&AI8W,@
  1216. M8VAA<F%C=&5R(&UA<'!I;F=S+B`@22`*9&]N)W0@9G5L;'D@=6YD97)S=&%N
  1217. M9"!T:&%T('EE="X@($%N>7=A>2P@=&AI<R!S:&]U;&0@8F4@;V8@:&5L<"!T
  1218. M;R!O=&AE<G,*=6YD97(@4T-/+B`@0E17+"!T:&%T(&-O<'D@;V8@=&AE(&UE
  1219. M<W-A9V4@>6]U(&=O="!F<F]M(&UE('1H870@22!S96YT('1O"E)O;F%L9"!+
  1220. M:&]O("TM($D@87!P;&EE9"!30T\@4TQ3('!A=&-H('AN>#$T,2`H9F]R('AE
  1221. M;FEX*2!T;R!F:7@@=&AE(&)U9R`*:6X@<V5L96-T*"D@=VAE;B!D96%L:6YG
  1222. M('=I=&@@<&EP97,L(&%N9"!I="!S;VQV960@;7D@<')O8FQE;7,@;VX@>&5N
  1223. M:7@N"@I-87)K+@H*+2T@"DUA<FL@2BX@0F%I;&5Y+"!.-%A(6"`@("`@("`@
  1224. M("`@("`@("`@("`@("`@("`@("`@(%]?7U]?7U\O/3T]/5@Q,3T]/3U<7U]?
  1225. M7U]?7PI54TU!24PZ(#4Q,2!-96UO<FEA;"!";'9D+BP@375R9G)E97-B;W)O
  1226. M+"!43B`S-S$R.2!\("`@("`@("`@2F]B4V]F="`@("`@("`@('P*5D])0T4Z
  1227. M("`K,2`V,34@.#DS(#`P.3@@("`@("`@("`@("`@("`@("`@("`@("`@("`@
  1228. M?"!$97-I9VX@)B!$979E;&]P;65N="!#;RY\"E550U`Z("`@+BXN(75U;F5T
  1229. M(6UJ8G1N(6UJ8BP@+BXN(7)A:61E<B%M:F)T;B%M:F(@('P@($UU<F9R965S
  1230. M8F]R;RP@5$X@(%5302`@?`I$3TU!24XZ(&UJ8D!M:F)T;BY*3T)33T94+D-/
  1231. M32`@("`@($-)4SH@-S8S,30L,38P("`M+2TM+2TM+2TM+2TM+2TM+2TM+2TM
  1232. M+2TM+2T*/$M!.5$M54Y)6"U54T524R!-86EL:6YG($QI<W0M4W5B<V-R:6)E
  1233. I.B!K83EQ+75N:7@M<F5Q=65S='-`;6IB=&XN:F]B<V]F="YC;VT^"@IR
  1234. `
  1235. end
  1236. SHAR_EOF
  1237. echo 'uudecoding file screen3.2/terminfo/screen-sco.src' &&
  1238. uudecode < _shar_tmp_.tmp && rm -f _shar_tmp_.tmp &&
  1239. chmod 0600 screen3.2/terminfo/screen-sco.src ||
  1240. echo 'restore of screen3.2/terminfo/screen-sco.src failed'
  1241. Wc_c="`wc -c < 'screen3.2/terminfo/screen-sco.src'`"
  1242. test 3056 -eq "$Wc_c" ||
  1243.     echo 'screen3.2/terminfo/screen-sco.src: original size 3056, current size' "$Wc_c"
  1244. rm -f _shar_wnt_.tmp
  1245. fi
  1246. # ============= screen3.2/terminfo/test.txt ==============
  1247. if test -f 'screen3.2/terminfo/test.txt' -a X"$1" != X"-c"; then
  1248.     echo 'x - skipping screen3.2/terminfo/test.txt (File already exists)'
  1249.     rm -f _shar_wnt_.tmp
  1250. else
  1251. > _shar_wnt_.tmp
  1252. echo 'x - extracting screen3.2/terminfo/test.txt (Binary)'
  1253. sed 's/^X//' << 'SHAR_EOF' > _shar_tmp_.tmp &&
  1254. begin 600 screen3.2/terminfo/test.txt
  1255. M"@P;/!M;2!M;2ALH01LI,!M;/S1H&UL_-6P;6VT*(`H@"B`*(`H@"B`*(`H@
  1256. M"B`*("`@(`YL<7%Q<7%Q<7%Q=W=W<7%Q<7%Q<7%Q:R`@("`@("`@("`@("`@
  1257. M("!S<W-S<W-S<W-S<W-S<W-S<W-S<W-S<W-S<W-S<PH@("`@>`\;6S%M365R
  1258. M<GD@0VAR#AM;;7@;6S%M>!M;;7@/&ULQ;6UA<R`J($UE<@X;6VUX("`@("`@
  1259. M("`@("`@("`@(%P@("`@("`@("`@("`@("`@("`@("`@("`@("`O"B`@("!X
  1260. M#W)Y($-H<FES=`YX&ULQ;7@;6VUX#R`J($UE<G)Y(`YX("`@("`@("`@("`@
  1261. M("`@("!P<B`@("`@("`@("`@("`@("`@("`@("`@<G`*("`@('@/&ULQ;4-H
  1262. M<FES=&UA<PX;6VUX&ULQ;7@;6VUX#QM;,6U-97)R>2!#:'(.&UMM>"`@("`@
  1263. M("`@("`@("`@("`@("!O<7)S("`@("`@("`@("`@("`@<W)Q;PH@("`@>`]I
  1264. M<W1M87,@*B`.>!M;,6UX&UMM>`]R>2!#:')I<W0.>"`@("`@("`@("`@("`@
  1265. M("`@("`@("`@;V]P<'%Q=W%W<7%P<&]O"B`@("!T<7%Q<7%Q<7%Q:AM;,6UX
  1266. M&UMM;7%Q<7%Q<7%Q<74@("`@("`@("`@("`@("`@("`@("`@("`@("`@('@@
  1267. M>`H@("`@=!M;,6UQ<7%Q<7%Q<7%Q8'%Q<7%Q<7%Q<7$;6VUU("`@("`@("`@
  1268. M("`@("`@("`@("`@("`@("`@("!X('@*("`@('1Q<7%Q<7%Q<7%K&ULQ;7@;
  1269. M6VUL<7%Q<7%Q<7%Q=2`@("`@("`@("`@("`@("`@("`@("`@("`@("`@>"!X
  1270. M"B`@("!X#W)Y($-H<FES=`YX&ULQ;7@;6VUX#R`J($UE<G)Y(`YX("`@("`@
  1271. M("`@("`@("`@("`@("`@("`@("`@("!X('@*("`@('@/&ULQ;4-H<FES=&UA
  1272. M<PX;6VUX&ULQ;7@;6VUX#QM;,6U-97)R>2!#:'(.&UMM>"`@("`@("`@("`@
  1273. M("`@("`@("`@("`@("`@("`@>"!X"B`@("!X#VES=&UA<R`J(`YX&ULQ;7@;
  1274. M6VUX#W)Y($-H<FES=`YX("`@("`@("`@("`@("`@("`@("`@("`@("`@("!X
  1275. M('@*("`@('@/&ULQ;6UA<R`J($UE<@X;6VUX&ULQ;7@;6VUX#QM;,6U#:')I
  1276. M<W1M87,.&UMM>"`@("`@("`@("`@("`@("`@("`@("`@("!S<G%Q:B!M<7%R
  1277. M<PH@("`@;7%Q<7%Q<7%Q<79V=G%Q<7%Q<7%Q<6H@("`@("`@("`@("`@("`@
  1278. M("`@(!M;-&T@<G%P;R`@("`@("`@("`@;W!Q<B`;6VT;6S$[,3!R"AM;-3LW
  1279. M.4AL&ULX.S<Y2&T;6S8[-SE(>!M;-SLW.4AX"AM;-3LW.$AL<1M;.#LW.$AM
  1280. M<1M;-CLW.$AX(!M;-SLW.$AX(`H;6S4[-S=(;'%W&ULX.S<W2&UQ=AM;-CLW
  1281. M-TAX('@;6S<[-S=(>"!X"AM;-3LW-DAL<7=Q&ULX.S<V2&UQ=G$;6S8[-S9(
  1282. M>"!X(!M;-SLW-DAX('@@"AM;-3LW-4AL<7=Q&ULX.S<U2&UQ=G$;6S8[-S5(
  1283. M>"!X(!M;-SLW-4AX('@@"AM;-3LW-$AL<7=Q&ULX.S<T2&UQ=G$;6S8[-S1(
  1284. M>"!X(!M;-SLW-$AX('@@"AM;-3LW,TAL<7=Q&ULX.S<S2&UQ=G$;6S8[-S-(
  1285. M>"!X(!M;-SLW,TAX('@@"AM;-3LW,DAL<7=Q&ULX.S<R2&UQ=G$;6S8[-S)(
  1286. M>"!X(!M;-SLW,DAX('@@"AM;-3LW,4AL<7=Q&ULX.S<Q2&UQ=G$;6S8[-S%(
  1287. M>"!X(!M;-SLW,4AX('@@"AM;-3LW,$AL<7=Q&ULX.S<P2&UQ=G$;6S8[-S!(
  1288. M>"!X(!M;-SLW,$AX('@@"AM;.#LV.4@O&ULW.S8Y2"\*&ULY.S8Y2"\;6S@[
  1289. M-CA(+R`*&ULQ,#LV.4@O&ULY.S8X2!M;,6TO&UMM(!M;.#LV.$@@+QM;-SLV
  1290. M.4@@&ULV.S8Y2"\*&ULQ,3LV.4@;6S$[-&TO&UMM&ULQ,#LV.$@O(!M;.3LV
  1291. M.$@@&ULQ;2\;6VT;6S@[-CA(("\;6S<[-CA(&ULQ;2\;6VTO"AM;,3([-CE(
  1292. M&ULQ;2\;6VT;6S$Q.S8X2!M;,3LT;2\@&UMM&ULQ,#LV.$@@+QM;.3LV.4@;
  1293. M6S%M+QM;;1M;.#LV.$@O&ULW.S8X2!M;,6TO&UMM(`H;6S$S.S8Y2"\;6S$R
  1294. M.S8X2"\@&ULQ,3LV.$@;6S1M("\;6VT;6S$P.S8Y2!M;,6TO&UMM&ULY.S8X
  1295. M2!M;,6TO&UMM+QM;-SLV.$@@+QM;-CLV.4@;6S%M+QM;;0H;6S$S.S8X2!M;
  1296. M,6TO&UMM(!M;,3([-CA((!M;,6TO&UMM&ULQ,#LV.$@O+QM;.3LV.$@O&ULX
  1297. M.S8X2"`;6S<[-CA(&ULQ;2\;6VT@&ULV.S8Y2"\*&ULQ,SLV.$@@+QM;,3$[
  1298. M-CA(&ULT;2\;6VT;6SD[-CA((!M;.#LV.$@O(!M;-SLV.$@O+QM;-CLV.4@@
  1299. M"AM;,3,[-CA(+QM;,3([-CA(&ULQ;2\;6VT;6S$P.S8X2"`;6SD[-CA(&ULQ
  1300. M;2\;6VT@(!M;.#LV.$@O&ULQ;2\;6VT;6S<[-CA((!M;-CLV.4@;6S%M+QM;
  1301. M;0H;6S$S.S8X2!M;,6TO&UMM&ULQ,CLV.$@O&ULQ,3LV.$AS&ULQ,#LV.$@;
  1302. M6S%M+QM;;2`;6SD[-CA(+R\;6S@[-CE((!M;-CLV.4@@"AM;,30[-3-(<W-S
  1303. M<W-S<W-S<W,*&ULQ,SLV.$@O&ULQ,CLV.$@@&ULQ,3LV.$@;6S$[-&TO(!M;
  1304. M;1M;,3`[-CA(+R\;6SD[-CE((!M;.#LV.$@@&ULQ;2\;6VT;6S<[-CA(+R`;
  1305. M6S8[-CE(&ULQ;2\;6VT*&ULQ-#LU,DAS&ULQ-#LV-$AS"AM;,3,[-CA((!M;
  1306. M,3([-CA(+R`;6S$Q.S8X2!M;-&TO&ULQ;2\;6VT;6S$P.S8Y2"`;6SD[-CA(
  1307. M("\;6S@[-CA(+R`;6S<[-CA((!M;,6TO&UMM&ULV.S8Y2"\*&ULQ-#LU,TAR
  1308. M<G)R<G)R<G)R<@H;6S$S.S8X2!M;,6TO&UMM(!M;,3([-CE(+QM;,3$[-CE(
  1309. M<QM;,3`[-CA((!M;,6TO&UMM&ULY.S8X2!M;,6TO&UMM(!M;.#LV.$@@+QM;
  1310. M-SLV.4@O"AM;,30[-31(<7%Q<7%Q<7%Q"AM;,3,[-CA(+QM;,6TO&UMM&ULQ
  1311. M,CLV.4@@&ULQ,3LV.$@;6S1M("\;6VT;6S$P.S8X2"\@&ULY.S8X2"`O&ULW
  1312. M.S8X2!M;,6TO&UMM"AM;,30[-3)(<W)Q<7%Q<7%Q<7%R<PH;6S$S.S8Y2"`;
  1313. M6S$R.S8X2"`;6S%M+QM;;1M;,3$[-CA(&ULT;2\@&UMM&ULQ,#LV.$@@&ULQ
  1314. M;2\;6VT;6S@[-CA(&ULQ;2\;6VT;6S<[-CA(+PH;6S$T.S4Q2'-R&ULQ-#LV
  1315. M-$AR<PH;6S$S.S8Y2"\;6S$R.S8X2"\@&ULQ,3LV.$@;6S1M("\;6VT;6S$P
  1316. M.S8Y2!M;,6TO&UMM&ULY.S8X2!M;,6TO&UMM+QM;-SLV.$@@+QM;-CLV.4@;
  1317. M6S%M+QM;;0H;6S$T.S4Q2')R<7$;6S$T.S8R2'%Q<G(*&ULQ,SLV.$@;6S%M
  1318. M+QM;;2`;6S$R.S8X2"`;6S%M+QM;;1M;,3`[-CA(+R\;6SD[-CA(+QM;.#LV
  1319. M.$@@&ULW.S8X2!M;,6TO&UMM(!M;-CLV.4@O"AM;,30[-35(<'!P<'!P<`H;
  1320. M6S$S.S8X2"`O&ULQ,3LV.$@;6S1M+QM;;1M;.3LV.$@@&ULX.S8X2"\@&ULW
  1321. M.S8X2"\O&ULV.S8Y2"`*&ULQ-#LU,4AR<G$;6S$T.S8S2'%R<@H;6S$S.S8X
  1322. M2"\;6S$R.S8X2!M;,6TO&UMM&ULQ,#LV.$@@&ULY.S8X2!M;,6TO&UMM("`;
  1323. M6S@[-CA(+QM;,6TO&UMM&ULW.S8X2"`;6S8[-CE(&ULQ;2\;6VT*&ULQ-#LU
  1324. M,4AR<7!P&ULQ-#LV,DAP<'%R"AM;,3,[-CA(&ULQ;2\;6VT;6S$R.S8X2"\;
  1325. M6S$Q.S8X2',;6S$P.S8X2!M;,6TO&UMM(!M;.3LV.$@O+QM;.#LV.4@@&ULV
  1326. M.S8Y2"`*(`H;6S$T.S4P2!M;-&UR&UMM<7!P<&]O;V]O;V]P<'!Q&ULT;7(;
  1327. M6VT*&ULQ,SLV.$@O&ULQ,CLV.$@@&ULQ,3LV.$@;6S$[-&TO(!M;;1M;,3`[
  1328. M-CA(+R\;6SD[-CE((!M;.#LV.$@@&ULQ;2\;6VT;6S<[-CA(+R`;6S8[-CE(
  1329. M&ULQ;2\;6VT*&ULQ-#LU,$@;6S1M<1M;;7!P;V]O;V]O;V]O;V]P<!M;-&UQ
  1330. M&UMM"AM;,3,[-CA((!M;,3([-CA(+R`;6S$Q.S8X2!M;-&TO&ULQ;2\;6VT;
  1331. M6S$P.S8Y2"`;6SD[-CA(("\;6S@[-CA(+R`;6S<[-CA((!M;,6TO&UMM&ULV
  1332. M.S8Y2"\*(`H@"B`*&ULQ,SLU-4AS<W-S<W-S&ULQ-#LU,DAO;V\@("`@("`@
  1333. M;V]O&ULQ-#LU-T@N(`]O#B!F"B`*&ULQ,SLV.$@;6S%M+QM;;2`;6S$R.S8Y
  1334. M2"\;6S$Q.S8Y2',;6S$P.S8X2"`;6S%M+QM;;1M;.3LV.$@;6S%M+QM;;2`;
  1335. M6S@[-CA(("\;6S<[-CE(+QM;,30[-39(+F8@("`@"B`*&ULQ,SLU,TAS<QM;
  1336. M,3,[-C)(<W,;6S$T.S4S2"`@+F8@("`@("`@"B`*&ULQ,SLV.$@O&ULQ;2\;
  1337. M6VT;6S$R.S8Y2"`;6S$Q.S8X2!M;-&T@+QM;;1M;,3`[-CA(+R`;6SD[-CA(
  1338. M("\;6S<[-CA(&ULQ;2\;6VT;6S$T.S4S2"`@("`@("!F"B`*&ULQ,SLT.$AS
  1339. M<W-S<G)R<G%Q<7%Q<G)R<G-S<W,;6S$T.S4P2',@("`@("`@("`@("`@("!S
  1340. M"B`*&ULQ,SLV.4@@&ULQ,CLV.$@@&ULQ;2\;6VT;6S$Q.S8X2!M;-&TO(!M;
  1341. M;1M;,3`[-CA((!M;,6TO&UMM&ULX.S8X2!M;,6TO&UMM&ULW.S8X2"\;6S$T
  1342. M.S4Q2"X@("`@+B`@("`@("X*(`H;6S$S.S0W2'-S<W)R<G)Q<7%Q<7%Q<7%R
  1343. M<G)R<W-S&ULQ-#LU,4AF("`@(&8@("X@("!F"B`*&ULQ,SLV.4@;6S1M+QM;
  1344. M;1M;,3([-CA(+R`;6S$Q.S8X2!M;-&T@+QM;;1M;,3`[-CE(&ULQ;2\;6VT;
  1345. M6SD[-CA(&ULQ;2\;6VTO&ULW.S8X2"`O&ULV.S8Y2!M;,30[-3%(("`@("`@
  1346. M("!F("X@(`H@"AM;,3,[-#=(<G)R<7%Q<7!P<'!P<'!P<'%Q<7%R<W,;6S$T
  1347. M.S4R2"X@("`@+B`/;PX@9@H@"AM;,3,[-CA(&ULQ.S1M+QM;;2`;6S$R.S8X
  1348. M2"`;6S%M+QM;;1M;,3`[-CA(+R\;6SD[-CA(+QM;.#LV.$@@&ULW.S8X2!M;
  1349. M,6TO&UMM(!M;-CLV.4@O&ULQ-#LU,DAF("`@+F8@("`@"B`*&ULQ,SLT-TAQ
  1350. M<7%P<'!P;V]O;V]O;V]O<'!P<7)S<QM;,30[-3)(("`@+F8@("`@("`@+@H@
  1351. M"AM;,3,[-CA(<R\;6S$Q.S8X2!M;-&TO&UMM&ULY.S8X2"`;6S@[-CA(+R`;
  1352. M6S<[-CA(+R\;6S8[-CE((!M;,30[-35(9B`@("`@("`@9@H@"AM;,3([-31(
  1353. M<W-S<W-S<W-S&ULQ,SLT-TAQ<'!O;V]O("`@("`@("`@;V]P<7)S<QM;,3,[
  1354. M-31(+@]O#B`@("`@("X;6S$T.S4U2"`@("`@("`@("`*(`H;6S$S.S8X2!M;
  1355. M-&TO&UMM&ULQ,CLV.$@;6S%M+QM;;1M;,3`[-CA((!M;.3LV.$@;6S%M+QM;
  1356. M;2`@&ULX.S8X2"\;6S%M+QM;;1M;-SLV.$@@&ULV.S8Y2!M;,6TO&UMM&ULQ
  1357. M,SLU-$AF("`@("`@(&8;6S$T.S4Q2"X@("`@+B`@("`*(`H;6S$R.S4R2'-S
  1358. M<G)R<G)R<G)R<QM;,3,[-#=(<7!O;V\@("`@("`@("`@("!O<'%R<W,;6S$S
  1359. M.S4S2&8@&ULQ-#LU,4AF("`@(&8@("X@("!F"B`*&ULQ,SLV.$@;6S$[-&TO
  1360. M&UMM&ULQ,CLV.$@O&ULQ,3LV.$AS&ULQ,#LV.$@;6S%M+QM;;2`;6SD[-CA(
  1361. M+R\;6S@[-CE((!M;,3,[-3-(9B`@#V\@("`@("!O#AM;,30[-3%(("`@("`@
  1362. M("!F("X@(`H@"AM;,3([-#9(<W-S<W-S<G(;6S$R.S8S2')R<W-S<W-S&ULQ
  1363. M,SLT-T@@("`@(!M;,3,[-C1(("`@("`@&ULV.S8Y2"`;6S$S.S0W2&8@("`@
  1364. M(`]O("`@("`@("`@("!O#B`@+AM;,30[-3)(+B`@("`N(`]O#B!F"B`*&ULQ
  1365. M,CLV.$AS&ULQ,3LV.$@;6S1M+R`;6VT;6S$P.S8X2"\O&ULY.S8Y2"`;6S@[
  1366. M-CA((!M;,6TO&UMM&ULW.S8Y2"`;6S$S.S0W2"`@+B`@("`@("`@(`]O(&\.
  1367. M("`@("`@9AM;,30[-3)(9B`@("YF("`@(`H@"AM;,3([-#5(<W)R<G)R<G%Q
  1368. M<7%Q<7%Q<7%Q<7%Q<G)S<W)Q&ULQ,SLT.4AF("`/;R`@("!O#B`@("`@+B`@
  1369. M("`@&ULQ-#LU,D@@("`N9B`@("`@("`N"B`*&ULQ,CLV.$@;6S1M+R`;6S$Q
  1370. M.S8X2"\;6S%M+QM;;1M;,3`[-CE((!M;.3LV.$@@+QM;.#LV.4@@(&UQ=G%Q
  1371. M<7%Q<1M;-3LW,$@@;'%W<7%Q<7%Q&ULW.S<P2"!X('@;6S8[-S!(('@@>!M;
  1372. M,3,[-#E(("X@("`@(`]O#B`@("`@(&8;"B`*&ULQ,CLT-4AR<7%Q<7%Q<'!P
  1373. M<'!P<'!P<'!P<'!Q&ULX.S<Q2"!M<79Q<7%Q<1M;-3LW,4@@;'%W<7%Q<7$;
  1374. M6S<[-S%(('@@>!M;-CLW,4@@>"!X&ULQ,SLU,$AF("`@+@]O("`@("`@+B!O
  1375. M#AM;,30[-35(("`@("`@("`@(`H@"AM;,3([-CE(&ULT;2\;6VT;6S$Q.S8Y
  1376. M2',;6S$P.S8X2"`;6S%M+QM;;1M;.3LV.4@@&ULX.S<R2"!M<79Q<7%Q&ULU
  1377. M.S<R2"!L<7=Q<7%Q&ULW.S<R2"!X('@;6S8[-S)(('@@>!M;,3,[-3!(("`@
  1378. M(&8@("`@("`@9B`@&ULQ-#LU,0H@"AM;,3([-#5(<7!P<'!P<&]O;V]O;V]O
  1379. M;V]O;V]O&ULX.S<S2"!M<79Q<7$;6S4[-S-((&QQ=W%Q<1M;-SLW,T@@>"!X
  1380. M&ULV.S<S2"!X('@;6S$S.S4S2&8@&ULQ,SLV,D@@("`N&ULQ-#LU,4AF("`@
  1381. M(&8@("X@("!F"B`*&ULQ,CLV.4AS&ULQ,3LV.$@;6S1M("\;6VT;6S$P.S8Y
  1382. M2"`;6S@[-S1((&UQ=G%Q&ULU.S<T2"!L<7=Q<1M;-SLW-$@@>"!X&ULV.S<T
  1383. M2"!X('@;6S$S.S0W2"X@("`/;PX@9B`@#V\@("`@("!O#B!F&ULQ-#LU,4@@
  1384. M("`@("`@(&8@"B`*&ULQ,CLT-4AP;V]O;V]O("`@("`@("`@("`@(!M;.#LW
  1385. M-4@@;7%V<1M;-3LW-4@@;'%W<1M;-SLW-4@@>"!X&ULV.S<U2"!X('@;6S$R
  1386. M.S0Y2"`@#V\@("`@;R`@("`@(&\.&ULQ,SLT-TAF("`@("`/;R`@("`@("`@
  1387. M("`@;PX@("X;"B`*&ULQ,3LT-$@;6S1M<G)R<G)R<G)R<G)R<G)R<G)R<G)R
  1388. M<G)R<G)R<G(;6VT;6S$R.S0U2"`@("`@("`;6S$R.S8T2"`@("`@("`@&ULX
  1389. M.S<V2"!M<78;6S4[-S9((&QQ=QM;-SLW-D@@>"!X&ULV.S<V2"!X('@;6S$R
  1390. M.S0W2`]O("`@"AM;.#LW-T@@;7$;6S4[-S=((&QQ&ULW.S<W2"!X(!M;-CLW
  1391. M-T@@>"`;6S$R.S0W2"`@("`@("`N("`@(`]O(&\@("`@("!O#AM;,3,[-#E(
  1392. M9B`@#V\@("`@;PX@("`@("X@("`@(!M;,30[-3)(("`@+F8@("`@("`@+@H;
  1393. M6S@[-SA((&T;6S4[-SA((&P;6S<[-SA(('@;6S8[-SA(('@;6S$R.S0U2"X@
  1394. M("`/;R`@;PX@9B`@#V\.("`@("`@("`N("`@+AM;,3,[-#E(("X@("`@(`]O
  1395. M#B`@("`@(&8;6S$T.S4U2&8@("`@("`@(&8*&ULX.S<Y2"`;6S4[-SE((!M;
  1396. M-SLW.4@@&ULV.S<Y2"`;6S$R.S0U2&8@("`@("`@("`@#V\@("`@("!O#B`@
  1397. M9B`N(&8;6S$S.S4P2&8@("`N#V\@("`@("`N(&\.&ULQ-#LU-4@@("`@("`@
  1398. M("`@"@\;6S$[-VT;6S4[,C5(&R,S($-H965R<R$@"AM;-CLR-4@;(S0@0VAE
  1399. M97)S(2`;6VT*(`H;6S$R.S0U2"`@+B`@#V\@("`@;R`@("`N("`@;PX@("!F
  1400. M("`;6S$S.S4P2"`@("!F("`@("`@(&8@(!M;,30[-3%(+B`@("`N("`@("`@
  1401. M+@H;6S$R.S0W2&8@+B`@("`/;PX@("X@(&8@#V\.("`@("!F&ULQ,SLU,TAF
  1402. M(!M;,3,[-C)(("`@+AM;,30[-3%(9B`@("!F("`N("`@9@H;6S$R.S0W2"`@
  1403. M9B`@("`@("!F("!F("`@("`@("`;6S$S.S0W2"X@("`/;PX@9B`@#V\@("`@
  1404. M("!O#B!F&ULQ-#LU,4@@("`@("`@(&8@+B`@"AM;,3([-#E(("`/;R`@("!O
  1405. M("`@("`@;PX;6S$S.S0W2&8@("`@(`]O("`@("`@("`@("!O#B`@+AM;,30[
  1406. M-3)(+B`@("`N(`]O#B!F"AM;,3([-#=(#V\@("`@(&\@("`@("`@("`@(&\;
  1407. M6S$S.S0W2"`@+B`@("`@("`@(&\@;PX@("`@("!F&ULQ-#LU,DAF("`@+F8@
  1408. M("`@"AM;,3([-#=(("`@("`@("X@("`@#V\@;R`@("`@(&\.&ULQ,SLT.4AF
  1409. M("`/;R`@("!O#B`@("`@+B`@("`@&ULQ-#LU,D@@("`N9B`@("`@("`N"AM;
  1410. M,3([-#5(+B`@(`]O("!O#B!F("`/;PX@("`@("`@("X@("`N&ULQ,SLT.4@@
  1411. M+B`@("`@#V\.("`@("`@9AM;,30[-35(9B`@("`@("`@9@H;6S$R.S0U2&8@
  1412. M("`@("`@("`@#V\@("`@("!O#B`@9B`N(&8;6S$S.S4P2&8@("`N#V\@("`@
  1413. M("`N(&\.&ULQ-#LU-4@@("`@("`@("`@"B`*&ULQ,CLT-4@@("X@(`]O("`@
  1414. M(&\@("`@+B`@(&\.("`@9B`@&ULQ,SLU,$@@("`@9B`@("`@("!F("`;6S$T
  1415. M.S4Q2"X@("`@+B`@("`@("X*&ULQ,CLT-TAF("X@("`@#V\.("`N("!F(`]O
  1416. M#B`@("`@9AM;,3,[-3-(9B`;6S$S.S8R2"`@("X;6S$T.S4Q2&8@("`@9B`@
  1417. M+B`@(&8*&ULQ,CLT-T@@(&8@("`@("`@9B`@9B`@("`@("`@&ULQ,SLT-T@N
  1418. M("`@#V\.(&8@(`]O("`@("`@;PX@9AM;,30[-3%(("`@("`@("!F("X@(`H;
  1419. M6S$R.S0Y2"`@#V\@("`@;R`@("`@(&\.&ULQ,SLT-TAF("`@("`/;R`@("`@
  1420. M("`@("`@;PX@("X;6S$T.S4R2"X@("`@+B`/;PX@9@H;6S$R.S0W2`]O("`@
  1421. M("!O("`@("`@("`@("!O&ULQ,SLT-T@@("X@("`@("`@("!O(&\.("`@("`@
  1422. M9AM;,30[-3)(9B`@("YF("`@(`H;6S$R.S0W2"`@("`@("`N("`@(`]O(&\@
  1423. M("`@("!O#AM;,3,[-#E(9B`@#V\@("`@;PX@("`@("X@("`@(!M;,30[-3)(
  1424. M("`@+F8@("`@("`@+@H;6S$R.S0U2"X@("`/;R`@;PX@9B`@#V\.("`@("`@
  1425. M("`N("`@+AM;,3,[-#E(("X@("`@(`]O#B`@("`@(&8;6S$T.S4U2&8@("`@
  1426. M("`@(&8*&ULQ,CLT-4AF("`@("`@("`@(`]O("`@("`@;PX@(&8@+B!F&ULQ
  1427. M,SLU,$AF("`@+@]O("`@("`@+B!O#AM;,30[-35(("`@("`@("`@(`H@"AM;
  1428. M,3([-#5(("`N("`/;R`@("!O("`@("X@("!O#B`@(&8@(!M;,3,[-3!(("`@
  1429. M(&8@("`@("`@9B`@&ULQ-#LU,4@N("`@("X@("`@("`N"AM;,3([-#=(9B`N
  1430. M("`@(`]O#B`@+B`@9B`/;PX@("`@(&8;6S$S.S4S2&8@&ULQ,SLV,D@@("`N
  1431. M&ULQ-#LU,4AF("`@(&8@("X@("!F"AM;,3([-#=(("!F("`@("`@(&8@(&8@
  1432. M("`@("`@(!M;,3,[-#=(+B`@(`]O#B!F("`/;R`@("`@(&\.(&8;6S$T.S4Q
  1433. M2"`@("`@("`@9B`N("`*&ULQ,CLT.4@@(`]O("`@(&\@("`@("!O#AM;,3,[
  1434. M-#=(9B`@("`@#V\@("`@("`@("`@(&\.("`N&ULQ-#LU,D@N("`@("X@#V\.
  1435. M(&8*&ULQ,CLT-T@/;R`@("`@;R`@("`@("`@("`@;QM;,3,[-#=(("`N("`@
  1436. M("`@("`@;R!O#B`@("`@(&8;6S$T.S4R2&8@("`N9B`@("`*&ULQ,CLT-T@@
  1437. M("`@("`@+B`@("`/;R!O("`@("`@;PX;6S$S.S0Y2&8@(`]O("`@(&\.("`@
  1438. M("`N("`@("`;6S$T.S4R2"`@("YF("`@("`@("X*&ULQ,CLT-4@N("`@#V\@
  1439. M(&\.(&8@(`]O#B`@("`@("`@+B`@("X;6S$S.S0Y2"`N("`@("`/;PX@("`@
  1440. M("!F&ULQ-#LU-4AF("`@("`@("!F"AM;,3([-#5(9B`@("`@("`@("`/;R`@
  1441. M("`@(&\.("!F("X@9AM;,3,[-3!(9B`@("X/;R`@("`@("X@;PX;6S$T.S4U
  1442. M2"`@("`@("`@("`*(`H;6S$R.S0U2"`@+B`@#V\@("`@;R`@("`N("`@;PX@
  1443. M("!F("`;6S$S.S4P2"`@("!F("`@("`@(&8@(!M;,30[-3%(+B`@("`N("`@
  1444. M("`@+@H;6S$R.S0W2&8@+B`@("`/;PX@("X@(&8@#V\.("`@("!F&ULQ,SLU
  1445. M,TAF(!M;,3,[-C)(("`@+AM;,30[-3%(9B`@("!F("`N("`@9@H;6S$R.S0W
  1446. M2"`@9B`@("`@("!F("!F("`@("`@("`;6S$S.S0W2"X@("`/;PX@9B`@#V\@
  1447. M("`@("!O#B!F&ULQ-#LU,4@@("`@("`@(&8@+B`@"AM;,3([-#E(("`/;R`@
  1448. M("!O("`@("`@;PX;6S$S.S0W2&8@("`@(`]O("`@("`@("`@("!O#B`@+AM;
  1449. M,30[-3)(+B`@("`N(`]O#B!F"AM;,3([-#=(#V\@("`@(&\@("`@("`@("`@
  1450. M(&\;6S$S.S0W2"`@+B`@("`@("`@(&\@;PX@("`@("!F&ULQ-#LU,DAF("`@
  1451. M+F8@("`@"AM;,3([-#=(("`@("`@("X@("`@#V\@;R`@("`@(&\.&ULQ,SLT
  1452. M.4AF("`/;R`@("!O#B`@("`@+B`@("`@&ULQ-#LU,D@@("`N9B`@("`@("`N
  1453. M"AM;,3([-#5(+B`@(`]O("!O#B!F("`/;PX@("`@("`@("X@("`N&ULQ,SLT
  1454. M.4@@+B`@("`@#V\.("`@("`@9AM;,30[-35(9B`@("`@("`@9@H;6S$R.S0U
  1455. M2&8@("`@("`@("`@#V\@("`@("!O#B`@9B`N(&8;6S$S.S4P2&8@("`N#V\@
  1456. M("`@("`N(&\.&ULQ-#LU-4@@("`@("`@("`@"B`*&ULQ,CLT-4@@("X@(`]O
  1457. M("`@(&\@("`@+B`@(&\.("`@9B`@&ULQ,SLU,$@@("`@9B`@("`@("!F("`;
  1458. M6S$T.S4Q2"X@("`@+B`@("`@("X*&ULQ,CLT-TAF("X@("`@#V\.("`N("!F
  1459. M(`]O#B`@("`@9AM;,3,[-3-(9B`;6S$S.S8R2"`@("X;6S$T.S4Q2&8@("`@
  1460. M9B`@+B`@(&8*&ULQ,CLT-T@@(&8@("`@("`@9B`@9B`@("`@("`@&ULQ,SLT
  1461. M-T@N("`@#V\.(&8@(`]O("`@("`@;PX@9AM;,30[-3%(("`@("`@("!F("X@
  1462. M(`H;6S$R.S0Y2"`@#V\@("`@;R`@("`@(&\.&ULQ,SLT-TAF("`@("`/;R`@
  1463. M("`@("`@("`@;PX@("X;6S$T.S4R2"X@("`@+B`/;PX@9@H;6S$R.S0W2`]O
  1464. M("`@("!O("`@("`@("`@("!O&ULQ,SLT-T@@("X@("`@("`@("!O(&\.("`@
  1465. M("`@9AM;,30[-3)(9B`@("YF("`@(`H;6S$R.S0W2"`@("`@("`N("`@(`]O
  1466. M(&\@("`@("!O#AM;,3,[-#E(9B`@#V\@("`@;PX@("`@("X@("`@(!M;,30[
  1467. M-3)(("`@+F8@("`@("`@+@H;6S$R.S0U2"X@("`/;R`@;PX@9B`@#V\.("`@
  1468. M("`@("`N("`@+AM;,3,[-#E(("X@("`@(`]O#B`@("`@(&8;6S$T.S4U2&8@
  1469. M("`@("`@(&8*&ULQ,CLT-4AF("`@("`@("`@(`]O("`@("`@;PX@(&8@+B!F
  1470. M&ULQ,SLU,$AF("`@+@]O("`@("`@+B!O#AM;,30[-35(("`@("`@("`@(`H@
  1471. M"AM;,3([-#5(("`N("`/;R`@("!O("`@("X@("!O#B`@(&8@(!M;,3,[-3!(
  1472. M("`@(&8@("`@("`@9B`@&ULQ-#LU,4@N("`@("X@("`@("`N"AM;,3([-#=(
  1473. M9B`N("`@(`]O#B`@+B`@9B`/;PX@("`@(&8;6S$S.S4S2&8@&ULQ,SLV,D@@
  1474. M("`N&ULQ-#LU,4AF("`@(&8@("X@("!F"AM;,3([-#=(("!F("`@("`@(&8@
  1475. M(&8@("`@("`@(!M;,3,[-#=(+B`@(`]O#B!F("`/;R`@("`@(&\.(&8;6S$T
  1476. M.S4Q2"`@("`@("`@9B`N("`*&ULQ,CLT.4@@(`]O("`@(&\@("`@("!O#AM;
  1477. M,3,[-#=(9B`@("`@#V\@("`@("`@("`@(&\.("`N&ULQ-#LU,D@N("`@("X@
  1478. M#V\.(&8*&ULQ,CLT-T@/;R`@("`@;R`@("`@("`@("`@;QM;,3,[-#=(("`N
  1479. M("`@("`@("`@;R!O#B`@("`@(&8;6S$T.S4R2&8@("`N9B`@("`*&ULQ,CLT
  1480. M-T@@("`@("`@+B`@("`/;R!O("`@("`@;PX;6S$S.S0Y2&8@(`]O("`@(&\.
  1481. M("`@("`N("`@("`;6S$T.S4R2"`@("YF("`@("`@("X*&ULQ,CLT-4@N("`@
  1482. M#V\@(&\.(&8@(`]O#B`@("`@("`@+B`@("X;6S$S.S0Y2"`N("`@("`/;PX@
  1483. M("`@("!F&ULQ-#LU-4AF("`@("`@("!F"AM;,3([-#5(9B`@("`@("`@("`/
  1484. M;R`@("`@(&\.("!F("X@9AM;,3,[-3!(9B`@("X/;R`@("`@("X@;PX;6S$T
  1485. M.S4U2"`@("`@("`@("`*(`H;6S$R.S0U2"`@+B`@#V\@("`@;R`@("`N("`@
  1486. M;PX@("!F("`;6S$S.S4P2"`@("!F("`@("`@(&8@(!M;,30[-3%(+B`@("`N
  1487. M("`@("`@+@H;6S4[,4@;6TL;(S4*&ULV.S%(&UM+&R,U"AM;,3([-#=(9B`N
  1488. M("`@(`]O#B`@+B`@9B`/;PX@("`@(&8;6S$S.S4S2&8@&ULQ,SLV,D@@("`N
  1489. M&ULQ-#LU,4AF("`@(&8@("X@("!F"AM;,3([-#=(("!F("`@("`@(&8@(&8@
  1490. M("`@("`@(!M;,3,[-#=(+B`@(`]O#B!F("`/;R`@("`@(&\.(&8;6S$T.S4Q
  1491. M2"`@("`@("`@9B`N("`*&ULQ,#LQ2"`@("`@("`O;V]O;V]O;V]O;V]O;V]O
  1492. M7`H;6S$R.S0Y2"`@#V\@("`@;R`@("`@(&\.&ULQ,SLT-TAF("`@("`/;R`@
  1493. M("`@("`@("`@;PX@("X;6S$T.S4R2"X@("`@+B`/;PX@9@H;6S$P.S%(("`@
  1494. M("`@+R`@('-S<R`@("`@<W-S("`@7`H;6S$R.S0W2`]O("`@("!O("`@("`@
  1495. M("`@("!O&ULQ,SLT-T@@("X@("`@("`@("!O(&\.("`@("`@9AM;,30[-3)(
  1496. M9B`@("YF("`@(`H;6S$P.S%(("`@("`@>"`@*!M;-&US3W,;6VTI("`@*!M;
  1497. M-&US3W,;6VTI("!X"AM;,3([-#=(("`@("`@("X@("`@#V\@;R`@("`@(&\.
  1498. M&ULQ,SLT.4AF("`/;R`@("!O#B`@("`@+B`@("`@&ULQ-#LU,D@@("`N9B`@
  1499. M("`@("`N"AM;,3`[,4@@("`@("!X("`@("`@("!@("`@("`@("!X"AM;,3([
  1500. M-#5(+B`@(`]O("!O#B!F("`/;PX@("`@("`@("X@("`N&ULQ,SLT.4@@+B`@
  1501. M("`@#V\.("`@("`@9AM;,30[-35(9B`@("`@("`@9@H;6S$P.S%(("`@("`@
  1502. M(%P@(%QS<W-S<W-S<W,O("`O"AM;,3([-#5(9B`@("`@("`@("`/;R`@("`@
  1503. M(&\.("!F("X@9AM;,3,[-3!(9B`@("X/;R`@("`@("X@;PX;6S$T.S4U2"`@
  1504. M("`@("`@("`*&ULQ,#LQ2"`@("`@("`@7"`@("`@("`@("`@("`O"AM;,3([
  1505. M-#5(("`N("`/;R`@("!O("`@("X@("!O#B`@(&8@(!M;,3,[-3!(("`@(&8@
  1506. M("`@("`@9B`@&ULQ-#LU,4@N("`@("X@("`@("`N"AM;,3`[,4@@("`@("`@
  1507. M("!<<W-S<W-S<W-S<W,O"AM;,3([-#=(9B`N("`@(`]O#B`@+B`@9B`/;PX@
  1508. M("`@(&8;6S$S.S4S2&8@&ULQ,SLV,D@@("`N&ULQ-#LU,4AF("`@(&8@("X@
  1509. M("!F"AM;,3`[,4@@("`@("`@("`@;V]P<'%Q<G)S<W,*&ULQ,CLT-T@@(&8@
  1510. M("`@("`@9B`@9B`@("`@("`@&ULQ,SLT-T@N("`@#V\.(&8@(`]O("`@("`@
  1511. M;PX@9AM;,30[-3%(("`@("`@("!F("X@(`H;6S$P.S%(("`@("`@("`@(&]O
  1512. M<'!Q<7)R<W-S"AM;,3([-#E(("`/;R`@("!O("`@("`@;PX;6S$S.S0W2&8@
  1513. M("`@(`]O("`@("`@("`@("!O#B`@+AM;,30[-3)(+B`@("`N(`]O#B!F"AM;
  1514. M,3`[,4@@("`@("`@("`@;V]P<'%Q<G)S<W,*&ULQ,CLT-T@/;R`@("`@;R`@
  1515. M("`@("`@("`@;QM;,3,[-#=(("`N("`@("`@("`@;R!O#B`@("`@(&8;6S$T
  1516. M.S4R2&8@("`N9B`@("`*&ULQ,#LQ2"`@("`@("`@("!O;W!P<7%R<G-S<PH;
  1517. M6S$R.S0W2"`@("`@("`N("`@(`]O(&\@("`@("!O#AM;,3,[-#E(9B`@#V\@
  1518. M("`@;PX@("`@("X@("`@(!M;,30[-3)(("`@+F8@("`@("`@+@H;6S$P.S%(
  1519. M("`@("`@("`@(&]O<'!Q<7)R<W-S"AM;,3([-#5(+B`@(`]O("!O#B!F("`/
  1520. M;PX@("`@("`@("X@("`N&ULQ,SLT.4@@+B`@("`@#V\.("`@("`@9AM;,30[
  1521. M-35(9B`@("`@("`@9@H;6S$P.S%(("`@("`@("`@(&]O<'!Q<7)R<W-S"AM;
  1522. M,3([-#5(9B`@("`@("`@("`/;R`@("`@(&\.("!F("X@9AM;,3,[-3!(9B`@
  1523. M("X/;R`@("`@("X@;PX;6S$T.S4U2"`@("`@("`@("`*&ULQ,#LQ2"`@("`@
  1524. M("`@("!O;W!P<7%R<G-S<QM;,3([-#5(("`N("`/;R`@("!O("`@("X@("!O
  1525. M#B`@(&8@(!M;,3,[-3!(("`@(&8@("`@("`@9B`@&ULQ-#LU,4@N("`@("X@
  1526. M("`@("`N"AM;2!M-("`@("`@>"`@("`@("`@8"`@("`@("`@>`H;6S$R.S0W
  1527. M2&8@+B`@("`/;PX@("X@(&8@#V\.("`@("!F&ULQ,SLU,TAF(!M;,3,[-C)(
  1528. M("`@+AM;,30[-3%(9B`@("!F("`N("`@9@H;6T@;32`@("`@('@@("@;6S1M
  1529. M<T]S&UMM*2`@("@;6S1M<T]S&UMM*2`@>`H;6S$R.S0W2"`@9B`@("`@("!F
  1530. M("!F("`@("`@("`;6S$S.S0W2"X@("`/;PX@9B`@#V\@("`@("!O#B!F&ULQ
  1531. M-#LU,4@@("`@("`@(&8@+B`@"AM;2!M-("`@("`@+R`@('-S<R`@("`@<W-S
  1532. SHAR_EOF
  1533. true || echo 'restore of screen3.2/terminfo/test.txt failed'
  1534. fi
  1535. echo 'End of  part 8'
  1536. echo 'File screen3.2/terminfo/test.txt is continued in part 9'
  1537. echo 9 > _shar_seq_.tmp
  1538. exit 0
  1539. exit 0 # Just in case...
  1540.