home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 5 / FreshFish_July-August1994.bin / bbs / gnu / emacs-18.59-diffs.lha / src / diffs / emacs-18.59.diffs
Text File  |  1994-07-12  |  1MB  |  36,476 lines

  1. diff -rc --new-file /src/baseline/emacs-18.59/Product-Info emacs-18.59/Product-Info
  2. *** /src/baseline/emacs-18.59/Product-Info    Thu Jan  1 00:00:00 1970
  3. --- emacs-18.59/Product-Info    Tue Jul 12 17:05:44 1994
  4. ***************
  5. *** 0 ****
  6. --- 1,62 ----
  7. + .name
  8. + emacs
  9. + .fullname
  10. + GNU Emacs editor
  11. + .type
  12. + Text Editing
  13. + .short
  14. + GNU Emacs editor
  15. + .description
  16. + GNU Emacs is the GNU incarnation of the advanced, self-documenting,
  17. + customizable, extensible real-time display editor Emacs. (The `G' in
  18. + `GNU' is not silent.)
  19. + We say that Emacs is a "display" editor because normally the text
  20. + being edited is visible on the screen and is updated automatically as
  21. + you type your commands.
  22. + We call it a "real-time" editor because the display is updated very
  23. + frequently, usually after each character or pair of characters you
  24. + type.  This minimizes the amount of information you must keep in your
  25. + head as you edit.
  26. + We call Emacs advanced because it provides facilities that go beyond
  27. + simple insertion and deletion: filling of text; automatic indentation
  28. + of programs; viewing two or more files at once; and dealing in terms
  29. + of characters, words, lines, sentences, paragraphs, and pages, as well
  30. + as expressions and comments in several different programming
  31. + languages.  It is much easier to type one command meaning "go to the
  32. + end of the paragraph" than to find that spot with simple cursor keys.
  33. + "Self-documenting" means that at any time you can type a special
  34. + character, `Control-h', to find out what your options are.  You can
  35. + also use it to find out what any command does, or to find all the
  36. + commands that pertain to a topic.
  37. + "Customizable" means that you can change the definitions of Emacs
  38. + commands in little ways.  For example, if you use a programming
  39. + language in which comments start with `<**' and end with `**>', you
  40. + can tell the Emacs comment manipulation commands to use those strings.
  41. + Another sort of customization is rearrangement of the command set.
  42. + For example, if you prefer the four basic cursor motion commands (up,
  43. + down, left and right) on keys in a diamond pattern on the keyboard,
  44. + you can have it.
  45. + "Extensible" means that you can go beyond simple customization and
  46. + write entirely new commands, programs in the Lisp language to be run
  47. + by Emacs's own Lisp interpreter.  Emacs is an "on-line extensible"
  48. + system, which means that it is divided into many functions that call
  49. + each other, any of which can be redefined in the middle of an editing
  50. + session.  Any part of Emacs can be replaced without making a separate
  51. + copy of all of Emacs.  Most of the editing commands of Emacs are
  52. + written in Lisp already; the few exceptions could have been written in
  53. + Lisp but are written in C for efficiency.  Although only a programmer
  54. + can write an extension, anybody can use it afterward.
  55. + .version
  56. + 18.59
  57. + .author
  58. + Richard Stallman
  59. + .distribution
  60. + GNU Public License
  61. + .described-by
  62. + Fred Fish (fnf@amigalib.com)
  63. diff -rc --new-file /src/baseline/emacs-18.59/amiga/README emacs-18.59/amiga/README
  64. *** /src/baseline/emacs-18.59/amiga/README    Thu Jan  1 00:00:00 1970
  65. --- emacs-18.59/amiga/README    Tue Jul 12 10:00:08 1994
  66. ***************
  67. *** 0 ****
  68. --- 1,11 ----
  69. + This version of emacs is still built with SAS C.  It also requires
  70. + David Gay's unix emulation library, which can be found in the unix
  71. + subdirectory here.  You may have to go through some contortions to
  72. + recompile it though.
  73. + The files in amiga-extra are various things I received in the emacs
  74. + distribution from David Gay, but didn't have any time to examine
  75. + very closely, so they are stuck there in limbo for the time being.
  76. + -Fred  ><>
  77. +  12-Jul-94
  78. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/INSTALL.AMIGA emacs-18.59/amiga/amiga-extra/INSTALL.AMIGA
  79. *** /src/baseline/emacs-18.59/amiga/amiga-extra/INSTALL.AMIGA    Thu Jan  1 00:00:00 1970
  80. --- emacs-18.59/amiga/amiga-extra/INSTALL.AMIGA    Sun May  9 18:19:06 1993
  81. ***************
  82. *** 0 ****
  83. --- 1,58 ----
  84. + DON'T FORGET: This version of Emacs REQUIRES AMIGADOS V2.04 !!
  85. + If you are updating from a previous version, the following steps apply:
  86. + - You must redefine your GNUEMACS: assign (the name of the directory
  87. +   has changed from emacs-18.58 to emacs-18.59).
  88. + - You should make sure you are using the lisp files (*.el and *.elc) which
  89. +   come with this release, as several of them have changed.
  90. + New users should do the following (assuming you are in the emacs-18.59
  91. + directory):
  92. + 1. Copy amiga/.emacs, amiga/.emacs-menu.menu, amiga/.emacs-menu.el to s:
  93. + 2. Copy amiga/c/#? to somewhere in your path.
  94. + 3. Add an assign GNUEMACS: <wherever you've put the emacs directory> to 
  95. +    your User-Startup.
  96. + 4. Install Matt Dillon's fifo.library and fifo: handler if you want to use
  97. +    external processes (This can be found on Fish disks). If you have any
  98. +    problems, try a version at least as recent as that on Fish Disk 588.
  99. + 5. Define various environment variables (these all have defaults, so this
  100. +    isn't absolutely necessary, except for ESHELL) :
  101. +      USER     - a username (a la Unix) (default "user")
  102. +      USERNAME - your full name (default same as $USER)
  103. +      HOME     - your "home" directory (This is the directory refered to
  104. +         by ~/<file>, and where the .emacs file is looked for)
  105. +         (default "s:").
  106. +      HOSTNAME - a name for your system (default "amiga")
  107. +      ESHELL   - where to find an unix-like shell (no default). By unix-like
  108. +         I mean that it should not open a window to get its input.
  109. +         The only tested value for this is GNUEMACS:etc/sh.
  110. +    For instance, I have the following values:
  111. +      USER: dgay, USERNAME: David E. Gay, HOSTNAME: owl,
  112. +      ESHELL: gnuemacs:etc/sh
  113. + 6. If you want to check that emacs is working, type 
  114. +  
  115. +   assign gnuemacs: ""
  116. +   emacs
  117. +    If all goes well, emacs should open a window. If you get
  118. +      memacs: Unknown command
  119. +    you have an alias for emacs. Try editing s:Shell-Startup and removing it.
  120. +    If you get
  121. +      emacs: file is not executable
  122. +    try typing
  123. +      protect <wherever you put the commands from step 2>/emacs +s
  124. +    And finally, if you get
  125. +      wrong number of arguments
  126. +      if failed returncode 10
  127. +    make sure that you have getstack in your path
  128. + 7. If you are going to use emacs over a serial line, you must install 
  129. +    the termcap file, which comes with the source version. To do so, type:
  130. +      join gnuemacs:etc/termcap.ucb gnuemacs:etc/termcap.amiga as s:termcap
  131. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/.emacs emacs-18.59/amiga/amiga-extra/amiga/.emacs
  132. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/.emacs    Thu Jan  1 00:00:00 1970
  133. --- emacs-18.59/amiga/amiga-extra/amiga/.emacs    Sun Sep 20 10:06:40 1992
  134. ***************
  135. *** 0 ****
  136. --- 1 ----
  137. + ;; Put your configuration commands here.
  138. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/.emacs-menu.el emacs-18.59/amiga/amiga-extra/amiga/.emacs-menu.el
  139. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/.emacs-menu.el    Thu Jan  1 00:00:00 1970
  140. --- emacs-18.59/amiga/amiga-extra/amiga/.emacs-menu.el    Sat May 16 13:53:06 1992
  141. ***************
  142. *** 0 ****
  143. --- 1 ----
  144. + (amiga-menus-set (quote (("Project" (("Open     C-x C-f" (call-interactively (quote find-file)) 79) ("Save     C-x C-s" (call-interactively (quote save-buffer)) 83) ("Save As  C-x C-w" (call-interactively (quote write-file)) 87) nil ("Quit     C-x C-c" (call-interactively (quote save-buffers-kill-emacs)) 81))) ("Edit" (("Undo            C-_" (call-interactively (quote undo)) 85) nil ("Mark            C-@" (call-interactively (quote set-mark-command)) 77) ("Cut             C-w" (call-interactively (quote kill-region)) 88) ("Copy            M-w" (call-interactively (quote copy-region-as-kill)) 67) ("Paste           C-y" (call-interactively (quote yank)) 86) ("Paste Previous  M-y" (call-interactively (quote yank-pop)) nil))) ("Search" (("Find Forward      C-s" (call-interactively (quote isearch-forward)) 70) ("Find Backward     C-r" (call-interactively (quote isearch-backward)) 66) nil ("Find Fwd Regexp   M-C-s" (call-interactively (quote isearch-forward-regexp)) nil) ("Find Bwd Regexp" (call-interactively (quote isearch-backward-regexp)) nil) nil ("Query Replace     M-%" (call-interactively (quote query-replace)) 82) ("Query Rpl Regexp" (call-interactively (quote query-replace-regexp)) nil))) ("Window" (("Split       C-x 2" (call-interactively (quote split-window-vertically)) 50) ("Split H     C-x 5" (call-interactively (quote split-window-horizontally)) nil) nil ("One Window  C-x 1" (call-interactively (quote delete-other-windows)) 49) ("Delete      C-x 0" (call-interactively (quote delete-window)) 48) nil ("Enlarge     C-x ^" (call-interactively (quote enlarge-window)) 69) ("Next        C-x o" (call-interactively (quote other-window)) 78))) ("Buffers" (("List    C-x C-b" (call-interactively (quote list-buffers)) nil) ("Change  C-x b" (call-interactively (quote switch-to-buffer)) nil) ("Kill    C-x k" (call-interactively (quote kill-buffer)) nil))) ("Help" (("Tutorial          C-h t" (call-interactively (quote help-with-tutorial)) 84) ("Information       C-h i" (call-interactively (quote info)) 72) nil ("Where Is Command  C-h w" (call-interactively (quote where-is)) nil) ("What Is Command   C-h f" (call-interactively (quote describe-function)) nil) ("What Is Key       C-h k" (call-interactively (quote describe-key)) nil) ("Apropos           C-h a" (call-interactively (quote command-apropos)) nil))))))
  145. \ No newline at end of file
  146. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/.emacs-menu.menu emacs-18.59/amiga/amiga-extra/amiga/.emacs-menu.menu
  147. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/.emacs-menu.menu    Thu Jan  1 00:00:00 1970
  148. --- emacs-18.59/amiga/amiga-extra/amiga/.emacs-menu.menu    Sat May 16 13:52:44 1992
  149. ***************
  150. *** 0 ****
  151. --- 1,38 ----
  152. + (("Project" ("Open" find-file ?O)
  153. +         ("Save" save-buffer ?S)
  154. +         ("Save As" write-file ?W)
  155. +         ()
  156. +         ("Quit" save-buffers-kill-emacs ?Q))
  157. +  ("Edit" ("Undo" undo ?U)
  158. +          ()
  159. +      ("Mark" set-mark-command ?M)
  160. +      ("Cut" kill-region ?X)
  161. +      ("Copy" copy-region-as-kill ?C)
  162. +      ("Paste" yank ?V)
  163. +      ("Paste Previous" yank-pop))
  164. +  ("Search" ("Find Forward" isearch-forward ?F)
  165. +        ("Find Backward" isearch-backward ?B)
  166. +        ()
  167. +        ("Find Fwd Regexp" isearch-forward-regexp)
  168. +        ("Find Bwd Regexp" isearch-backward-regexp)
  169. +        ()
  170. +        ("Query Replace" query-replace ?R)
  171. +        ("Query Rpl Regexp" query-replace-regexp))
  172. +  ("Window" ("Split" split-window-vertically ?2)
  173. +        ("Split H" split-window-horizontally)
  174. +        ()
  175. +        ("One Window" delete-other-windows ?1)
  176. +        ("Delete" delete-window ?0)
  177. +        ()
  178. +        ("Enlarge" enlarge-window ?E)
  179. +        ("Next" other-window ?N))
  180. +  ("Buffers" ("List" list-buffers)
  181. +         ("Change" switch-to-buffer)
  182. +         ("Kill" kill-buffer))
  183. +  ("Help" ("Tutorial" help-with-tutorial ?T)
  184. +          ("Information" info ?H)
  185. +      ()
  186. +      ("Where Is Command" where-is)
  187. +      ("What Is Command" describe-function)
  188. +      ("What Is Key" describe-key)
  189. +      ("Apropos" command-apropos)))
  190. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/amiga.doc emacs-18.59/amiga/amiga-extra/amiga/amiga.doc
  191. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/amiga.doc    Thu Jan  1 00:00:00 1970
  192. --- emacs-18.59/amiga/amiga-extra/amiga/amiga.doc    Wed Sep 29 22:42:40 1993
  193. ***************
  194. *** 0 ****
  195. --- 1,605 ----
  196. + 1. Introduction
  197. + ---------------
  198. + Emacs is a powerful, but sometimes cryptic, editor. In this Amiga
  199. + version, I have tried to make it easier to use with menus, mouse
  200. + support and arrow key support, but it still requires some getting used
  201. + to. I would recommend starting with the tutorial, which can be started
  202. + from the Help menu (if it is missing, you didn't install emacs
  203. + correctly. Check that the file s:.emacs-menu.el exists) or from the
  204. + keyboard by typing Control-H and then t.
  205. + This file only describes the Amiga specific features of emacs, and it
  206. + assumes a working knowledge of emacs. For more documentation you can
  207. + consult the emacs help (Information in the Help menu, or C-h i) or
  208. + read the emacs manual (which is the same document in a printed form).
  209. + This manual can be bought from the
  210. +      Free Software Foundation
  211. +      675 Mass Ave
  212. +      Cambridge, MA 02139
  213. +      USA
  214. + See the file gnuemacs:etc/DISTRIB for more information (you can type
  215. + C-h C-d to view it).
  216. + To install emacs, read the file INSTALLATION.
  217. + 2. Changes since the last version
  218. + ---------------------------------
  219. + Several features have been added since v1.26:
  220. + - based on emacs 18.59 instead of 18.58
  221. + - changes contributed by Christian E. Hopps: new AREXX code, enhancements
  222. + to the screen routines (more flexibility, read window & screen size,
  223. + ...).
  224. + - amiga-iconify is now a toggle (to allow deiconification from AREXX).
  225. + - the infamous 'vfork: not enough memory' message is now more explicit :-)
  226. + - miscellaneous bug fixes
  227. + 3. Using emacs in a window
  228. + --------------------------
  229. + Emacs runs in a window on the Workbench (this can be changed). It
  230. + basically works like just any other version of GNU Emacs, using the
  231. + same keys, etc. It uses the standard amiga keymap, but with some strange
  232. + modifications:
  233. + o The left alt key is stolen as a meta key for emacs. This means you can't use
  234. + it to enter accents. However, the right alt key remains untouched. Hence
  235. + 'left alt-f e' moves forward one word and inserts an e, while
  236. + 'right alt-f e' inserts an e acute. In the rest of the text, the meta key
  237. + always means the 'left alt' key.
  238. + o C-space is always mapped to C-@, the set-mark command, for convenience.
  239. + o The backspace key always sends DEL (delete previous character in emacs),
  240. + and DEL sends C-d (delete character under cursor). If you don't like this, 
  241. + add the line
  242. +     (setq amiga-remap-bsdel nil)
  243. + to your .emacs file (in s:).
  244. + o Keypad keys are prefixed with C-x C-^ K (so 0 generates C-x C-^ K 0).
  245. + Normally, C-x C-^ K is a do-nothing operation, so the keypad keys just
  246. + insert the usual character. If you want to redefine the keypad keys, you
  247. + must do the following:
  248. +   (global-set-key "\C-x\C-^K" (make-sparse-keymap))
  249. +   (global-set-key "\C-x\C-^K0" '<function for key 0>)
  250. +   (global-set-key "\C-x\C-^K1" '<function for key 0>)
  251. +   ...
  252. + Once you have redefined one key, you must define all of them (as C-x C-^ K
  253. + is no longer a do-nothing command). If you still want a keypad to insert
  254. + its usual character, you can use (for +)
  255. +   (global-set-key "\C-x\C-^K+" 'self-insert-command)
  256. + Even with this, the numeric keypad will not work with the incremental
  257. + search function. The only way past that is to disable the C-x C-^ K
  258. + prefix, with the following code:
  259. +   (setq amiga-remap-numeric-keypad nil)
  260. + (and you will then not be able to redefine the keypad keys).
  261. + o The sequences for function & arrow keys are the standard Amiga ones, 
  262. + except that the initial character (CSI, code 155) is replaced by
  263. + C-x C-^. For example, F1 is C-x C-^ 0 ~. You can always find the 
  264. + characters generated by a key by pressing it, and then executing
  265. + M-x view-lossage. This displays the last 100 characters seen by emacs. So
  266. + to define F1 to be view-lossage you would add
  267. +   (global-set-key "\C-x\C-^0~" 'view-lossage)
  268. + to s:.emacs (trying to define F1 interactively with M-x global-set-key
  269. + will fail ...).
  270. + There are several extra features:
  271. + a) Mouse support, similar to the X-Windows version.
  272. + You can position the cursor with the left mouse button. Other possibilites are:
  273. + action            result
  274. + ------------------------------
  275. + shift-left button    set mark at mouse position
  276. + control-left button    cut between point and mouse position
  277. + meta-left button    copy between point and mouse position
  278. + middle button        paste
  279. + shift-middle button    iconify emacs window (double click to deiconify)
  280. + Some of the control, meta, etc combinations may be stolen by Intuition or
  281. + commodities programs, so don't be surprised if they don't all work.
  282. + All of these actions may be redefined (this is emacs after all!), see the
  283. + file lisp/amiga-mouse.el for details (you will need to learn lisp if you don't
  284. + already know it ...) [Note: this file is not included in the binary only
  285. + distribution, you will need the source code version].
  286. + b) Clipboard
  287. + At first glance, emacs uses the Amiga clipboard, ie it cuts to the
  288. + clipboard and pastes from it (via the menu operations or the C-w
  289. + (kill-region), M-w (copy-region-as-kill) & C-y (yank) commands).
  290. + Things are actually complicated by emacs use of a "kill ring" (ie it
  291. + remembers the last 30 things cut. The M-y (yank-pop, menu command
  292. + Paste Previous) allows you to recover old cuts):
  293. + - When you cut (or copy) something in emacs it is placed in the
  294. + clipboard.
  295. + - When you paste (yank) something in emacs, it checks the clipboard to
  296. + see if it contains anything new. If so, it pastes that.
  297. + [Note: It also checks the clipboard when you cut something, and saves
  298. + that in the kill-ring if necessary]
  299. + All this effort is used to make the clipboard appear to operate
  300. + transparently in emacs.
  301. + c) Window
  302. + By default, emacs runs in a window on the workbench screen using the
  303. + system default font and the standard colours. All this can be changed:
  304. + o The font can be specified with the -fn <font> <size> option when you
  305. + run emacs. You can also use the amiga-set-font command interactively,
  306. + or add a line like
  307. +    (amiga-set-font "topaz" 11)
  308. + to your s:.emacs file. The font must be non-proportional.
  309. + o The window size and screen can be changed with the
  310. + amiga-set-geometry function. It takes 4, 5 or 6 parameters, the (x,y)
  311. + position of the window and its (width,height). The 5th optional
  312. + parameter specifies the screen: a string gives the name of a public
  313. + screen, t stands for the default public screen (normally the
  314. + workbench) and nil means keep the same screen. Finally, if the 6th
  315. + parameter is present and not nil, a backdrop window is used.
  316. + For example, the lisp code
  317. +   (amiga-set-geometry 0 0 640 400)
  318. + resizes the emacs window to 640x400. If the screen would be too small
  319. + given the current font (there must be room for 11x4 characters), the
  320. + change is refused.
  321. + Michael Kaiser has contributed a simple public screen creation
  322. + utility: gnuemacs:amiga/contrib/kaiser/pub is a program that creates
  323. + a public screen called "EmacsPublicScreen".
  324. + o The foreground & background colours can be changed with the 
  325. + amiga-set-foreground-color & amiga-set-background-color commands. You
  326. + specify the pen and not the actual colour (from 0 to 7 only,
  327. + because of restrictions in console.device).
  328. + o The inverse text & fill colours can be specified with
  329. + amiga-set-inverse-text-pen and amiga-set-inverse-fill-pen. The
  330. + choices are also pens 0 to 7, or 8 for reverse.
  331. + o The emacs window can be iconified (onto the workbench) with the
  332. + amiga-iconify command. This is bound to shift-middle button on a 3
  333. + button mouse, and to C-z (which is normally bound to suspend-emacs,
  334. + which doesn't work on the Amiga).
  335. + To deiconify emacs, double click on the icon.
  336. + Emacs will continue to answer to ARexx commands while iconified. The
  337. + variable amiga-emacs-iconfied is set to 't' while emacs is iconified,
  338. + 'nil' the rest of the time.  You can test this, eg to make sure that
  339. + emacs is not iconified before reading some user input. If you wish to
  340. + deiconify emacs from arexx, simply call (amiga-iconify) again (it is a
  341. + toggle).
  342. + You can specify the position for the icon with (amiga-set-icon-pos x
  343. + y), or get the default position with (amiga-set-icon-pos nil nil).
  344. + If you use the functions described above in s:.emacs, they will take 
  345. + effect before emacs's window is opened. This will avoid the nasty
  346. + visual effects of the previous version.
  347. + o You can manipulate the emacs window with amiga-activate-window,
  348. + amiga-window-to-front and amiga-window-to-back.
  349. + o You can get the window and screen size with (amiga-get-window-geometry)
  350. + and (amiga-get-screen-geometry). The iconified status is now returned 
  351. + by amiga-get-window-geometry instead of the amiga-emacs-iconified variable.
  352. + d) Menus
  353. + If you have installed emacs correctly (see the INSTALLATION file), it
  354. + will startup with some menus containing some useful basic
  355. + functions (the layout was inspired from that of TurboText, another
  356. + good editor which has the disadvantage of being more expensive than
  357. + emacs ...). Alongside each item is the emacs key sequence which
  358. + invokes that function, if any.
  359. + Using the Menu Help functionality of AmigaDOS 2.04, you can get help
  360. + on any menu item by highlighting it with the mouse and pressing the
  361. + Help key [This is easier if you're left handed :-)].
  362. + The menus are not fixed, they are defined by the s:.emacs-menu.el file
  363. + (which isn't human-readable). To modify them, edit s:.emacs-menu.menu.
  364. + This contains a lisp-like (but quite legible even for lisp-haters)
  365. + representation of the menus, which you can modify by adding items or
  366. + menus. The format should be obvious (just make sure that closing
  367. + brackets correspond to the correct opening ones, emacs always shows
  368. + the corresponding '(' when you type a ')'. Also the last bracket
  369. + should correspond with the first).
  370. + When you have finished your changes, type C-c C-c. This will save your
  371. + menus, and then generate a .el file from them (this takes several
  372. + seconds even on an A3000. Be patient). Then save the resulting file.
  373. + To have the new menus take effect immediately, type M-C-x while in the
  374. + .el file.
  375. + Enterprising lisp programmers can customise the menus even more by
  376. + modifying the functions amiga-menus-dispatch and/or amiga-menus-help
  377. + in lisp/amiga-mouse.el. This code basically receives a (menu-number
  378. + menu-item-number) list and must take the appropriate action
  379. + (currently, execute the command associated with that particular menu
  380. + item). The lack of comments will surely not deter these audacious
  381. + pionneers ...
  382. + e) Command line options
  383. + Beyond the standard emacs command line options (for which
  384. + documentation tends to be rather sketchy, not to say missing), you can
  385. + also use:
  386. + -prealloc <n>: Reserve n bytes of memory for emacs exclusively. This
  387. + option *must* be the first on the command line. On the A3000, chip
  388. + memory can't be used for emacs (the details are complicated ...), so
  389. + you will run out of memory sooner than expected. This option allows
  390. + you to reserve some for emacs before it gets eaten by other programs.
  391. + -fn <font> <size>: Set the font that emacs uses, like the
  392. + amiga-set-font command (see section c, on windows). Note that there
  393. + must be enough room for 11x4 characters in the standard 640x200
  394. + window. So avoid fonts bigger than 40 points ...
  395. + -nw: Don't use a window, use a serial port. See part 3, Using Emacs
  396. + over a serial line.
  397. + f) ARexx
  398. + [The ARexx interface has been rewritten for this version by Christian
  399. + E. Hopps]
  400. + Emacs has a full ARexx interface. It can execute scripts and commands
  401. + synchronously (waiting for the result) or asynchronously, and has an
  402. + ARexx port from which it accepts commands. 
  403. + To execute a script, use the amiga-arexx-do-command command.  This
  404. + asks for the script file name (the default extension is .elx). If you
  405. + just want to execute a simple ARexx command, you can prefix those
  406. + commands with C-u and specify the string to execute.
  407. + From lisp, you can use
  408. +   (amiga-arexx-send-command "<file>" nil) for a script, and
  409. +   (amiga-arexx-send-command "<commands>" t) for direct execution.
  410. + (and the same for amiga-arexx-do-command). The result of
  411. + amiga-arexx-send-command is an integer that can be passed to
  412. + amiga-arexx-wait-command to wait for the completion of the script or
  413. + command. It can also be used with amiga-arexx-check-command to check
  414. + if the script has finished. For example:
  415. +   (let ((arexx-id (amiga-send-command "start-fun" nil)))
  416. +     ... do something here ...
  417. +     ; and wait for arexx script to end
  418. +     (amiga-arexx-wait-command arexx-id))
  419. + amiga-arexx-wait-command returns the result of the script/command.
  420. + amiga-arexx-do-command-with-results is like amiga-arexx-do-command,
  421. + but it returns the result of the script/command.
  422. + Emacs's ARexx port accepts commands in lisp, and is usually called
  423. + EMACS1 (if you run emacs twice simulatenously, the second one will
  424. + have EMACS2, and so on). For example (from a shell),
  425. +   rx "address EMACS1 '(beginning-of-buffer)'"
  426. + will set point to the beginning of the buffer.
  427. + ARexx commands are only processed at certain times, so be careful how
  428. + you design your applications. These are:
  429. + o While waiting for commands from the keyboard (ie when emacs is
  430. + idle or iconified).
  431. + o While processing a synchronous (amiga-arexx-do-command) script or
  432. + waiting for a script to terminate with amiga-arexx-wait-command.
  433. + o When the amiga-arexx-process function is called.
  434. + They also affect the user visible state by default (ie calling
  435. + beginning-of-buffer as above modifies the user's position). Avoid
  436. + sending random commands at random times, or use save-excursion.
  437. + As usual, all this behaviour can be modified to some extent. Look in
  438. + amiga-init.el for details [The source code is the documentation...].
  439. + There are a few arexx examples in the amiga/contrib directory.
  440. + g) Workbench support
  441. + Beyond iconification (see the section on the emacs window), emacs 
  442. + supports a number of features for Workbench users:
  443. + - emacs can be run from the Workbench, by all the usual methods
  444. +   (double clicking on the tool, double clicking on a project which
  445. +   has temacs as its default tool, etc). All the projects that are
  446. +   passed to temacs will be loaded (if they are files), or listed 
  447. +   with dired (if they are directories).
  448. + - icons can be dropped in emacs's window, the corresponding file
  449. +   or directory will be loaded or listed.
  450. + - icons can be created for files that are saved. This is the default
  451. +   when emacs is run from the workbench. This is controlled by the
  452. +   amiga-create-icons variable: if you always want icons to be
  453. +   created, add
  454. +     (setq amiga-create-icons t)
  455. +   to s:.emacs, or
  456. +     (setq amiga-create-icons nil)
  457. +   if you never want them.
  458. + h) external processes
  459. + This version of emacs fully supports synchronous (used to get the
  460. + result of ls for dired, for instance) and asynchronous (as in the
  461. + 'shell' command) processes. However, it requires Matt Dillon's
  462. + 'fifo.device' and 'fifo:' devices to function. See the INSTALLATION
  463. + file for details.
  464. + This allows full support for all emacs functions which call external
  465. + programs, providing that said programs exist on the Amiga. The
  466. + following work:
  467. +   compile (for SAS C 5.10b, with a few occasional problems)
  468. +   grep
  469. +   shell (but see the discussions below)
  470. +   display-time
  471. +   dired
  472. +   list-directory
  473. +   sort-...
  474. + The compile command sometimes has problems finding file names in the
  475. + error messages, and tries to read the current directory instead. If
  476. + you are patient, it moves on to the next file.
  477. + Because of differences between AmigaDOS & Unix, sending signals (eg
  478. + interrupt, kill) to processes is not very reliable. The following
  479. + points must be kept in mind:
  480. + - In some unlikely cases, the appropriate process to signal won't be 
  481. +   found. 
  482. + - The stop-process & continue-process functions don't work.
  483. + - interrupt-process & quit-process send a ctrl-c & ctrl-d to the
  484. +   process and all its children (probably).
  485. + - kill-process also sends a ctrl-c & ctrl-d. It then pretends that
  486. +   the process has died.
  487. + All input sent to a process after an end-of-file is ignored. The process
  488. + just sees an endless sequence of end-of-files. This is most visible with
  489. + the shell command, where if you send an end-of-file to a program (eg type)
  490. + with C-c C-d, the shell will exit. The bug is in fifo.device, not in emacs.
  491. + The input & output of processes run inside emacs look like interactive
  492. + files (which allows, for instance, shells to run correctly). However, this
  493. + confuses some programs which expect all interactive files to be Amiga
  494. + consoles and causes them to crash. Several versions of ls suffer from this
  495. + problem (they run into problems while trying to get the window size).
  496. + amiga-process-stack-size is the size of the stack for new processes. If it
  497. + is 0 (the default), emacs's stack size is used.
  498. + 4. Using emacs over a serial line
  499. + ---------------------------------
  500. + To use emacs over a serial port, you must do:
  501. +   setenv TERM <terminal type> (eg vt100)
  502. +   emacs -nw
  503. + The setenv line can be put in your User-Startup, so as to avoid typing
  504. + it every time.
  505. + Emacs cannot simply guess how your terminal works from its name, it
  506. + needs a description of it. This is found in a termcap file, which
  507. + emacs looks for in s:termcap. If you didn't install this file with emacs,
  508. + you can do so by typing (in a CLI):
  509. +   join gnuemacs:etc/termcap.ucb gnuemacs:etc/termcap.amiga as s:termcap
  510. + [Note: These files only come with the source version]
  511. + The -nw prevents the use of a window.
  512. + If you have several serial ports, you can type
  513. +   emacs -dev ser2.device 2 -nw
  514. + to use port 2 of device ser2.device. Use of the -dev option still requires the
  515. + -nw.
  516. + These options (-dev & -nw) *must* be specified at the start of the
  517. + command line.
  518. + The descriptions of the Clipboard, the command line options and the
  519. + ARexx port in part 2 above also apply to use over a serial port.
  520. + 5. Redumping emacs [This section for expert users only]
  521. + -------------------------------------------------------
  522. + Enterprising users may want to change the lisp files which are loaded
  523. + into the Emacs dump file. The procedure for doing this is very similar
  524. + to that with the Unix version, except that the amount of pure storage
  525. + can be changed without recompiling emacs. This will allow users
  526. + without SAS C v5.10b to still make such changes.
  527. + The necessary lisp files are only included in the source distribution,
  528. + so you will have to get that first. Once that is available, that you
  529. + have made all your changes (eg adding some extra files to be dumped),
  530. + use the following sequence to redump emacs:
  531. +   cd gnuemacs:etc
  532. +   stack 20000
  533. +   /temacs -pure <n> -malloc <m> -nl -batch -l loadup dump
  534. + The -pure <n> and -malloc <m> options should only be necessary if you
  535. + add extra files to be dumped, see below how to choose values for n &
  536. + m. The above order for the parameters must be preserved. Specifying
  537. + dump without -nl & -batch will have unpredicatable consequences.
  538. + Once all the files are loaded, a new copy of gnuemacs:etc/EMACS-DATA
  539. + will be saved, and all should work correctly. If you get one of the
  540. + following messages:
  541. +   Pure Lisp storage exhausted
  542. +   Emacs dump: ran out of memory for malloc.
  543. + read the following description of the -pure & -malloc options:
  544. + When emacs is dumped, it saves (amongst other things) the copies of
  545. + two zones of memory, called the pure storage area and the malloc hunk.
  546. + These contain an internal representation of the lisp code, so the more
  547. + code you include in a dumped emacs, the bigger these need to be. The
  548. + default sizes of these are reasonable sizes for the standard lisp code
  549. + which is dumped, but you will probably need to increase them if you
  550. + add some more lisp modules. The best way to find the new values for n
  551. + (size of pure area) and m (size of the malloc hunk), is to run the
  552. + command
  553. +   cd gnuemacs:etc
  554. +   stack 20000
  555. +   /temacs -pure 200000 -malloc 200000 -nl -batch -l loadup dump
  556. + (these sizes should be largely sufficient, but if you still get one of
  557. + the two error messages above, increase them). Then run emacs as usual,
  558. + and look at the values of the 2 lisp variables
  559. +      pure-bytes-used
  560. + and  amiga-malloc-bytes-used
  561. + pure-bytes used contains the minimum value for n, and
  562. + amiga-malloc-bytes-used the minimum value for m. Add 1000 to these for
  563. + luck to get values for n and m, and redump emacs using these.
  564. + For those who are into modifying the C source, the default values are
  565. + 130000 for n (see DEF_PURESIZE in s-amiga.h) and 92000 for m (see
  566. + MALLOC_HUNK_SIZE in amiga.h).
  567. + 6. Source
  568. + ---------
  569. + Source for emacs and all the programs included with it should be
  570. + obtainable from the same place as this file. If not, please send me
  571. + mail (if you are on the Internet) and I will provide the missing
  572. + pieces. Specifically, there should be:
  573. + - The emacs sources
  574. + - Sources for the 'unix library' needed to compile emacs
  575. + - Source for the programs in the c directory (ls, sort, rmdir, grep).
  576. + This consists of the GNU fileutils, textutils and grep packages.
  577. + Distributing the binary without these packages is a violation of
  578. + the GNU General Public License (see the file COPYRIGHT in the etc
  579. + directory) under which emacs is distributed.
  580. + 7. Thanks & Problems
  581. + --------------------
  582. + I would like to thank the following people for their help while porting
  583. + emacs:
  584. + - Mark D. Henning for the early port of emacs. He's the person who got
  585. + emacs working on the Amiga ...
  586. + - Christian E. Hopps for enhancements to the screen display code, a
  587. + rewrite of the AREXX code, testing and useful suggestions.
  588. + - All the beta testers and people who contributed useful utilities (see
  589. + the amiga/contrib directory):
  590. +   Jean-Marc Vandel
  591. +   Philippe Morel
  592. +   Jukka Partanen
  593. +   Michael Witbrock
  594. +   Tero Manninen
  595. +   Alan Bair
  596. +   Hugh D. Gamble
  597. +   Tapio Heiskanen
  598. +   Teddy Wang
  599. +   Richard McGowen
  600. +   Keith Hanlan
  601. +   Carsten Heyl
  602. +   Anders Lindgren
  603. +   Michel Schinz
  604. +   Hans-Joachim Widmaier
  605. +   Michael Kaiser
  606. + Please send any bug reports, enhancement requests, etc to:
  607. + Post:                E-mail:
  608. + David Gay            dgay@di.epfl.ch
  609. + 19 Chemin de la Source
  610. + CH-1296 Coppet
  611. + Vaud
  612. + Switzerland
  613. + 8. Ordering Information
  614. + -----------------------
  615. + I can provide a complete copy of my development directory, which
  616. + includes:
  617. + o the standard emacs-18.59 files
  618. + o modified and new lisp files
  619. + o Amiga-specific source, as text and in RCS format (highlighting the
  620. + changes from a standard unix distribution, and the different versions).
  621. + o assorted lisp packages hacked for the Amiga (I will be posting some
  622. + of these in due course):
  623. +   - a tags-like access to the 2.0 autodocs (you must already have a
  624. +     copy of these ...)
  625. +   - gnus (a news reader) for use with Matt Dillon's uucp package. 
  626. +   - getris, a tetris clone for emacs
  627. + All these as a tar file on a QIC-150 tape, for $200 (the same price as
  628. + the FSF, so as not to undercut them), or 300SF. This price is valid
  629. + until the 31st December 1993, and includes shipping by surface mail.
  630. + Please send all orders, by postal mail, to
  631. +   David Gay
  632. +   19 Chemin de la Source
  633. +   CH-1296 Coppet
  634. +   Vaud
  635. +   Switzerland
  636. +   Tel: +(41)-22 776 35 81 [Evenings, Central European Time]
  637. +   Fax: +(41)-22 776 70 58
  638. + Include with your order:
  639. + - A cheque, in dollars or Swiss francs.
  640. + - Your *complete* address (don't forget the country, etc).
  641. + - A phone or fax number so I can contact you if I have any problems.
  642. + I will be glad to include, on request, and with full source, some
  643. + other pieces of software I have written:
  644. + - An HP11 calculator (this is an update to the version available on
  645. + fish disks, with some bug fixes and 2.0 specific features).
  646. + - A scheme compiler for the Amiga, still in an alpha state.
  647. + - A fortune cookie program, including 1 megabyte of cookies (merged
  648. + from various sources).
  649. + Dvaid Gay
  650. + dgay@di.epfl.ch
  651. + Ecole Polytechnique Federale de Lausanne - Switzerland
  652. + Laboratoire d'Informatique Technique
  653. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/announce1.28 emacs-18.59/amiga/amiga-extra/amiga/announce1.28
  654. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/announce1.28    Thu Jan  1 00:00:00 1970
  655. --- emacs-18.59/amiga/amiga-extra/amiga/announce1.28    Thu Sep 30 19:48:52 1993
  656. ***************
  657. *** 0 ****
  658. --- 1,39 ----
  659. + GNU Emacs 18.59, Amiga RELEASE 1.28
  660. + -----------------------------------
  661. + Emacs is a very powerful, but sometimes cryptic, text editor. Its basic
  662. + features are similar to those of the MEmacs editor which comes with 
  663. + AmigaDOS (in the Tools directory), but has numerous other facilities:
  664. + - unlimited undo.
  665. + - language specific editing, with automatic (re)indentation.
  666. + - a dialect of lisp as extension language, leading to extreme 
  667. +   reconfigurability.
  668. + - abbreviations for commonly typed words.
  669. + - complete on-line manual.
  670. + - powerful search & replace facilities (including wildcards).
  671. + In this Amiga version, I have tried to make it easier to use with menus, 
  672. + mouse, clipboard, rexx and workbench support.
  673. + This version (1.28) is an update on version 1.26. It tracks the update
  674. + from GNU Emacs 18.58 to 18.59.
  675. + System requirements:
  676. + - AmigaDOS 2.04
  677. + - At least 2MB of memory (emacs uses about 750k + memory for the files
  678. +   being edited).
  679. + - 2.5MB of free disk space for the binary version, 8MB for the 
  680. +   source version (but you can remove some of the files once it has been
  681. +   installed).
  682. + - Emacs works with a 68000 (A500,A2000), but is a bit slow. It is very
  683. +   pleasant to use with a 68030/25MHz ...
  684. + This port was originally based on that of Mark Henning (gnuemacs
  685. + v1.10), but after having made rather extensive modifications, added
  686. + numerous features and updated it to Emacs 18.59, I decided to
  687. + release it myself. 
  688. + David Gay
  689. + dgay@di.epfl.ch
  690. + Ecole Polytechnique Federale de Lausanne, Switzerland.
  691. + Laboratoire d'Informatique Technique.
  692. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/emacs emacs-18.59/amiga/amiga-extra/amiga/c/emacs
  693. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/emacs    Thu Jan  1 00:00:00 1970
  694. --- emacs-18.59/amiga/amiga-extra/amiga/c/emacs    Sun May  9 18:16:16 1993
  695. ***************
  696. *** 0 ****
  697. --- 1,26 ----
  698. + .key a1,a2,a3,a4,a5,a6,a7,a8,a9
  699. + .bra {                                       
  700. + .ket }   
  701. + ; Startup script for GNU Emacs                                    
  702. + ; Make sure the FIFO handler is ready        
  703. + assign >NIL: FIFO: exists                    
  704. + if warn                                      
  705. +   if exists L:fifo-handler                   
  706. +     echo "Starting fifo-handler"             
  707. +     run <NIL: >NIL: L:fifo-handler           
  708. +   else                                       
  709. +     echo "Cannot find L:fifo-handler."       
  710. +     echo "External processes will not work." 
  711. +   endif                                      
  712. + endif                                        
  713. + ; Increase the stack size as needed          
  714. + set stack=`getstack`
  715. + if not $stack gt 40000 val
  716. +   stack 40000
  717. + endif
  718. + ; Invoke GNU Emacs
  719. + run gnuemacs:temacs {a1} {a2} {a3} {a4} {a5} {a6} {a7} {a8} {a9}
  720. + ; Restore the previous stack size                                       
  721. + stack $stack
  722. + unset stack
  723. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/etags.uue emacs-18.59/amiga/amiga-extra/amiga/c/etags.uue
  724. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/etags.uue    Thu Jan  1 00:00:00 1970
  725. --- emacs-18.59/amiga/amiga-extra/amiga/c/etags.uue    Tue Jul 12 10:34:45 1994
  726. ***************
  727. *** 0 ****
  728. --- 1,610 ----
  729. + begin 666 etags
  730. + M```#\P`````````"``````````$``!B&```"^P```^D``!B&2.=^_B1()`!)
  731. + M^0`````L>``$1_D```=`<@`@/````2M@`B;!4<C__"E/!W`I3@=H)FX!%"`K
  732. + M`*QG#.6(($`@*``TY8A@!B`/D*L`.B(/DH`&@0```(`I00=$L*P&B&14("P&
  733. + MB`:`````@"E`!Y`B/``!``%.KO\Z2H!G``'2*4`'C"(`!H````"`*4`'1-"L
  734. + M!H@,;@`D`!1M&"E`!X@I00>$DJP'D$'L!X`@@4ZN_21@`BY`0JP';'``(CP`
  735. + M`#``3J[^SB9N`11#^@&*<`!.KOW8*4`+Y&8&<&1@``#F*6L`F`=D2JL`K&<`
  736. + M`'X@:P"LT<C1R")H`!#3R=/)(`)R`!(9*4D'=-"!7H`"0/_\*4`'?$CG0$`B
  737. + M/``!``%.KO\Z3-\"`DJ`9@AP%"\`9P`!%B!`*4`'>"`"4X#4@1&R```@`E."
  738. + M4<C_]A&\`"`@`E."$;P`(B`"$;$@`"`!4<K_^!"\`"(O"&!*0>L`7$ZN_H!!
  739. + MZP!<3J[^C"E`!VPO`"1`("H`)&<8+&P+Y"!`(B@``$ZN_Z`I0`=D(@!.KO^"
  740. + M(&P';"\(2&P'0"!H`"0I:``$!W1.ND=P3KHRNG``8`0@+P`$)&P'<"4`+'@`
  741. + M!`QN`"0`%&T22JP'@&<,0>P'@%FL!XA.KOTD+DH@+`=<9P0@0$Z03KI'2$ZZ
  742. + M1UP@+`>09PPB;`>,+'@`!$ZN_RY*K`=L9R`L;`OD(BP'9&<$3J[_IBQX``1.
  743. + MKO]\(FP';$ZN_H9@$BQX``0@+`=\9P@B;`=X3J[_+B)L"^1.KOYB(!],WW]^
  744. + M3G5D;W,N;&EB<F%R>0`@#Y!\`'2PK`=$90!*^)[\`&1(YP<4+B\`?"IO`(!Z
  745. + M`"E5"B9P`2E``#IP`;Z`;P`!$B!M``1R+;(09@`!!BP`(&T`!")(T\9*$6<`
  746. + M`.[1QA`02(!(P')"D(%G-EF`9T!R&Y"!9TA9@&=,4X!G3G(.D(%G``"44X!G
  747. + M``"44X!G``">4X!G``"24X!G``"@8```N!E\`#\`!$*L`#I@``"6&7P`+P`$
  748. + M0JP`.F```(A2K``B8```@%*L`#I@>$J%;Q8O+`HF2'H#&DAL!M!.NE#@3^\`
  749. + M#&!R4H53AUB-<`&^@&\((&T`!$H09A8O+`HF2'H#%$AL!M!.NE"V3^\`#&!(
  750. + M*6T`!``&8#)2K``F8"92K``J0JP`.F`<4JP`+F`64JP`,E*L`#9"K``Z8`A2
  751. + MK``V0JP`.E*&8`#_"%.'6(U@`/[J<`&^@&X<+RP*)DAZ`N)(;`;03KI06$AX
  752. + M``%.ND]Z3^\`$$JL``9F$D'Z`OA*K``Z9P1!^@+H*4@`!F$`!6!(;`HV80`@
  753. + MYDAL"CYA`"#>4$]*K``Z9T1!^@+22JP`(F<$0?H"QB\(+RP`!DZZ5_I03RE`
  754. + M"BYF)"\L"B9(>@*P2&P&T$ZZ3^@NK``&3KHD\DAX``%.ND\"3^\`$'`!*4``
  755. + M'B`L`!ZPAVQ,(@#E@29U&``O"V$`!=!83TJL`#IG,"\L"C)A``\6+H`O"TAZ
  756. + M`F8O+`HN3KI/F"ZL"C)A``KZ+JP*,F$`">I/[P`00JP*,E*L`!Y@K$JL`#IG
  757. + M$"\L"BY.NE7"0I=.NDZ06$]*K``V9Q`O+`HR80`*P$*73KI.>EA/2JP`*F=&
  758. + M?`&\AVP\2'H"#B\L``9.NC[X(`;E@"ZU"``O+``&2'H!_$AO`"1.NDZP2&\`
  759. + M*$ZZ38A(>@'B3KHHW$_O`!Q2AF#`4JP`(D'Z`;Q*K``B9P1!^@&P+P@O+``&
  760. + M3KI6Y%!/*4`*+F8D+RP`!DAZ`9I(;`;03KI.TBZL``9.NB/<2'@``4ZZ3>Q/
  761. + M[P`0+RP*,F$`"B`NK`HN3KI5!%A/2JP`*F<@(&P`!B\(+PA(>@&*2&\`($ZZ
  762. + M3B1(;P`D3KI,_$_O`!1"ITZZ3:I83TS?*.#>_`!D3G4@#`D*```@"0HB)R,H
  763. + M*5M=>WT]+2LE*B\F?%Y^(3P^.RPN.C\``$%"0T1%1D=(24I+3$U.3U!14E-4
  764. + M55976%E:7V%B8V1E9F=H:6IK;&UN;W!Q<G-T=79W>'EZ)```04)#1$5&1TA)
  765. + M2DM,34Y/4%%24U155E=865I?86)C9&5F9VAI:FML;6YO<'%R<W1U=G=X>7HD
  766. + M,#$R,S0U-C<X.0``+#L``"5S.B`M9B!F;&%G(&UA>2!O;FQY(&)E(&=I=F5N
  767. + M(&]N8V4*`"5S.B`M9B!F;&%G(&UU<W0@8F4@9F]L;&]W960@8GD@82!F:6QE
  768. + M;F%M90H`57-A9V4Z("5S(%LM0D9A971U=W9X72!;+68@;W5T9FEL95T@9FEL
  769. + M92`N+BX*`%1!1U,``'1A9W,``&$`=P`E<SH@```,"B5S+"5D"@``3U1!1U,`
  770. + M96=R97`@/B5S("UV("<))7,))R!/5$%'4P!C.G-O<G0@9G)O;2`E<R!T;R`E
  771. + M<P``<@!T97@`875X`&)B;`!L`&5L``!L<W``;&ES<```8VP``&-L:7-P`'-M
  772. + M``!S8VT`<V-H96UE``!T`'-C:`!330``4T--`"5S.B!T;V\@;6%N>2!E;G1R
  773. + M:65S('1O('-O<G0*`&UA:6X``$T````E<R0`)2XU,',`)7,Z($1U<&QI8V%T
  774. + M92!E;G1R>2!I;B!F:6QE("5S+"!L:6YE("5D.B`E<PH``%-E8V]N9"!E;G1R
  775. + M>2!I9VYO<F5D"@`E<SH@1'5P;&EC871E(&5N=')Y(&EN(&9I;&5S("5S(&%N
  776. + M9"`E<SH@)7,@*%=A<FYI;F<@;VYL>2D*```E<R5C)60L)60*```E<PDE<PD`
  777. + M`"5D```E<R`E<R`E9`H`)2TQ-G,E-&0@)2TQ-G,@)7,*``!D969I;F4``'1Y
  778. + M<&5D968`<W1R=6-T``!U;FEO;@!E;G5M``!$148`:6YT96=E<@!R96%L``!L
  779. + M;V=I8V%L`&-O;7!L97@`8VAA<F%C=&5R`&1O=6)L90``<')E8VES:6]N`&9U
  780. + M;F-T:6]N``!S=6)R;W5T:6YE``!P<F]G<F%M`'!R;V-E9'5R90`Z8VAA<'1E
  781. + M<CIS96-T:6]N.G-U8G-E8W1I;VXZ<W5B<W5B<V5C=&EO;CIE<6YO.FQA8F5L
  782. + M.G)E9CIC:71E.F)I8FET96TZ='EP96]U=`!415A404=3``H`=FER='5A;"!M
  783. + M96UO<GD@97AH875S=&5D``"_[`=$90!$($CG`01^`'!_OH!L,'``0>P)%A&`
  784. + M>`!![`B7$8!X`$'L"!@1@'@`0>P'F1&`>`!![`F5$;P``7@`4H=@RBIL``H0
  785. + M%6<2$@!(@4'L!YD1O``!$`!2C6#J*FP`#A`59Q(2`$B!0>P(&!&\``$0`%*-
  786. + M8.HJ;``6$!5G$A(`2(%![`B7$;P``1``4HU@ZBIL`!(0%6<2$@!(@4'L"181
  787. + MO``!$`!2C6#J*FP`&A`59Q`2`$B!0>P)E4(P$`!2C6#L&6P'HP>9&6P((@@8
  788. + M&6P)(`D6&6P(H0B7&6P)GPF53-\@@$YU(`^0?``,L*P'1&4`0S)(YP`4*F\`
  789. + M#$AZ_-8O#4ZZ4<103RE`"BIF'B\L"B9(>OQZ2&P&T$ZZ2;(NC4ZZ'KY/[P`,
  790. + M8``"7"\-80`;3BE`"B)(>``N+PUA`!NF3^\`#"9`(`MG4D'K``%(>OR&+PA.
  791. + MND,B4$]*@&<H0>L``4AZ_'8O"$ZZ0PY03TJ`9Q1!ZP`!2'K\9B\(3KI"^E!/
  792. + M2H!F%B\L"BIA`!:4+JP**DZZ3Y!83V```>P@"V<``)!!ZP`!2'K\.B\(3KI"
  793. + MRE!/2H!G9$'K``%(>OPH+PA.ND*V4$]*@&=00>L``4AZ_!@O"$ZZ0J)03TJ`
  794. + M9SQ!ZP`!2'K\""\(3KI"CE!/2H!G*$'K``%(>OOZ+PA.ND)Z4$]*@&<40>L`
  795. + M`4AZ^^HO"$ZZ0F903TJ`9A8O+`HJ80`2L"ZL"BI.ND[\6$]@``%8(`MG``#Z
  796. + M0>L``4AZ^\`O"$ZZ0C903TJ`9P``T$'K``%(>ONN+PA.ND(@4$]*@&<``+I!
  797. + MZP`!2'K[G"\(3KI""E!/2H!G``"D0>L``4AZ^XXO"$ZZ0?103TJ`9P``CD'K
  798. + M``%(>OMZ+PA.ND'>4$]*@&=X0>L``4AZ^VHO"$ZZ0<I03TJ`9V1!ZP`!2'K[
  799. + M6B\(3KI!ME!/2H!G4'!ML"O__V8@<&.P*__^9AAP<[`K__UF$$'K``$O"&$`
  800. + M`*)83TJ`9BAP3;`K__]F-'!#L"O__F8L<%.P*__]9B1!ZP`!+PAA``!Z6$]*
  801. + M@&<4+RP**F$`$O@NK`HJ3KI-_%A/8%@@"V=&$"L``7)CL`%G/')HL`%G-G)Y
  802. + ML`%G,$HK``)F*B\L"BIA``W@6$]*@&<,+RP**DZZ3<)83V`>0J="IR\L"BI.
  803. + MNDLJ3^\`#&$`!S0O+`HJ3KI-HEA/3-\H`$YUO^P'1&4`0)(O#2IO``@0%6<0
  804. + M<C"P`6T&<CFP`6_P<`!@`G`!*E].=2`/D'P`1+"L!T1E`$!DGOP`.$CG#Q0H
  805. + M+P!H*B\`9"PO`&`>+P!;2'@`($ZZ0PQ83R9`(`MF,B\L"B9(>OHJ2&P&T$ZZ
  806. + M1M8NK`HR80`"."ZL"C)A``$H0JP*,DAX`"!A`!HV3^\`$"9`2JP`.F9J2JP`
  807. + M-F9D2'KZ#B\O`%A.ND!&4$]*@&922'@`+R\L"B)A`!B@4$\J0$J`9@8J;`HB
  808. + M8`)2C4AZ^>@O#4AZ^>!A`!E<2'@`+B\`+T``8&$`&'1/[P`4*D`@#6<(2BT`
  809. + M`F8"0A4@;P!,+T@`5"\O`%1A`!?L6$\F@"=L"B(`!!='``@G10`*)T0`#I'(
  810. + M)T@`'"=(`!A*K``Z9PHB;P!<0C%H`&`Z2JP`-F8T+R\`7$ZZ/V183W(RL(%L
  811. + M!D'Z^69@!$'Z^60O+P!<+PA(;P`A3KI%<$_O``Q![P`9+T@`7"\O`%QA`!=Z
  812. + M6$\G0``22JP*,F8(($LI2`HR8`PO+`HR+PMA```^4$],WRCPWOP`.$YU(`]9
  813. + M0+"L!T1E`#[J+PTJ;P`((`UG%B\M`!QAY"Z-3KI`,%A/($TJ:``88.8J7TYU
  814. + M(`^0?``8L*P'1&4`/KA(YP$4)F\`%"IO`!`O$R\53KH^^%!/+@!*K``Z9G1*
  815. + MAV9P(&T`!")K``2SR&8R2JP`+F8``)`O%2\L"A8O""\L"B9(>OB:2&P&T$ZZ
  816. + M111(>OB\2&P&T$ZZ10A/[P`@8&1**P`69B1*K``N9AXO%2\K``0O+0`$+RP*
  817. + M)DAZ^*9(;`;03KI$W$_O`!@7?``!`!9@,DJ':A@@*P`89PPO`"\-80#_4%!/
  818. + M8!PG30`88!8@*P`<9PPO`"\-80#_.%!/8`0G30`<3-\H@$YU(`^0?``8L*P'
  819. + M1&4`/>!(YR`4*F\`$"`-9P`#Y"\M`!AAWEA/2JP`.F<D+RT`#B\M``I(>`!_
  820. + M+RT`$DAZ^%@O+`HN3KI$4D_O`!A@``.H2JP`-F8``U8O+0`$+Q5(>OA"+RP*
  821. + M+DZZ1#!/[P`02BT`"&<``K`@;`HN""@``0`;9W!2J``,(&P*+B`H``RPJ``4
  822. + M;CXB2"!I``12J0`$$"P`!!"`<@JP`68>(&P*+@@H``8`&V<2+PA.NDE@6$\0
  823. + M+``$<@`2`&`($"P`!'(`$@!@'B!L"BY3J``,$"P`!$B`2,`O+`HN+P!.ND00
  824. + M4$\B`&`6$"P`!$B`2,`O+`HN+P!.ND/X4$\B`"!L"BX(*``!`!MG6E*H``P@
  825. + M;`HN("@`#+"H`!1N,")((&D`!%*I``1P7A"`<@JP`688(&P*+@@H``8`&V<,
  826. + M+PA.NDC06$]P7F`"<%Y@%B!L"BY3J``,+RP*+DAX`%Y.ND.24$]@#B\L"BY(
  827. + M>`!>3KI#@E!/)FT`$A`39P`!#G)<L`%G"!0L``2P`F9P(&P*+@@H``$`&V=6
  828. + M4J@`#"!L"BX@*``,L*@`%&XL(F@`!%*H``02@7`*L@!F&"!L"BX(*``&`!MG
  829. + M#"\(3KI(2%A/<%Q@`G!<8!8@;`HN4Z@`#"\L"BY(>`!<3KI#"E!/8`XO+`HN
  830. + M2'@`7$ZZ0OI03R!L"BX(*``!`!MG:%*H``P@;`HN("@`#+"H`!1N.")((&D`
  831. + M!%*I``00$Q"`<@JP`68<(&P*+@@H``8`&V<0+PA.ND?46$\0$W(`$@!@!A`3
  832. + M<@`2`&`<(&P*+E.H``P0$TB`2,`O+`HN+P!.ND**4$\B`&`4$!-(@$C`+RP*
  833. + M+B\`3KI"=%!/(@!2BV``_O`@;`HN""@``0`;9VY2J``,(&P*+B`H``RPJ``4
  834. + M;CPB:``$4J@`!!`L``02@'(*L`%F'B!L"BX(*``&`!MG$B\(3KI'1EA/$"P`
  835. + M!'(`$@!@"!`L``1R`!(`8!X@;`HN4Z@`#!`L``1(@$C`+RP*+B\`3KI!]E!/
  836. + M(@!@+!`L``1(@$C`+RP*+B\`3KI!WE!/(@!@%"\M``I(>O6`+RP*+DZZ069/
  837. + M[P`,(&P*+@@H``$`&V=84J@`#"!L"BX@*``,L*@`%&XN(D@@:0`$4JD`!'`*
  838. + M$("P`&88(&P*+@@H``8`&V<,+PA.ND:B6$]P"F`"<`I@%B!L"BY3J``,+RP*
  839. + M+DAX``I.ND%D4$]@6B\L"BY(>``*3KI!5%!/8$I*K``R9R9P/]"M``IR0$ZZ
  840. + M.3XO`"\M``0O%4AZ].9(;`:N3KI`R$_O`!1@'B\M`!(O+0`$+RT`"B\52'KT
  841. + MT$AL!JY.ND"H3^\`&"\M`!QA`/P&6$],WR@$3G4@#UE`L*P'1&4`.=Y(YP,$
  842. + M*F\`$'X`(`UG4B\M`!AAX"X`+JT`'&'8WH`NK0`23KHYR%A/5H#>@"PM``I*
  843. + MAF<.4H<@!G(*3KHXK"P`8.XL+0`.2H9F`E*'2H9G#E*'(`9R"DZZ.)`L`&#N
  844. + M(`=,WR#`3G4@#Y!\`CRPK`=$90`Y:I[\`B1(YR<T0JP*%D*L"AHD;`HZ0A)"
  845. + MK`>4?``@!AH`(@4900>80J\"/$*L``!"+`H4'T``'Q]!`!X@;`HJ""@`!``;
  846. + M9@`"Z!X:2(=(QV8H*6P*&@H>4JP*%B\(2&P*-F$`$)903U*`T:P*&B1L"CI"
  847. + MK`>40BP'F'!<OH!F,!X:2(=(QV8B*6P*&@H>4JP*%B\L"BI(;`HV80`07E!/
  848. + M4H#1K`H:)&P*.GX@8``!'$H&9TYP*KZ`9@`!$!X:2(=(QW`JOH!F`F#R2H=F
  849. + M)BEL"AH*'E*L"A8O+`HJ2&P*-F$`$!A03U*`T:P*&B1L"CI"K`>4<"^^@&8`
  850. + M`-!\`&```,I*!6<.<"*^@&8`_S!Z`&``_RI*+P`?9Q!P)[Z`9@#_'$(O`!]@
  851. + M`/\4(`=R(I"!9QI3@&<V68!G&%&`9QYR3)"!9SY5@&=08```@'H!8`#^[!]\
  852. + M``$`'V``_N)P*K`29@#^VE**?`%@`/[2(&P*.E*(M<AF`/[&<`$I0`>48`#^
  853. + MO'`"L*P``&8&<`,I0```4J\"/&``_J8@;`HZ4HBUR&8(<``O0`(\8`13KP(\
  854. + M2J\"/&8`_HAP`["L``!F`/Y^<`0I0```8`#^="`O`CQF``%&2@5F``%`2@9F
  855. + M``$Z$BP'F$H!9@`!,$HO`!YG``$20>P(&$HP>`!G``#X(&P*.B(*)`&4K`HZ
  856. + M+TH`+"]L"A8`*"]L"AX`)"\`2&\`/"\-2&\`."]"`$`O2`!$80`!#$_O`!`D
  857. + M;P`L+T``(&<``*H@+P`D(BP*'K*`9U0O`&$``]P@+`I"D*\`."!-T<`@"R(-
  858. + MD(%2@"Z`+PA(;P!$3KHW;B`+(@V0@4'O`$G1P$(0+J\`,"\O`#0O`B\L"D(O
  859. + M+P!02&\`6&$`]F)/[P`@8$`@"R(-D(%2@"\`+P%(;P!$3KHW+"`+(@V0@4'O
  860. + M`$G1P$(0+J\`,"\O`#0O`B\L"CHO+P!02&\`6&$`]B!/[P`@("\`.!E`!YA"
  861. + M+P`>*DI3C6`D0>P(ETHP>`!G&E*+8!9![`D62C!X`&<,)DI3BRI+'WP``0`>
  862. + M<#N^@&8`_2!P!+"L``!F`/T60JP``&``_0Y,WRSDWOP")$YU(`^0?``0L*P'
  863. + M1&4`-B193TCG+Q0N+P`P*F\`)"95<`$@;P`L((`<*___>`!*K`>49D80!DB`
  864. + M0>P'F4HP``!G;AP;2@9F["!L"BH(*``$`!MF7"EL"AH*'E*L"A8O"$AL"C9A
  865. + M``U<4$]2@-&L"AHF;`HZ0JP'E&"Z4JP'E"`L!Y1R!+"!;!Q5@&8D2'@`!DAZ
  866. + M\'XO+P`P3KHUO$_O``Q*@&<,&7P``0>8>`%@``(H2JP`)F<T2'@`!TAZ\%PO
  867. + M+P`P3KHUDD_O``Q*@&8<(&\`*!`H``=(@$'L"!A*,```9PAP`2E```!@P'`!
  868. + ML*P``&8``)!(>``&2'KP)B\O`#!.NC543^\`#$J`9A0@;P`H$"@`!DB`0>P(
  869. + M&$HP``!F6$AX``5(>O`"+R\`,$ZZ-2A/[P`,2H!F%"!O`"@0*``%2(!![`@8
  870. + M2C```&8L2'@`!$AZ[]PO+P`P3KHT_$_O``Q*@&8>(&\`*!`H``1(@$'L"!A*
  871. + M,```9PIP`BE```!@`/\J<`*PK```9@IP`RE```!@`/\8<`&PK```9@IR!"E!
  872. + M``!@`/\&<@.RK```9@I*AV8&=`0I0@``=`2TK```9@X@;P`L0I`O0``<8``!
  873. + M"DJL!Y1F("\!2'KO7"\O`#!.NC1V3^\`#$J`9@IP`1E`"A1@`/ZX2BP*%&<.
  874. + M0BP*%'`!+T``'&```-!P*+P`9@#^G'H`'!MP*;P`9V)*!F8P(&P**@@H``0`
  875. + M&V92*6P*&@H>4JP*%B\(2&P*-F$`"X903U*`T:P*&B9L"CI"K`>4$`9(@$'L
  876. + M"19*,```9@9P+[P`9@12!6"L$`9(@$'L!YE*,```9IY*!6::8`#^,!P;$`9(
  877. + M@$'L!YE*,```9S9*!F;L(&P**@@H``0`&V8F*6P*&@H>4JP*%B\(2&P*-F$`
  878. + M"Q103U*`T:P*&B9L"CI"K`>48+H0!DB`0>P)E1(P``!(@4C!+T$`'"!+4X@J
  879. + MB$J$9@I*KP`<9P1P`6`"<`!,WRCT6$].=2`/D'P`#+"L!T1E`#,R2.<#`"XO
  880. + M``PO+`HJ3KH]"BP`0I<O!R\L"BI.NCV,+JP**DAL"CYA``J80I<O!B\L"BI.
  881. + MNCUT3^\`&$S?`,!.=2`/44"PK`=$90`RYB\-*F\`"$*L"A9"K`H:0JP*2@@M
  882. + M``0`&V8``<92K`H6*6P*&@H>+PU(;`HV80`*1E!/4H#1K`H:(&P*.BE("D80
  883. + M$'(EL`%F!%*L"D8@;`I&$!!(@$C`0^P%A0@Q``,(`&<&4JP*1F#D(&P*1A`0
  884. + M2@!GH$B`2,``0``@<F.0@6=64X!G=%N`9PQ7@&<V78!G'&```*Q(>NU480`!
  885. + M3EA/2H!G``"<80`!A&```)1(>NU$80`!-EA/2H!G``"$80`!;&!\2'KM-&$`
  886. + M`2!83TJ`9VYA``%88&A(>NTH80`!#%A/2H!F#DAZ[2)A``#^6$]*@&=,80`!
  887. + M-F!&2'KM&&$``.I83TJ`9S@@;`I&$!!(@$C`0^P%A0@Q``,(`&<&4JP*1F#D
  888. + M(&P*1A`02@!G`/[F2'KLZF$``+183TJ`9P#^UB!L"D80$$B`2,!#[`6%"#$`
  889. + M`P@`9P92K`I&8.0@;`I&$!!*`&<`_JY(@$C``$``(')FD(%G#G(*D(%G.%>`
  890. + M9QQ@`/Z22'KLH&$``&!83TJ`9P#^@F$``1Y@`/YZ2'KLDF$``$A83TJ`9P#^
  891. + M:F$``09@`/YB2'KLAF$``#!83TJ`9PAA``#P8`#^3$AZ['AA```:6$]*@&<`
  892. + M_CQA``#88`#^-"`L"DHJ7TYUO^P'1&4`,/9(YP$$*F\`#'X`$!5G&`(`_]\@
  893. + M;`I&T<=RW\(0L`%F!E*-4H=@Y$H59@C?K`I&<`%@`G``3-\@@$YUO^P'1&4`
  894. + M,+0@;`I&$!!(@$C`0^P%A0@Q``,(`&<&4JP*1F#D(&P*1A`0<BJP`6964JP*
  895. + M1B!L"D80$$B`2,!#[`6%"#$``P@`9P92K`I&8.0@;`I&$!!(@$C`0^P%A0@Q
  896. + M``((`&8&4ZP*1F`:4JP*1B!L"D80$$B`2,!![`6%"#```@@`9N9.=2`/D'P"
  897. + M&+"L!T1E`#`FGOP"`$CG`00@;`I&$!!(@$C`0^P%A0@Q``,(`&<&4JP*1F#D
  898. + M(&P*1A`02@!G``"82(!(P'(#0^P%A<(Q"`!*`68.$!!R7[`!9P9R)+`!9G9+
  899. + MZ``!$!5G,DB`2,!R`T'L!87",`@`2@%F'!`52(!(P`@P``((`&8.$!5R7[`!
  900. + M9P9R)+`!9@12C6#*'A5"%2\L"D9(;P`,3KHP)!J'(`V0K`HZ4H`NK`H>+RP*
  901. + M%B\`+RP*.DAX``%(;P`@80#N^%*L"DI/[P`<3-\@@-[\`@!.=2`/44"PK`=$
  902. + M90`O2B\-*F\`"$*L"A9"K`H:0JP*2@@M``0`&V8``*!2K`H6*6P*&@H>+PU(
  903. + M;`HV80`&JE!/4H#1K`H:*6P*.@I&(&P*1A`0<BBP`6;($"@``7)$L`%G!G)D
  904. + ML`%FN!`H``)R1;`!9P9R9;`!9J@0*``#<D:P`6<&<F:P`6:8(&P*1A`02(!(
  905. + MP$/L!84(,0`#"`!F!E*L"D9@Y"!L"D80$$B`2,!#[`6%"#$``P@`9P92K`I&
  906. + M8.1A```*8`#_6BI?3G4@#Y!\`ABPK`=$90`N?I[\`@!(YP$$(&P*1A`02@!G
  907. + M5$OH``$0%6<0<BBP`6<*<B"P`6<$4HU@[!X50A4O+`I&2&\`#$ZZ+MP:AR`-
  908. + MD*P*.E*`+JP*'B\L"A8O`"\L"CI(>``!2&\`(&$`[;!2K`I*3^\`'$S?((#>
  909. + M_`(`3G4@#U%`L*P'1&4`+@(O#2IO``A"K`H60JP*&D*L"DH(+0`$`!MF``%0
  910. + M4JP*%BEL"AH*'B\-2&P*-F$`!6)03U*`T:P*&BEL"CH*1B!L"D80$'(HL`%F
  911. + M=A`H``%R1+`!9P9R9+`!9F80*``"<D6P`6<&<F6P`696$"@``W)&L`%G!G)F
  912. + ML`%F1B!L"D80$$B`2,!#[`6%"#$``P@`9@92K`I&8.0@;`I&$!!G'DB`2,!#
  913. + M[`6%"#$``P@`9@@0$'(HL`%F!E*L"D9@VF$``+`@;`I&$!!R*+`!9@#_1A`H
  914. + M``%R4[`!9PAR<[`!9@#_-!`H``)R1;`!9PAR9;`!9@#_(A`H``-R5+`!9PAR
  915. + M=+`!9@#_$!`H``1R(;`!9P:P`68`_P`0*``%2(!(P$'L!84(,``#"`!G`/[J
  916. + M(&P*1A`02(!(P$/L!84(,0`#"`!F!E*L"D9@Y"!L"D80$$B`2,!#[`6%"#$`
  917. + M`P@`9P92K`I&8.1A```*8`#^JBI?3G4@#Y!\`ABPK`=$90`LAI[\`@!(YP$$
  918. + M(&P*1A`02@!G9$OH``$0%6<@<BBP`6<:<BFP`6<42(!(P$'L!84(,``#"`!F
  919. + M!%*-8-P>%4(5+RP*1DAO``Q.NBS4&H<@#9"L"CI2@"ZL"AXO+`H6+P`O+`HZ
  920. + M2'@``4AO`"!A`.NH4JP*2D_O`!Q,WR"`WOP"`$YU(`]10+"L!T1E`"OZ2.<A
  921. + M%"IO`!1"K`H60JP*&D*L"DHO#6$``*Y83TJL`#YF$B\L`$)(>N>&80`!5E!/
  922. + M*4``/@@M``0`&V8``(12K`H6*6P*&@H>+PU(;`HV80`#.%!/4H#1K`H:(&P*
  923. + M.BE("D8F2!`L`$9(@$C`+P`O+`I&80`$<E!/*4`*1F>V4JP*1B!L"D9*$&>J
  924. + M(`@B`"0+DH+3K`H>)D`O"V$``FY83RX`2H=KOB`'YX`@;``^T<`O*``$+PMA
  925. + M``'*4$]@`/]V3-\HA$YU(`^0?``,L*P'1&4`*R9(YP,$*F\`$'P`""T````;
  926. + M9RA3K0`(;18(+0`-`!YF#B!M``12K0`$<``0$&`(+PU.NC-R6$\N`&`*+PU.
  927. + MNC-F6$\N`"`'4H!G)'`EOH!F!'P!8+9P"KZ`9@1\`&"L2H9FJ'!<OH!G!G`A
  928. + MOH!FG'!<OH!F%!E\`%P`1AE\`'L`1QE\`'T`2&`2&7P`(0!&&7P`/`!'&7P`
  929. + M/@!(0J="IR\-3KHT^D_O``Q,WR#`3G4@#Y!\`!2PK`=$90`J:E%/2.<C%"\O
  930. + M`"!.NC`L6$\J0"`-9@8J;P`D8!1(>N1F+R\`*"\-80`#VD_O``PJ0'X!)DT@
  931. + M"V<>2'@`.B\+80`#%E!/)D`@2R`(9^A2BTH39^)2AV#>(`=2@"(`YX$O`6$`
  932. + M!"Q83WP`+T``&$H59W9(>``Z+PUA``+>4$\F0"`+9@PO#4ZZ*?)83R9-U\`@
  933. + M"R(-D(%*@&\T)`;G@B\`+P%A``)&(&\`("&`*``@!N>`+K`(`"]``!Q.NBF^
  934. + M4$\@;P`8(B\`%"&`&`12ADH39P9+ZP`!8)8@!N>`(&\`&$*P"`!"L`@$("\`
  935. + M&$S?*,103TYU(`^0?`(8L*P'1&4`*6J>_`(`2.<!%"XO`A0J;P(0)DW7QTH5
  936. + M9U@0$V<*L"P`2&<$4HM@\B`+(@V0@2\`+P%(;P`43KHIIB`+(@V0@4'O`!C1
  937. + MP$(0+JP*.DZZ*2PNK`H>+RP*%B\`+RP*.DAX``%(;P`H80#HDE*L"DI/[P`@
  938. + M3-\H@-[\`@!.=2`/D'P`#+"L!T1E`"CB2.<!!"IO``Q^`"`'YX`@;``^(DC3
  939. + MP"`I``1*@&\B(`?G@-'`+R@`!"\-+Q!.NBC63^\`#$J`9@0@!V`&4H=@RG#_
  940. + M3-\@@$YU(`]90+"L!T1E`"B.+PTJ;P`(<&30@"J`+P!A``*B*T``!%A/*E].
  941. + M=2`/D'P`#+"L!T1E`"AD64](YP$V*F\`(")O`!P@:0`$)D@B2RQO`!S3UB1)
  942. + M+T@`%`@M````&V<H4ZT`"&T6""T`#0`>9@X@;0`$4JT`!'``$!!@""\-3KHP
  943. + MF%A/+@!@"B\-3KHPC%A/+@"WRF8X(&\`'"`0(@#2@2"!+P$O+P`880`"2E!/
  944. + M(@`@;P`<DJ@`!-?!($`B0"QO`!S3UB1)+4``!"]``!1*AVL&<`J^@&8$0A-@
  945. + M""`'%L!@`/]V(`N0KP`43-]L@%A/3G4@#U%`L*P'1&4`)YPO#2IO``@O#4ZZ
  946. + M)Z`N@"\-80``"%!/*E].=2`/D'P`#+"L!T1E`"=T2.<!%"XO`!0J;P`0(`=2
  947. + M@"\`80`!A"9`+H<O#2\+3KHGQD(S>`!/[P`,(`M,WRB`3G6_[`=$90`G.DCG
  948. + M`10>+P`7*F\`$)?+$!6P!V8")DT@35*-2A!F\"`+3-\H@$YUO^P'1&4`)PQ(
  949. + MYP$$'B\`$RIO``P0%;`'9@0@#6`*($U2C4H09NYP`$S?((!.=2`/44"PK`=$
  950. + M90`FVDCG`!0F;P`0*F\`#"\++PUA```42'@``4ZZ+))/[P`,3-\H`$YU(`^0
  951. + M?``,L*P'1&4`)J9(YP`4)F\`$"IO``PO+`HF2'K?_$AL!M!.NBTT+HLO#4AL
  952. + M!M!.NBTH2'KB.$AL!M!.NBT<3^\`'$S?*`!.=2`/D'P`#+"L!T1E`"9:64](
  953. + MYP<4)F\`("IO`!PO#4ZZ)E8N`"Z+3KHF3BP`+J\`*$ZZ)D0J`"`'T(;0A5*`
  954. + M+H!A``!*+HTO`"]``!Q.NB:P(&\`'-''+HLO"$ZZ)J(@;P`@T<?1QBZO`#`O
  955. + M"$ZZ)I`@;P`D(DC3Q]/&T\5"$4_O`!`@"$S?*.!83TYU(`]10+"L!T1E`"70
  956. + M2.<#`"XO``PO!TZZ*(I83RP`2H9F#$*G2'KA=&$`_LQ03R`&3-\`P$YU(`]1
  957. + M0+"L!T1E`"6:2.<#!"XO`!0J;P`0+P<O#4ZZ)EI03RP`2H9F"DAZX3IA`/Z2
  958. + M6$\@!DS?(,!.=0``2.<@,B!O`!A#[P`<1?H`'"9O`!0D"RQY````!$ZN_?8@
  959. + M"Y""3-],!$YU%L!.=0``(&\`!")O``A93TCG,S8J2'X`(&P+>"PH`.`O20`@
  960. + M2H9F($JL!VQF&D'L`&0B""0\```#[2QL"^1.KO_B+`!G`GX!2H9G-B(&0>P`
  961. + M;B0(0>P'="8(+&P+Y$ZN_IXB!B0-)B\`($ZN_IXB!G0*3J[^R$J'9U@B!DZN
  962. + M_]Q@4"!L"W@F:`"X,'S__[?(9T!#[`!T<"4L>``$3J[]V"1`2H!G+"EL!W0`
  963. + M6"E-`%PO"B!++$I#[`!0E<HF;P`D3J[]M$S?!``B2BQX``1.KOYB3-]LS%A/
  964. + M3G4@;P`$0^\`"&``_RH@;P`$0^\`"&$`_QYP%$[Z*B```"!O``2>_`!42.<X
  965. + M%BI((`UG)$H59R`@34H89OQ3B)'-(@AP`B!-3KH;IG`"(@!![`"(3KH;FB`L
  966. + M"YQO$K"L!6)N#.6`0>P$QB9P"`!@+%*`9B0B+`=(=`!![P`;)@AX42QL"^1.
  967. + MKOXL2D!G!"9#8`I'[`",8`1'[`"0($M*&&;\4XB1RR((<`(@2TZZ&T)P`G(!
  968. + M0>P`I$ZZ&S9,WV@<WOP`5$YU2.<`!G`(<@`L>``$3J[_.BI`2H!F!'``8"Y"
  969. + MK0`$2'@`*'``+P!R`4'L`*B3R<%!3KH>CE!/*H!F#")-<`A.KO\N<`!@`B`-
  970. + M3-]@`$YU(&\`!$CG``8J2"`-9Q@@36$``!X@54ZZ'M(B37`(+'@`!$ZN_RY,
  971. + MWV``3G4@;P`$2.<`!BI(2JT`!&<4(E4L>``$3J[^(")53J[^)D*M``1,WV``
  972. + M3G4@;P`$(%`B:``.<``0*0`/<@'AH2`!3G4@;P`$("\`""(O``Q(YP,&+`$N
  973. + M`"I(8:I*AV8$2H9G'B)5(T<`("-&`"0S?``)`!PL>``$3J[^,G`!*T``!$S?
  974. + M8,!.=2!O``1(YP`&*DA*K0`$9QPB52QX``1.KOXL2D!G#B)53J[^)D*M``1P
  975. + M`6`"<`!,WV``3G4O#B`L"X0B`$A!0D'2@"`L"WBS@"E`"E1"K`I80^P`O'``
  976. + M+'@`!$ZN_=@I0`I0</].KOZV2(!(P"E``+A*K`I09PA*@&L$<`%@`G``*4`*
  977. + M7"Q?3G4O#B`L`+AK""QX``1.KOZP("P*4&<*(D`L>``$3J[^8BQ?3G4@+P`$
  978. + M44](YP,`+@!.N@4H(`=.N@&02H!G*")`(&D`'')`Y8G"D2](``P@`2!I``0B
  979. + M;P`,3I$L`"`'3KH!2"`&8`)P_TS?`,!03TYU("\`!"\'+A]@K@``(&\`!"`O
  980. + M``@B;P`,+V\`$``$+V\`%``(+V\`&``,+V\`'``0+V\`(``4+V\`)``844](
  981. + MYP<4+@!([P,``!1\`"IL"F!@%DJM``1F"C!\``$K2``$8`Q2AMK\`"2\K`ID
  982. + M;>0@+`IDO(!F>'(*TZP*9"`L"F0B`.>!TH#E@2`!3KHCZ"I`2H!F#'`,*4`+
  983. + MG'#_8```CG#VT*P*9"(`YX'2@.6!(&P*8")-8`(2V%.!9/H@+`I@9P8@0$ZZ
  984. + M(D(I30I@>O;:K`ID(`7G@-"%Y8#;P)?+*TL`!%*%VOP`)+JL"F1M\"`&YX#0
  985. + MAN6`(&P*8"&O`!0(!"&'"``AKP`8"`A+[P`@(9T(#"&="!`AG0@42^\`+"&=
  986. + M"!@AG0@<(9T(("`&3-\HX%!/3G4@+P`$(@!K%K*L"F1L$"`!YX#0@>6`(&P*
  987. + M8$*P"`1.=2`O``1(YP$$+@!K'KZL"F1L&"`'YX#0A^6`*FP*8-O`2JT`!&<$
  988. + M(`U@"'`)*4`+G'``3-\@@$YU("P*9$YU```@+P`$64\N@$'L`-`@"%A/3G4@
  989. + M;P`$64\NB$'L`-`@"%A/3G4@+`#03G4``"!O``193TCG(P(B"'3^+&P+Y$ZN
  990. + M_ZPO0``09SHN+`N<3KK_JBP`8!Y(;P`02'@(!2\&3KH-!$_O``Q*@&8(*4<+
  991. + MG'``8!)3AFS>(B\`$"QL"^1.KO^F</],WT#$6$].=2!O``1(YR$&*DA.N@*^
  992. + M(@TL;`OD3J[_N$J`9P1P`&!03J[_?"X`<F_2@;"!9B`B#70`3J[_1DJ`9PXB
  993. + M#4ZN_[A*@&<$(`)@*$ZN_WPN`'!ET("^@&8.($UA`/]*2H!F!'``8`P@!TZZ
  994. + M&`PI0`N<</],WV"$3G4``"`O``193RZ`("P+=&<.($!.NOQB2H!G!'(!8`)R
  995. + M`"`!6$].=2`O``1R`"!L"W1.^OP(3KK[/"E`"W1F"DAL`/!.NOIV6$\@;`MT
  996. + M3KK[S(&L"FA.=2!L"W1.^OMH".P`#`IJ3G4@+P`$"```#%;`1`!(@$C`3G4(
  997. + M[``-"FI.=2`O``0(```-5L!$`$B`2,!.=4ZZ&,)P`"!L"]00*``/<@'AH8.L
  998. + M"FA.=4[Z&10@+P`$64](YP$6+T``$'X`8"X@+0`43KH8:B9`2H!G%$JK`!1F
  999. + M#GX!<`$G0``4)VT`&``8(DUP'"QX``1.KO\N(&P+U"QX``1.KOZ,*D!*@&;`
  1000. + M(`=,WVB`6$].=2`O``1(YP\$+@!P`>^@+`!P";Z`9@9P`$ZZ"Q`@+`MLP(9G
  1001. + M!HVL"W!@>BH&1H7+K`MP2H=K9G`@OH!L8"`'YX!![`IL*G`(`#!\``&[R&8L
  1002. + M(`=5@&<44X!G$'(-D(%G/%F`9SA1@&<T8`I(;`$(3KKY-%A/<`!.N@JR8"`@
  1003. + M#6<<(`?G@"@&0>P*;(BP"`2)K`ML(`=.E4:$R:P+;"`L"W#`AF:*3-\@\$YU
  1004. + M("\`!"\.(BP*:(*`<``L>``$3J[^SBQ?3G4@+P`$+PXB`"`L"FB`@2QX``1.
  1005. + MKO["+%].=2`O``1(YP,`+@!\`&$`_A!*@&<(?`%P#F$`_PP@!V$`_F)*@&<(
  1006. + M?`%P`F$`_OH@!V$`_FI*@&<(?`%P`V$`_N@@!V$`_H9*@&<(?`%P%&$`_M8@
  1007. + M!DS?`,!.=2`O``0O!RE`!TQP""X?8`#^O'``80#_8&"08/9(YP$4?@!+[`IL
  1008. + M-GP``2J+0JT`!%*'4(UP(+Z`;?!"K`MP0JP+;$*L"FAA`/W480#]ZF$`_:),
  1009. + MWRB`8`#]^&$`_;A@`/X(``!(;`$<3KKX#EA/3G4@+P`$+PU.NA\D*D!*@&8"
  1010. + M8>(@#2I?3G4@;P`$("\`""\+3KH=&"9`2H!F`F'&(`LF7TYU(&\`!"\-*D@@
  1011. + M#68$2^P!)B!-2AAF_%.(D<T@"%*`3KH>V"!`2H!F!'``8`@B2!+=9OP@""I?
  1012. + M3G593TCG`S1^`'P`(&P+>"9H`-!@+$HK``AF)#`\!0#`:P`.9AI2AR!K``H@
  1013. + M"$H89OQ3B)'`(`C<@-RK`!14AB932I-FT"`'4H#E@-"&80#_2BE`"Y#EAR!`
  1014. + M(D#3QT7I``0O0``49@I![`$8*4@+D&!6(&P+>"IH`-!@0DHM``AF.C`\!0#`
  1015. + M;0`.9C`F;0`*+BT`%"!O`!0@RB](`!1@`A3;2A-F^A3\`#TF;0`08`(4VR`'
  1016. + M4X=*@&;V0AHJ54J59KH@;P`40I!,WRS`6$].=2!O``0@+P`(+PTJ2"J`0JT`
  1017. + M!.6`80#^M"M```@J7TYU(&\`!")O``@@+P`,2.<B-"9)*DA*@&<*($MA`/["
  1018. + M)$!@`B1+(`IG/B(5)"T`!+2!;2(L`=R&=!#2@KR!;0(B!BJ!(`'E@"!M``A.
  1019. + MNAN6*T``"&<21^T`!"(34IOE@2!;(8H8`'`!3-\L1$YU(&\`!")O``@@+P`,
  1020. + M89)*@&8$80#^&DYU(&\`!")O``A(YP`4)DDJ2"`M``30JP`$L)5O$M"`*H#E
  1021. + M@"!M``AA`/X:*T``""(M``3E@2!M``C1P2`K``0B`.6!(FL`"&`"$-E3@63Z
  1022. + MT:T`!"!K``A,WR@`3OH;AB!O``0B;P`(+V\`#``$("\`$"(O`!193TCG`C0L
  1023. + M`2I))$@O2``02H!G1%.`9PI3@&<``+9@``#T4X9G(B`O`!@B#9"!(&\`$$(P
  1024. + M"``@02)O`!!@`A+84X!D^F```,Y![`$H(F\`$!+89OQ@``"^)F\`&&!N<%RP
  1025. + M%69F2BT``6=@5(UP`;R`9@84_`!A8%0@!E6`9D80+?__2(!(P'(CD(%G+E6`
  1026. + M9RI5@&<F4X!G(E.`9QY3@&<:<A60@6<4<AR0@6<.58!G"G(?D(%G!%6`9@04
  1027. + M_``G%.W__V`(%.W__V`"%-V[RV6.8$`F;P`88#9P*K`59BY*+0`!9RA4C1`M
  1028. + M__](@$C`<F60@6<,<@F0@68,%/P`"F`.%/P`&V`(%.W__V`"%-V[RV7&0A),
  1029. + MWRQ`6$].=9[\`2Q(YS\V*F\!6"!L!V@,:``E`!1D"DAX`!1.NLTN6$]"K`:H
  1030. + M<`$I0`:D*4`&RG`"*4`&QBE`!NPI?````(0&Z)/)+'@`!$ZN_MHI0`MX3KKU
  1031. + M`"E`"WQF"DAL`2I.NO0Z6$\@;`M\3KKUD"E`"X`L;`M\(%8L:``4*4X+C$'O
  1032. + M`3!.KO^^*6\!,`N$3KKU^$ZZ^ZP@;`MX("@`K&<0Y8`B0"(I`#3E@2E!"XA@
  1033. + M!BEH`(0+B$H59@``Z$'L`4(B""0\```#[BQL"^1.KO_B+`!![`%((@A.KO_B
  1034. + M+@!![`%.(@A.KO_B*@!*AF<(2H=G!$J%9B)*AF<&(@9.KO_<2H=G!B('3J[_
  1035. + MW$J%9P8B!4ZN_]QA`/MR<`$O`"\%+P`O!R(&P4%.N@VV(&P';"`H`!Q![P%8
  1036. + M80#\GD_O`!!\`'X`8%`B;`=L(&D`)"`P>`!G/B(`0^\`,"0)=D#EBRQL"^1.
  1037. + MKOYN2H!G)B)L!VP@:0`DT<<@*``$9P@B`B0`3J[\CG`!0>\!2$/O`#!A`/S8
  1038. + M4H90AR!L!VR\J``<;:9@``+&+&P+Y$ZN_\HH`$ZN_\0J`'X`(&P+>"PH`.!F
  1039. + M*'X!0>P!5"(()#P```/M3J[_XBP`9A)![`%6(@A.KO_B+`!F!&$`^J0O!R\&
  1040. + M<``O`"\%(@3!04ZZ#.AP`4'O`5AA`/O6(#P```4:80#ZCB!`,7P$```2+T``
  1041. + M/'!`Y8AA`/IZ3^\`$'Y`Y8\O0`$X8`)2C1`52(!(P$'L!84(,``#"`!F[!`5
  1042. + M9P`"$'(BL`%F,%*-)DU@$'`JL!5F"$HM``%G`E*-4HT0%6<&<B*P`6;F)$T0
  1043. + M%7(BL`%F`E*-?`)@4G`GL!5F(%*-)DU@`E*-$!5G!G(GL`%F]"1-<">P%68"
  1044. + M4HU\`6`L)DU@$'!<L!5F"$HM``%G`E*-4HT0%6<02(!(P$'L!84(,``#"`!G
  1045. + MW"1-?``@2RH*FHL@!5*`+T@`*&$`^;@F0$JO`4QF("`%($LB;P`H3KH6@$(S
  1046. + M6`!P`$'O`4@B2V$`^V)@`/\HVH5R$-J!NH=O%"!O`3A.NA<Z(`5A`/EX+@4O
  1047. + M0`$X+PH@!G(!($LB;P`L80#[L%A/(@LD+P$X)@<L;`OD3J[\N"H`;!!"$B\O
  1048. + M`"A(;`%<3KKQ0E!/2H5F(B\*(`9R`"!+(F\`+&$`^W9P`$'O`4PB2V$`^NI8
  1049. + M3V``_JYZ`2!O`"Q"J``(0B@`$4(H`!`O"B`&<@(@2R)O`"QA`/M"<!!![P%`
  1050. + M80#Z*%A/(@LD+P`L+&P+Y$ZN_,I@*'H`(F\`+-+\`1AP`4'O`3QA`/HF2H!F
  1051. + M!'AG8!(B+P`L+&P+Y$ZN_,0H`$J$9](B+P`L+&P+Y$ZN_+YP=-"`N(!G"DAL
  1052. + M`7!.NO"26$]*A6<B+PH@!G(`($LB;P`L80#ZQG``0>\!3")+80#Z.EA/8`#]
  1053. + M_B`O`4`@;P%$3KH13$'O`4A#[P$\80#Z,"!+3KH6!&``_=P@;P$X3KH5^"!O
  1054. + M`"Q.NA7P80#XF$'L`8I.N@P<*4``T&8(0>P!D"E(`-!![`&63KH,!BE``.1F
  1055. + M!BEL`-``Y$'L`:!.N@OR*4``Z&8(0>P!IBE(`.A![`&J3KH+W"E``.QF"$'L
  1056. + M`;`I2`#L0>P!N$ZZ"\8I0`N49@A![`'"*4@+E"`O`4P@;P%0(FP+D$ZZ*+1P
  1057. + M`$ZZ&>),WVS\WOP!+$YU```@+P`$2.<#`"X`2JP+F&<$(`=@8'P`(`<"@```
  1058. + M`21G`GP("`<`!V<$`$8`!0@'``1G!`C&``((!P`!9P0(Q@``"`<``V<$",8`
  1059. + M`0@'``!G!`C&``8@!W))P(%R0+"!9@0`1@!""`<`"6<$",8`!2`&"D``#TS?
  1060. + M`,!.=2`O``1(YP8`+`!*K`N89P@@!@)`#_]@7GH`"D8`#P@&``-G!'I)Y8T@
  1061. + M!G(%P(%;@&8$",4`!P@&``)G!`C%``0(!@``9P0(Q0`!(`9R0L"!9P0(Q0`&
  1062. + M"`8``6<$",4``P@&``9G!`C%```(!@`%9P0(Q0`)(`5,WP!@3G4``$CG`P!.
  1063. + MNO+B+@!\`&`*+P9.NO%*6$]2AKR';?),WP#`3G4@+P`$+P<N`&'43KKPODZZ
  1064. + M]EP@;`M\3KKO?"\'3KK''EA/+A].=2`O``0O!RX?8-0``"`O``0B+P`((&\`
  1065. + M#%%/2.<#)"P!+@`J2$ZZ]=@@!TZZ\D!*@&<:(D`@:0`@+T@`%"`&(&D`!")-
  1066. + M)&\`%$Z28`)P_TS?),!03TYU``">_``,2.<O-BIO`#1^`\ZO`#A\`2!L"W@F
  1067. + M:`"X*CP```/L3KKU@DJ'9PIP`KZ`9P1R`&`"<@$O00`H<`&^@&<(58=G!'``
  1068. + M8`)P`2]``"P@34/L`<A.N@[22H!F!GC_8``!5G#_(&P+>"%``+@B#73^+&P+
  1069. + MY$ZN_ZPN`"!L"W@A2P"X2H!F>"QL"^1.KO]\3KH*P"P`("P'2'(N1@&P@6<$
  1070. + M2H!F"GX!*CP```/N8!8@!E6`9@P(+P`(`#IG!'`!8`)P`"X`2H=G+'P`""\`
  1071. + M"``Z9QP(+P`/`#IG!G@"8```V"`O`#Q.NOV&*`!@``#*>/]@``#$*48+G'#_
  1072. + M8``!1$*G<@(L;`OD)`].KO\<W_P````$)$!*@&<,(@<D"DZN_YI*@&86(`IG
  1073. + M"'(")`I.KO\63KH+&'#_8``!""@J`'1R`B0*3J[_%B('3J[_IG!0Z8C`KP`X
  1074. + M#(````4`9@QP$2E`"YQP_V```-I*KP`H9P8(!``#9@Q*KP`L9Q((!``"9PQP
  1075. + M#2E`"YQP_V```+8(+P`)`#IG(B(-)#P```/N3J[_XDJ`9P@B`$ZN_]Q@"DZZ
  1076. + M"IQP_V```(P(+P`(`#IG!"`%8`8@/````^TD`"(-+&P+Y$ZN_^(J`&8(3KH*
  1077. + M<'#_8&`(+P`)`#IF!$J&9@0L!&`"?/]^`$JO`"AG`GX!2J\`+&<$",<``0@O
  1078. + M``,`.V<$",<``R\'(`4B!DZZ!9Y83RX`;!QP_R!L"W@A0`"X(@4L;`OD3J[_
  1079. + MW"!L"W@A2P"X(`=,WVSTWOP`#$YU(&\`!"\O``PO+P`,+PAA`/VF3^\`#$YU
  1080. + M``">_``,2-<!`W#_WOP`#$YU44](UP,`4$].=4CG,`(B$$HH``UG!'``8!PD
  1081. + M"28`+&P+Y$ZN_]8B`%*`9@A.N@FH</]@`B`!3-]`#$YU44](YS\V+@`J22)(
  1082. + M+!$O1@`H+T@`+$HI``UG!G``8```C$HI``QG9B9-U\=Z`&!8)$U@`E**M<MD
  1083. + M!G`*L!)F]+?*9@0H"F`&0>H``2@(F(TB+P`H)`TF!"QL"^1.KO_0+`!2@&8(
  1084. + M3KH),G#_8#[:AK:&9C9+Z@`!GH9P`$ZZ\=Q.NO(,2H!F(DJ'9J1@'"(&)`TF
  1085. + M!RQL"^1.KO_0*@!2@&8(3KH(]G#_8`(@!4S?;/Q03TYU64](YSX"+!`O00`8
  1086. + M2B@`#6<$<`!@4E.!)@$B!B0`+&P+Y$ZN_[XJ`$ZN_WPH`%*%9P1*A&<.(`1.
  1087. + MN@>R*4`+G'#_8"0B!G0`)@).KO^^+`!2@&<$2H1G#B`$3KH'D"E`"YQP_V`"
  1088. + M(`9,WT!\6$].=9[\`0!(YS\&+@`J2"P5*BT`""`M``1G"B(`+&P+Y$ZN_Z88
  1089. + M+0`-2(1(Q"!-3KH/PDJ$9P1P`&!$(@9![P`@)`AV0.6++&P+Y$ZN_F@H`$J'
  1090. + M9@HB!DZN_]Q*@&<:2H1G$G#_NH!G#"(")`5.KO]&2H!G!'``8`9.N@?^</],
  1091. + MWV#\WOP!`$YU("\`!$CG(`(B`'0`+&P+Y$ZN_S1.KO]\="Y&`K""5\%$`4B!
  1092. + M2,$@`4S?0`1.=2`O``0@;P`((F\`#)[\`!!(YS<6+@`F22I(?`!AN$J`9GPB
  1093. + M!W0!+&P+Y$ZN_E9*@&=L(@=![`'0)`AV!$ZN_]!9@&92(@<D/```)Q!.KO\T
  1094. + M2H!G0B('0>\`("0(=A!.KO_6<@FP@6\N<)NP+P`@9B9![P`E(@@D"TZN_-`J
  1095. + M`$'O`";1P"(()`U.KOS04H!G!E*%9P)\`2('=`!.KOY6(`9,WVCLWOP`$$YU
  1096. + M("\`!"(O``B>_`(02.<_!BX`</\O0`(H+T$`)"('=`!V`2QL"^1.KO^^+T``
  1097. + M("('3J[_OBP`3J[_?"H`+T`"+&8``,(H+P`D(@<D!';_3J[^.+""9@``KKR"
  1098. + M;```GBH$FH8H!2`$<@%(02QX``1.KO\Z*D!*@&9J<@)(04ZN_RCBB"H`#(4`
  1099. + M``(`;1`@!7(!2$%.KO\Z*D!*@&9&>D#GC4OO`"@P/`'_<@!![P`H$,%1R/_\
  1100. + M8"RXA6\$(`5@`B`$)@!.NN^P(@<D#2QL"^1.KO_0L(-G"DZN_WPO0`(L8`:8
  1101. + M@TJ$;M!![P`HL<UG#")-(`4L>``$3J[_+BHO`BQF!$*O`B@L+P`@O*\`)&P.
  1102. + M(@<D!G;_+&P+Y$ZN_[XL+P(H9PH@!4ZZ!/@I0`N<(`9,WV#\WOP"$$YUGOP!
  1103. + M"$CG-Q8N`"9)*D@L%4HM``UF``$8(`<$@```!`!G(`2````$`&=*4X!G6%.`
  1104. + M9UQ3@&=>4X!G9E.`9VQ@``#N2BT`#&<F(`9![P$D0^\!(&$`_=9*@&<4("\!
  1105. + M)#=```(@+P$@-H!P`&```,IP&6```+XB!BQL"^1.KO\H)H!P`&```+(FAG``
  1106. + M8```JG``8```I"`&(A-A`/XV8```F"M3``AP`&```(XJ$TJM``1F#B(5+&P+
  1107. + MY$ZN_HPK0``$("T`!&=B)``B!2QL"^1.KOY<2H!F4B(&0>\`("0(=D#EBTZN
  1108. + M_FA*@&<^(@5.KO^F(BT`!$ZN_Z8B!DZN_]PB`G0`3J[_1AM\``$`#2J"*T(`
  1109. + M!$'O`"`B""QL"^1.KO^X2H!G!"`"8`Y.N@2V8`9P%BE`"YQP_TS?:.S>_`$(
  1110. + M3G4@+P`$(B\`""]O``P`!$CG#P8J+P`<+`$N`'`.3KH-:"I`2H!F"G`,*4`+
  1111. + MG'#_8$Y#U2+'0IDBQD(M``TB!RQL"^1.KO\H&T``#$AZ_G1(>OO:2'K[9DAZ
  1112. + M^JY(>OIX2'KZ:B`%($U#^OI23KKHXD_O`!@H`&P&($U.N@N@(`1,WV#P3G4@
  1113. + M+P`$(B\`""]O``P`!"]O`!``""]O`!0`#"]O`!@`$$CG#0`H+P`4*B\`$"X`
  1114. + M<`!*@68$<$#EB`!```$O`"`'<O]A`/]&6$]*@&9`<`!*A&8$<$#EB`!```(O
  1115. + M`"`%<O]A`/\H6$]3@&8B<`!*KP`<9@1P0.6(`$```B\`("\`''+_80#_!EA/
  1116. + M58!G$$'L`=8O2``03-\`L$[ZY41,WP"P3G4@;P`$(F\`"$CG(18F22I(3KKL
  1117. + MQ"(-)`LL;`OD3J[_LDJ`9P1P`&!L3J[_?"X`<C1&`;"!9E(B`DZN_[A*@&<.
  1118. + M(@U.KO^R2H!G!'``8$9.KO]\+@!R;]*!L(%F+"("=`!.KO]&2H!G&B(+3J[_
  1119. + MN$J`9Q`B#20+3J[_LDJ`9P1P`&`23J[_?"X`(`=.N@'T*4`+G'#_3-]HA$YU
  1120. + M```@+P`$(&\`""(O``Q93TCG`S0L`2X`*DA.NNP@(`=.NNB()D!*@&=$""L`
  1121. + M`0`#9S8(*P`#``-G%B!K`!@O2``4<`!R`B!K``0B;P`43I$@:P`4+T@`%"`&
  1122. + M(&L`!")-)&\`%$Z28`AP#2E`"YQP_TS?+,!83TYU("\`!"!O``@B+P`,2.<#
  1123. + M!$S?(,!@@"!O``2>_`!`2.<[%BI(3KKKGB`-9U)*%6=.(@U![P`@)`AV0'@`
  1124. + M+&P+Y$ZN_'8N`&TV3J[_?"P`4H!.N@K\)D!*@&<DOH9G%"8&4H,B#20+3J[\
  1125. + M=DJ`;Q`@`F`.($(B2Q+89OP@"V`"<`!,WVC<WOP`0$YU("\`!"(O``@O;P`,
  1126. + M``113TCG!P`J+P`8+`$N`$ZZZQP@!TZZYX1*@&<:(D`@:0`8+T@`$"`&(@4@
  1127. + M:0`$(F\`$$Z18`)P_TS?`.!03TYU("\`!"(O``@O;P`,``1(YP<`*B\`$"]%
  1128. + M`!!,WP#@8*```"`O``0@;P`((B\`#%E/2.<#-"P!+@`J2$ZZZK`@!TZZYQ@F
  1129. + M0$J`9R8(*P````-G&"!K`!`O2``4(`8@:P`$(DTD;P`43I)@"'`-*4`+G'#_
  1130. + M3-\LP%A/3G4@+P`$(&\`""(O``Q(YP,$3-\@P&">```@+P`$*4`'2$J`9P``
  1131. + MAG)GD(%G``""58!G``"`<@F0@6=\4X!G>%.`9W13@&=P4X!G;%.`9VA3@&=H
  1132. + M4X!G:')1D(%G9E.`9V93@&=F4X!G9E.`9V93@&=F58!G9E.`9V93@&=F4X!G
  1133. + M9E6`9V93@&=F4X!G9E.`9V93@&=F4X!G9E6`9V93@&=F4X!G9E.`9V9@:'``
  1134. + M8&9P#&!B<`M@7G`68%IP!V!6<`A@4G`08$YP$6!*<`)@1G`"8$)P%F`^<`=@
  1135. + M.G`68#9P)&`R<!9@+G`68"IP'F`F<!)@(G`E8!YP)F`:<!-@%G`68!)P'&`.
  1136. + M<`U@"G`-8`9P#6`"</].=2\.+&P+Y$ZN_WQA`/[Z*4`+G"Q?3G4@;P`$2.<`
  1137. + M!BI((DTL>``$3J[_!"!-3-]@`$[Z!T@@+P`$2.<!!"X`*FP+J&`.("T`#+"'
  1138. + M9@0@#6`(*E5*E6;N<`!,WR"`3G5(YR`"0>P+J$ZZ&7(@+`MX(BP+A"0`LX("
  1139. + M@@!___\I0@ND4H(I0@N@+P$O`$AL!6A(;`NT3KK@'D_O`!`L>``$3J[]9BE`
  1140. + M"]AG$'``0>P+M$ZZ&88I0`O49@I(;`5V3KKA!%A/3-]`!$YU+PX@+`O89PH@
  1141. + M0"QX``1.KOU@2JP+U&<X+'@`!$ZN_WQ@#")(<!PL>``$3J[_+B!L"]0L>``$
  1142. + M3J[^C"!`2H!FXB!L"]1.NAC@+'@`!$ZN_W8L7TYU```@;P`$("\`""(O``PB
  1143. + M;P`0+V\`%``$+V\`&``(64](YP\V*"\`+"HO`"@L`2X`*DDO2``@+'@`!$ZN
  1144. + M_68F0$J`9S`@2R`$3J[]<B1`2H!G(B`-9P@E30`H)44`)"!O`"`@!R)*(@9.
  1145. + MKOY$2@!F!"`*8!8@"F<&($I.KOUL(`MG!B!+3KH83'``3-]L\%A/3G4@;P`$
  1146. + M2.<`!BI((`UG&")-+'@`!$ZN_CX@;0`.3KH8(B!-3J[];$S?8`!.=5E/0?D`
  1147. + M````+HAG""!Y_____$Z06$].=5E/0?D`````+HAG""!Y_____$Z06$].=4CG
  1148. + M`Q<J;`O<8!0F57`4T*T`!")-+'@`!$ZN_RXJ2R`-9NA"K`O<8$PJ;`OH<)S0
  1149. + MK`=$)D`@+0`$*4`+Z"EM``@'1"XM`!A*@&8>(&P':`QH`"0`%&42($\L"$'M
  1150. + M``PL>``$3J[])"Y&(DL@!RQX``1.KO\N2JP+Z&:N3-_HP$YU(&\`!")O``@@
  1151. + M4")1$!BP&68$2@!F]I`A2(!(P$YU(&\`!"`O``A#^O_@<@1.^@>N(&\`!")O
  1152. + M``@@+P`,2H!O"A(0$-$2P5.`9O9.=2!O``0B;P`(<`!R`!`8$AD,``!A;0H,
  1153. + M``!Z;@0$```@#`$`86T*#`$`>FX$!`$`()"!9@1*`6;43G4``"`O``@@;P`$
  1154. + M3E7_]")/<@I.N@(T!D$`,!+!2H!F\"`)$.&_R6;Z0A"0CTY=3G4``"`O``@@
  1155. + M;P`$3E7_]")/(@`"00`'!D$`,!+!YHAF\"`)$.&_R6;Z0A"0CTY=3G4``#`Q
  1156. + M,C,T-38W.#EA8F-D968@+P`((&\`!%%/(D\R``)!``\2^Q#<Z(AF\B`)$.&_
  1157. + MR6;Z0A"0B5!/3G4``"!O``0B;P`(2.<P("1(<@`@`28!#!``*V<(#!``+68$
  1158. + M=@%22!`8!```,&T:#```"6X4)`'E@=*"TH%*`V8$TH!@XI*`8-XB@2`(D(I3
  1159. + M@$S?!`Q.=2!O``0O#2I(""T``P`;9C`@+`;T3KH$SBM```0K0``09@IP#"E`
  1160. + M"YQP_V`6*VP&]``4<//!K0`80JT`#$*M``AP`"I?3G4``"!O``1(YR`4*D@F
  1161. + M36`@<``0$T'L!84(,``!"`!G"G(`$@!T()*"8`1R`!(`%L%*$V;<(`U,WR@$
  1162. + M3G4``)[\`%!(YS$V0_H`A'``+'@`!$ZN_=@J0$J`9@9P%$ZZ[I9^`"!L!W0>
  1163. + M*/__(`=#[P`<8`(2V%.`9/I"-W@<0>\`'"E(!PQ#[`<41^P'*"Q-D<B5RG``
  1164. + M(@!T?=2"=BA.KOZD<!1.NNY03-]LC-[\`%!.=2HJ(%-T86-K($]V97)F;&]W
  1165. + M("HJ``!%6$E4``!I;G1U:71I;VXN;&EB<F%R>0!*@&H``!Y$@$J!:@``#$2!
  1166. + M80``($2!3G5A```81(!$@4YU2H%J```,1(%A```&1(!.=2\"2$$T`68``")(
  1167. + M0$A!2$(T`&<```:$P3`"2$`T`(3!,`)(0C(")!].=2\#=A`,00"`9```!N&9
  1168. + M44,,00@`9```!NF964,,02``9```!N6954-*06L```;CF5-#-`#FJ$A"0D+F
  1169. + MJDA#@,$V`#`"-`-(0<3!D()D```&4T/0@7(`,@-(0^>X2$#!028?)!].=0``
  1170. + M2.=P`"0`9R!*@68$0H!@&"8`QL%(0L3!2$)"0M:"2$'`P4A`0D#0@TS?``Y.
  1171. + M=0``("P'<`1``?0N0$[Z_F```"!O``0@"$H89OQ32)'`(`A.=0``(&\`!")O
  1172. + M``@@+P`,2H!G$%.`$ABR&68,2@%G!%.`:O)P`$YU;@1P_TYU<`%.=0``(&\`
  1173. + M!")O``@2&+(99@A*`6;V<`!.=6X$</].=7`!3G4B;P`((&\`!"`O``PB"&`$
  1174. + M$-EG"%.`9/A@!D(84X!D^B`!3G4B;P`((&\`!"`($-EF_$YU(F\`""!O``0@
  1175. + M+P`,(@A*@&\6L<EE#-/`T<`1(5.`9OI@!A#94X!F^B`!3G4@;P`$("\`"$CG
  1176. + M`Q0N`"I(9A(@#68$<`!@:"!-3KH`;G``8%X@#68*(`=,WRC`3OH!R"9-58LP
  1177. + M/'__P%-(P.6`+``($P`/9PP,:X``__YF!"PK__(@!TZZ`:`F0$J`9@1P`&`>
  1178. + MO(=C!"`'8`(@!B!-(DM@`A+84X!D^B!-3KH`#B`+3-\HP$YU(&\`!"`(9@).
  1179. + M=5F`2.<\,B(L"]QF#BE\````%@N<3-],/$YU(D&P@6\2)`'4J0`$!H(````4
  1180. + ML()L`F`((BD``&?48.`F`0:#````$+"#;<9G$B1#0H(T*@`":[KEBM:"6(-@
  1181. + MZ"1`-"H``&JJ"*H`!P``0H,V*@`"`D-__^6+2FH``FM`1_(X!$IK``!K-D*$
  1182. + M."L``@)$?__EC-B#6(3DC%B#2FL``FH$`$2``#5$``)K$BH$Y8PT,D@$`D*`
  1183. + M`(I"-85(!$*$."H``&=,Y8Q$A$?R2/Q*:P``:SY"A#@K``+EC$*%.BH``@)%
  1184. + M?__EC=B%6(18@^2,2FH``FH$`$2``#=$``)K$BH$Y8PT,T@$`D*``(I"-X5(
  1185. + M!->I``@F*0`$MJP%@&X,MJD`"&8Z2JD``&<T("P+W"!`LH!F#"EI```+W&`0
  1186. + M(&@``+*H``!F]B%I`````"`I``0&@````!0L>``$3J[_+DS?3#Q.=2`O``1*
  1187. + M@&8,*7P````6"YQP`$YU2.<^,E:``H#____\#(```?_\;@``N+"L!8!N``"P
  1188. + M)BP+W&<``*@B0["I``AN,B(L"^"RJ0`,9BA%Z0`02E)K$$*$."H``@)$?__E
  1189. + MC+"$;QI"A#@J``)K".6,1?)(!&#<)BD``&=F(D-@O@CJ``<``$?R"`1"A;"$
  1190. + M9SPL!)R`689F!"`$8##DCDIJ``)J!`!&@``J`.2--T8``C=%```U10`">@1*
  1191. + M1FL.-#)(!`)"@`",0C6&2`0F*0`(EH"6A2-#``@@"EB`3-],?$YU*@"PK`6`
  1192. + M:@0@+`6`*``&@````!0B+`O@+'@`!$ZN_SI*@&8**7P````,"YQ@S")`1>D`
  1193. + M$"-L"]P``"E)"]PC1``$(VP+X``,)@26A6<H68-G)"-#``A'\E@$-7R`````
  1194. + MY(TU10`"-T4``.2+`$.``#=#``)@%$*I``@U?(````#DC`!$@``U1``"(`I8
  1195. + M@$S?3'Q.=2!O``0@+P`((B\`#")O`!!93TCG#S8L`2X`*D@O20`@<`&^@&,`
  1196. + M`+(F3=?&(`=5@&8D+PLO#2!-(DLL;P`H3I903TJ`;P``DB`&($TB2TZZ^"!@
  1197. + M``"$(`?BB"(&3KK[-B)-T\`@!B!-3KKX!B1->@!X`6`J+PTO"R!+(DTL;P`H
  1198. + M3I903TJ`:A)2A=7&M<MG"B`&($LB2DZZ]]C7QE*$N(=ETK7-9PH@!B!-(DI.
  1199. + MNO?")F\`("`%(@8@32)+80#_4B!*T<8@!Y"%4X`B!B)+3-]L\%B/8`#_.DS?
  1200. + M;/!83TYU(&\`!)[\`!A(YS<6*DA^`"9X``0@#68&<`%@``"$+&P+Y$ZN_\0L
  1201. + M`&840?H`?B(()#P```/N3J[_XBP`?@$,:P`D`!1E+"]\@```(0`@3J[_RD?O
  1202. + M`"0FP";\@```(B;&0ILB#4'O`"`D"$ZN_:(J`&`B(@TF!G0`3J[_(DJ`9A).
  1203. + MKO]\*4`'2'+_*4$+G"H`8`(J`DJ'9P8B!DZN_]P@!4S?:.S>_``83G5.24PZ
  1204. + M``!.^O'*3OKQPB`O``1(YP$$+@`J;`<\8`@@;0`$3I`J52`-9O1+[`:,<`;`
  1205. + MK0`858!F&"`M``20K0`09PXB+0`<(&T`$,%!3KKQ`"!-*E`@#6;6(`=,WR"`
  1206. + M3OKF_"`O``0@;P`(0]!2F2!14ID0@$YU44\@;P`,0I<O2``$2&\`%"\O`!1!
  1207. + M^O_>0^\`"$ZZ#/H@;P`,0A!03R`74$].=0``("\`!"!O``@O#2(`*DA2E4/M
  1208. + M``@@$5*1&X$(#"`9#(````(`;11![0`,(FT`!'(!P4%.N@1@0JT`""I?3G6>
  1209. + M_`(,+PTJ;P(40J\`#$*O``0O30`(2&\"'"\O`AQ!^O^J0^\`#$ZZ#()03R`O
  1210. + M``QG$$'O`!`B;P`(<@'!04ZZ!!8(+0`%`!MF"`@M``0`&V<$</]@!"`O``0J
  1211. + M7][\`@Q.=2`O``0@;P`(64](YP,$+@`J2'P`'T``#W)!TH'"K0`89@P([0`%
  1212. + M`!MP_V```4!P,\"M`!A5@&=0<$Q&`,"M`!AR0-*!L(%F#`CM``$`&T*M``Q@
  1213. + M-`@M``4`&V<&</]@``$,<&Y&`,"M`!AR;D8!L(%F#`CM``$`&T*M``Q@"G``
  1214. + M*T``#&```.8@+0`,L*T`%&PR(&T`!%*M``0@!Q"`4JT`#`@M``8`&V<.<@J^
  1215. + M@68(($U.N@1P+`!*AF<``*H@!F```*H(+0`"`!MG+D*M``P@+0`<0>\`#W(!
  1216. + M3KKO+"P`4H!F"`CM``4`&V!R(`93@&=L".T`!``;8&1*K0`49B`@34ZZ]=Q*
  1217. + M@&<*".T`!0`;</]@6'``*T``#"MM`!``!"`M``RPK0`4;0@@34ZZ`_8L``CM
  1218. + M``$`&R!M``12K0`$(`<0@%*M``P(+0`&`!MG#G(*OH%F""!-3KH#RBP`2H9G
  1219. + M!"`&8`9R`!('(`%,WR#`6$].=2!O``193TCG`00J2$'L!HR[R&9$0>P&KDZZ
  1220. + M`Y8(+0`-`!IG-"`M`!Q![P`+<@%.NN_4+@!O"GX`'B\`"V```2!*AV8(".T`
  1221. + M!``;8`8([0`%`!M^_V```0A3K0`(;1`@;0`$4JT`!'``$!!@``#T<#/`K0`8
  1222. + M4X!G-'!<1@#`K0`8<D#2@;"!9A0([0```!L(+0`$`!MG%G#_8```QD*M``@(
  1223. + M[0`%`!MP_V```+8(+0`"`!MG1D*M``A^`!XM`"!*AV<(0BT`(&```)8@+0`<
  1224. + M0>\`"W(!3KKO+BX`;PA^`!XO``M@>DJ'9@@([0`$`!M@!@CM``4`&W[_8&1*
  1225. + MK0`49A0@34ZZ]&A*@&<*".T`!0`;</]@3"!M`!`K2``$("T`'"(M`!0@;0`0
  1226. + M3KKNVBM```@N`&\24ZT`""!M``12K0`$?@`>$&`82H=F"`CM``0`&V`*".T`
  1227. + M!0`;0JT`"'[_(`=,WR"`6$].=2!O``1(YP<4*DA^`"`M`!AF"G()*4$+G'#_
  1228. + M8&X@/```@`+`K0`8#(```(`"9@@@34ZZ`A9^`4AX``$@+0`<<@!.NNWL6$\L
  1229. + M`$H'9CP(+0`/`!IG(B9M``0J+0`(8!!R"K(;5\!$`$B`2@!G`E.&(`53A4J`
  1230. + M9N@(+0`!`!MG!MRM``Q@!)RM``@@!DS?*.!.=2!O``0@+P`((B\`#$CG`P0L
  1231. + M`2X`*D@(+0`!`!MG!B!-3KH!EB`&4X!F"B!-3KK_1MZ`?``K;0`0``1"K0`,
  1232. + M0JT`"$(M`"`(+0`'`!MG!G#\P:T`&"\&("T`'"('3KKM0%A/4H!F!'#_8`AP
  1233. + MS\&M`!AP`$S?(,!.=2!O``0@+P`((B\`#")O`!!93TCG#Q`L`2X`)DDO2``4
  1234. + M(`8B!TZZ]+HJ`'@`2H=G!$J&9@9P`&```/QP,,"K`!AF"G!!T(#`JP`89@P(
  1235. + MZP`%`!MP`&```-YP,\"K`!A5@&=0<$Q&`,"K`!AR0-*!L(%F#`CK``$`&T*K
  1236. + M``Q@-`@K``4`&V<&<`!@``"J<&Y&`,"K`!AR;D8!L(%F#`CK``$`&T*K``Q@
  1237. + M"D*K``QP`&```(1*JP`49DP(*P`"`!MF1"!+3KKR.$J`9SH(ZP`%`!MP`&!@
  1238. + M(&\`%!`8(FL`!!*`4JL`!%*K``Q3A5*$+T@`%'(*L`%F#@@K``8`&V<&($M.
  1239. + MN@`^("L`#+"K`!1L!$J%;L)*A6\6($M.N@`F("L`'"(%(&\`%$ZZZOS8@"`$
  1240. + M(@=.NO,<3-\(\%A/3G4@;P`$2.<!!"I((`UG``"@<$'0@,"M`!AF+"!M`!!#
  1241. + M[0`$(LA"F4(M`"!P`"+`""T`!P`;9P8(K0```!L(K0`$`!M@``"*2JT`%&=$
  1242. + M("T`#&H&<@`K00`,("T`#&<H(BT`'"!M`!#!04ZZZGXN`%*`9@@([0`%`!M@
  1243. + M#+ZM``QG!@CM``0`&RMM`!``!$*M``QP,,"M`!AF$@@M``<`&V<&</S!K0`8
  1244. + M<`!@)'#_8"!^`$OL!HQ*K0`89PP@36$`_T9*@&<"?O\J52`-9N@@!TS?((!.
  1245. + M=2!O``1(YP$$*DA^`"`-9P8@+0`89@1P_V!`""T``0`;9P@@34ZZ_PHN`'`,
  1246. + MP*T`&&8.2JT`%&<((&T`$$ZZ]")"K0`8("T`'$ZZT,92AV<$2H!G!'#_8`)P
  1247. + M`$S?((!.=2!O``0B;P`(+V\`#``$64](YP\4)F\`("I)+T@`&'X`+"P&^'H`
  1248. + M2JL`&&<&($M.NO]T<``0+0`!<BN0@6<@<C:0@6<&4X!G!&`@?`!R*[(M``)7
  1249. + MP$0`2(!(P"H`8`QZ`7!AL"T``F8"?`!P`!`5<F&0@6<,<A&0@6<:6X!G)&`V
  1250. + M2H56P'(!D@``00$(C(%^0.&/8"A*A5;`<@"2`)(`C(%@&DJ%5L!R`9(``$$!
  1251. + M``!!`@",@6`&<`!@``"`+RP&_"\&+R\`($ZZWW1/[P`,*`!2@&8$<`!@8DJ%
  1252. + M9P8(QP`'8#!P`!`5<F&0@6<,<A&0@6<:6X!G&F`:",<``4AX``(@!'(`3KKI
  1253. + ML%A/8`9^`6`"?@((!@`/9@0(QP`/D<A+ZP`0*L@JR"=$`!PG2``$)T@`#"=(
  1254. + M``@JQR`+3-\H\%A/3G4``"!O``0B;P`(44](YP`42.\#```(2^P&C&`$)DTJ
  1255. + M4R`-9P9*K0`89O(@#68><").NO/X*D!*@&8$<`!@'B!-)HAP(7(`$,%1R/_\
  1256. + M+PT@;P`,(F\`$$ZZ_G183TS?*`!03TYU```@;P`$(F\`""]O``P`!"]O`!``
  1257. + M")[\`#1(YR\V)F\`8"IO`%Q([P,``"Q"+P`[0B\`.D(O`#E"+P`X'WP`(``W
  1258. + M0J\`5'#_+T``4$(O`#9^`'P`1>\`/&!*<``@;P`L$!!R()"!9R)7@&<F48!G
  1259. + M$E6`9P97@&<B8#(??``!`#M@'A]\``$`.F`6'WP``0`Y8`X??``!`#A@!A]\
  1260. + M`#``-U*O`"P@;P`L2A!FKG`!L"\`.V8&'WP`(``W<BH@;P`LLA!F'BQO`#`B
  1261. + M5EB6(A$O00!4;`A$KP!4'T``.U*O`"Q@#$/O`%1.NNVNT:\`+"!O`"P0$'(N
  1262. + ML`%F1E*O`"QP*B!O`"RP$&8<(F\`,"!16)$@$"]``%!L!G#_+T``4%*O`"Q@
  1263. + M%D/O`%!.NNUL*@!F!D*O`%!@!-NO`"P??``@`#=P`"!O`"P0$'),D(%G%'(<
  1264. + MD(%G!EF`9PI@$A]\``(`-F`&'WP``0`V4J\`+"!O`"Q2B")O`"P0$7(`$@`?
  1265. + M0``D+T@`)G!0DH!G``$048%G``$<<`N2@&<``=!3@6=06X%G3%N!9R)3@6<`
  1266. + M`0)3@6<``.I7@6<``8!5@6<``/!7@6<``.I@``&X)&\`,'`"L"\`-F8.(%)8
  1267. + MDB)0(!,R@&```DH@4EB2(E`BDV```CXB;P`P(%%8D2@0:@1^`42$2H=G#$7O
  1268. + M`#T??``M`#Q@(DHO`#IG#$7O`#T??``K`#Q@$$HO`#EG#$7O`#T??``@`#Q\
  1269. + M`2`$($I.NNO"*@`@+P!09@9*A&<``>0@+P!0:@9R`2]!`%`H+P!0F(5O'"!*
  1270. + MT<0@!2)*3KKO2'(P($I@`A#!4X1D^BHO`%#<A2`%4X!F``$$$!*P+P`W9@``
  1271. + M^DJO`%!F``#R0A)@``#L("\`4&H&<`@O0`!0'WP``0`V<`*P+P`V9A`B;P`P
  1272. + M(%%8D2`0>``X`&`*(F\`,"!16)$H$!`O`"1R=;`!9P#_6G)OL`%F'DHO`#AG
  1273. + M#$7O`#T??``P`#Q\`2`$($I.NNLR8`#_/DHO`#AG$A]\`#``/$7O`#X??`!X
  1274. + M`#U\`B`$($I.NNM.*@`(+P`%`"1F`/\40>\`/$ZZZ_Y@`/\((F\`,"!16)$D
  1275. + M4"`*9@1%^@#R($I*&&;\4XB1RBH(("\`4&L$L(5O!"]%`%`L+P!08"!\`2)O
  1276. + M`#`@45B1(!`?0``\0B\`/6`&<`!@``"L1>\`/"`O`%2PAFP(<@`O00!48`2=
  1277. + MKP!42B\`.V<>8`AP`!`:($M.E5.&;/1@!B!+<"!.E5.O`%1L]&!J2H=F#$HO
  1278. + M`#EF!DHO`#IG1A`2<B"P`6<,="NP`F<&="VP`F8R2H9K+K(O`#=F$F`*<``0
  1279. + M+P`W($M.E5.O`%1L\'``$!H@2TZ54X9@"G``$"\`-R!+3I53KP!4;/!@"'``
  1280. + M$!H@2TZ54X9L]"`O`"9,WVSTWOP`-$YU```@;P`$(F\`""]O``P`!"]O`!``
  1281. + M")[\``Q(YP`4)DDJ2"]O`!P`$&`X<"6P+P`,9B8@;P`8L!!F!E*O`!A@&"\+
  1282. + M+PU#[P`83KK[E%!/2H!G!B]``!A@"G``$"\`#"!+3I4@;P`8$!@?0``,+T@`
  1283. + M&$H`9K9,WR@`WOP`#$YU(&\`!""(6)!"J``$(4@`"$YU```@;P`$2.<`!BI(
  1284. + M2JT`"F<*(DTL>``$3J[^F!M\`/\`"'#_*T``%'``$"T`#RQX``1.KOZP(DUP
  1285. + M(DZN_RY,WV``3G4``"!O``0@+P`(2.<#%BX`*DAP_RQX``1.KOZV'`!(ADC&
  1286. + M(`92@&8$<`!@8'`B(CP``0`!3J[_.B9`2H!F""`&3J[^L&!$0>L`"B#-%T<`
  1287. + M"1=\``0`"$(8$,:3R4ZN_MHG0``0(`UG"")+3J[^GF`:0>L`&"=(`!1!ZP`4
  1288. + M)T@`'$*K`!@7?``"`"`@"TS?:,!.=2\(+P!.N0```F!03TYU``````/L````
  1289. + M`0```````&(.`````@````$````4````"@````````/R```#Z@```=``````
  1290. + M+P`````````%G```!:(```7"```%^@``!CP`````````````````````````
  1291. + M``````````````````````````C,7'M]````3VL``````!0`````````````
  1292. + M``````!,8V]N<V]L93H``"5S.B```&EN='5I=&EO;BYL:6)R87)Y````.B``
  1293. + M`#0R``!5;FMN;W=N(&5R<F]R(&-O9&4```H```!T:6UE<BYD979I8V4`````
  1294. + M_____V9I9F\N;&EB<F%R>0```````````````````,P``0```````````,X`
  1295. + M``````````````!&86EL960@=&\@8W)E871E('1I;65R``!U<V5R(&EN=&5R
  1296. + M<G5P=````````$YO(&UE;6]R>0```&$`1F%I;&5D('1O(&-R96%T92!T:6UE
  1297. + M<@``3DE,.@``3DE,.@``3DE,.@``*@!.24PZ``!);G9A;&ED('=I;&1C87)D
  1298. + M("5S`$5R<F]R(&5X<&%N9&EN9R!A<F=U;65N=',`55-%4@``=7-E<@``55-%
  1299. + M4DY!344``$A/344``',Z``!32$5,3`!B:6XZ<V@``$A/4U1.04U%``!A;6EG
  1300. + M80!.24PZ`````)LP('$``$9A:6QE9"!T;R!I;FET:6%L:7-E($DO3P``86UI
  1301. + M9V$@<W!E8VEF:6,@97)R;W(``````?!5;FMN;W=N(&5R<F]R`&YO="!O=VYE
  1302. + M<@!N;R!S=6-H(&9I;&4@;W(@9&ER96-T;W)Y`&YO('-U8V@@<')O8V5S<P!I
  1303. + M;G1E<G)U<'1E9"!S>7-T96T@8V%L;`!I+V\@97)R;W(`;F\@<W5C:"!D979I
  1304. + M8V4@;W(@861D<F5S<P!A<F=U;65N="!L:7-T('1O;R!L;VYG``!E>&5C(&9O
  1305. + M<FUA="!E<G)O<@!B860@9FEL92!N=6UB97(`;F\@8VAI;&0@<')O8V5S<P``
  1306. + M;F\@;6]R92!P<F]C97-S97,`;F]T(&5N;W5G:"!M96UO<GD`<&5R;6ES<VEO
  1307. + M;B!D96YI960`8F%D(&%D9')E<W,`8FQO8VL@9&5V:6-E(')E<75I<F5D`&UO
  1308. + M=6YT(&1E=FEC97,@8G5S>0``9FEL92!E>&ES=',`8W)O<W,M9&5V:6-E(&QI
  1309. + M;FL`;F\@<W5C:"!D979I8V4``&YO="!A(&1I<F5C=&]R>0!I<R!A(&1I<F5C
  1310. + M=&]R>0``:6YV86QI9"!A<F=U;65N=```9FEL92!T86)L92!O=F5R9FQO=P!T
  1311. + M;V\@;6%N>2!O<&5N(&9I;&5S`&YO="!A('1Y<&5W<FET97(``'1E>'0@9FEL
  1312. + M92!B=7-Y``!F:6QE('1O;R!B:6<``&YO('-P86-E(&QE9G0@;VX@9&5V:6-E
  1313. + M`&EL;&5G86P@<V5E:P``<F5A9"UO;FQY(&9I;&4@<WES=&5M`'1O;R!M86YY
  1314. + M(&QI;FMS``!B<F]K96X@<&EP90!M871H(&%R9W5M96YT`')E<W5L="!T;V\@
  1315. + M;&%R9V4``$DO3R!S=')E86T@96UP='D``&9I;&4@;F%M92!T;V\@;&]N9P``
  1316. + M9&ER96-T;W)Y(&YO="!E;7!T>0!T;V\@;6%N>2!S;V9T(&QI;FMS("AL;V]P
  1317. + M/RD````""@```A@```(B```"/````DP```)D```";@```H@```*@```"L@``
  1318. + M`L(```+4```"Y@```O@```,*```#%@```RP```-````#3````UX```-N```#
  1319. + M?@```XX```.@```#M````\@```/:```#Z@```_@```00```$'@``!#0```1$
  1320. + M```$4```!%X```1P```$@@``!)8```2J````)@``9&]O<BXE;'@N)6QX``!.
  1321. + M;R!M96UO<GD```!````@("`@("`@("`H*"@H*"`@("`@("`@("`@("`@("`@
  1322. + M($@0$!`0$!`0$!`0$!`0$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$!
  1323. + M`0$!`0$!`0$!`0$!`0$!$!`0$!`0@H*"@H*"`@("`@("`@("`@("`@("`@("
  1324. + M`@(0$!`0(```````````````````````````````````````````````````
  1325. + M````````````````````````````````````````````````````````````
  1326. + M````````````````````````````````````````````````````````````
  1327. + M```````/H```!JX```````````````````````````````````````````;0
  1328. + M````````````````````````````````````````````````````````````
  1329. + M```````````````````````````````"````@``````-__\````.``X`````
  1330. + M``````````#__P````0`!````````$Q"```'`/__````!``$````````3%@`
  1331. + M`````````````^P````(````````!S0```<@````0@```!H````6````$@``
  1332. + M``X````*````+@````$```<D```&K@``!HP```5>```%6@``!58```52```%
  1333. + M3@``!4H```5&```%0@``!3X```4Z```%-@``!3(```4N```%*@``!28```4B
  1334. + M```%'@``!1H```46```%$@``!0X```4*```%!@``!0(```3^```$^@``!/8`
  1335. + M``3R```$[@``!.H```3F```$X@``!-X```3:```$U@``!-(```3.```$R@``
  1336. + :!,8```(&````X````-0```!@`````````_+:
  1337. + `
  1338. + end
  1339. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/getstack.uue emacs-18.59/amiga/amiga-extra/amiga/c/getstack.uue
  1340. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/getstack.uue    Thu Jan  1 00:00:00 1970
  1341. --- emacs-18.59/amiga/amiga-extra/amiga/c/getstack.uue    Tue Jul 12 10:35:07 1994
  1342. ***************
  1343. *** 0 ****
  1344. --- 1,8 ----
  1345. + begin 666 getstack
  1346. + M```#\P`````````!```````````````G```#Z0```"=93TCG(!Y)^0````"3
  1347. + MR2QX``1.KO[:*D!#^@!P<"4L>``$3J[]V"9`2H!G-B(M`*SE@2]!`!0@;P`4
  1348. + M(B@`-.6!+P%!^@!2(@@L2R0/3J[\1D_O``0B2RQX``1.KOYB<`!@`G`43-]X
  1349. + M!%A/3G4D5D52.B!G971S=&%C:R`Q+C`@*#(Q+C,N.3,I``!D;W,N;&EB<F%R
  1350. + ,>0`E;&0*``````/R
  1351. + `
  1352. + end
  1353. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/grep.uue emacs-18.59/amiga/amiga-extra/amiga/c/grep.uue
  1354. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/grep.uue    Thu Jan  1 00:00:00 1970
  1355. --- emacs-18.59/amiga/amiga-extra/amiga/c/grep.uue    Tue Jul 12 10:35:27 1994
  1356. ***************
  1357. *** 0 ****
  1358. --- 1,1028 ----
  1359. + begin 666 grep
  1360. + M```#\P`````````"``````````$``"F2```+:@```^D``"F22.=^_B1()`!)
  1361. + M^0`````L>``$1_D```QX<@`@/```"$Q@`B;!4<C__"E/#*@I3@R@)FX!%"`K
  1362. + M`*QG#.6(($`@*``TY8A@!B`/D*L`.B(/DH`&@0```(`I00Q\L*P+P&14("P+
  1363. + MP`:`````@"E`#,@B/``!``%.KO\Z2H!G``'2*4`,Q"(`!H````"`*4`,?-"L
  1364. + M"\`,;@`D`!1M&"E`#,`I00R\DJP,R$'L#+@@@4ZN_21@`BY`0JP,I'``(CP`
  1365. + M`#``3J[^SB9N`11#^@&*<`!.KOW8*4`ME&8&<&1@``#F*6L`F`R<2JL`K&<`
  1366. + M`'X@:P"LT<C1R")H`!#3R=/)(`)R`!(9*4D,K-"!7H`"0/_\*4`,M$CG0$`B
  1367. + M/``!``%.KO\Z3-\"`DJ`9@AP%"\`9P`!%B!`*4`,L"`"4X#4@1&R```@`E."
  1368. + M4<C_]A&\`"`@`E."$;P`(B`"$;$@`"`!4<K_^!"\`"(O"&!*0>L`7$ZN_H!!
  1369. + MZP!<3J[^C"E`#*0O`"1`("H`)&<8+&PME"!`(B@``$ZN_Z`I0`R<(@!.KO^"
  1370. + M(&P,I"\(2&P,>"!H`"0I:``$#*Q.N@"R3KIM_G``8`0@+P`$)&P,J"4`+'@`
  1371. + M!`QN`"0`%&T22JP,N&<,0>P,N%FL#,!.KOTD+DH@+`R49P0@0$Z03KH`;$ZZ
  1372. + M`'0@+`S(9PPB;`S$+'@`!$ZN_RY*K`RD9R`L;"V4(BP,G&<$3J[_IBQX``1.
  1373. + MKO]\(FP,I$ZN_H9@$BQX``0@+`RT9P@B;`RP3J[_+B)L+91.KOYB(!],WW]^
  1374. + M3G5D;W,N;&EB<F%R>0!.^0``A1A.^0``A0!.^0``ADQP82`/44"PK`Q\90`N
  1375. + MY"\-("\`#"(O``@O`"\!3KHNS%!/*D!*@&8*2&P``$ZZ7?!83R`-*E].=2`/
  1376. + MD'P`$+"L#'QE`"ZL2.<!!"XO``PO!TZZ+J0J0$J'5L!$`$B`2,!(>``]2&P`
  1377. + M&DAL`!(O`$ZZ+IA/[P`4(`UF"DAL`"!.NEV>6$\@#4S?((!.=2`/D'P`$+"L
  1378. + M#'QE`"Y82.<!$"XO`!`@;P`,+P<O"$ZZ+F@F0$J'5L!$`$B`2,!(>`!*2&P`
  1379. + M.DAL`#(O`$ZZ+CY/[P`8(`MF"DAL`$!.NEU$6$\@"TS?"(!.=;_L#'QE`"X$
  1380. + M+P(@+P`((&\`#"0`<A_$@7(!Y:'JB.6`(#`(`,"!)!].=;_L#'QE`"W:+P(@
  1381. + M+P`((&\`#"(`ZHGE@70?P()T`>&BA;`8`"0?3G6_[`Q\90`MLB\"("\`""!O
  1382. + M``PB`.J)Y8%T'\""=`'AHD:"Q;`8`"0?3G6_[`Q\90`MB$CG`Q0F;P`8*F\`
  1383. + M%'X`?``GM6@`:`!2AUB&<`B^@&7P3-\HP$YUO^P,?&4`+5H@;P`$<!]R`!#!
  1384. + M4<C__$YUO^P,?&4`+4)(YP$0)F\`#'X`1IM2AW`(OH!E]DS?"(!.=;_L#'QE
  1385. + M`"T@2.<#%"9O`!@J;P`4?@!\`"`U:`"PLV@`9P1P`&`,4H=8AG`(OH!EZ'`!
  1386. + M3-\HP$YU(`]10+"L#'QE`"SD2.<#!"IO`!!^`'P`8!HB;!$D(%'1QB\(+PUA
  1387. + MH%!/2H!F=%*'<"#<@"!L$22^J``$;=P@;!$D("@`!+"H``AM.&`.(&P1)"(H
  1388. + M``C2@2%!``@@;!$D("@`!+"H``ALY"!L$20B*``(ZX$O`2\080#^$%!/(&P1
  1389. + M)""`(&P1)%*H``0@!^N`(FP1)"!1T<`O""\-80#^PE!/(`=,WR#`3G6_[`Q\
  1390. + M90`L/B\'(B\`#"XO``AP`2E`$2PI1Q$H*4$1,"X?3G4@#Y!\`"BPK`Q\90`L
  1391. + M%)[\`"!(YS\$2JP1/&8&</]@``9>2^P1."!5$!@JR'X`'@!3G2E($3@@!W(*
  1392. + MD(%G``-.<AJ0@6<``(Q9@&<``TQ3@&<``V13@&<``MI3@&<``NY7@&<``VYR
  1393. + M$9"!9P`"HG(<D(%G``.:4X!G``$:58!G#'(>D(%G``+H8``%;@@L``41*V8>
  1394. + M2JP10&<`!5X(+``#$2MG#B!L$3A3B+'L$31F``5(0JP10`@L``,1*V<*(#P`
  1395. + M``$#8``%N"`\```!`F``!:X(+``%$2MF``"@("P1/&<``)@(+``#$2MF``4,
  1396. + M""P``!$K9QA*@&\0(&P1.!(0="FR`F8$=@%@)G8`8")R`;"!;QH@;!$X%!!V
  1397. + M7+0#9@X8*``!=BFX`V8$=@%@`G8`2H-F1@@L``$1*V<82H!O$"!L$3@2$'1\
  1398. + ML@)F!'8!8"1V`&`@<@&P@6\6<%P@;!$XL!!F#'!\L"@``68$<`%@`G``)@!*
  1399. + M@V<`!(`(+``#$2MG"B`\```!!6``!/1P0>6(8``$[$JL$3QF"DAL`&9.NEFN
  1400. + M6$]+[!$X(%40&"K(?@`>`%.=*4@1."`'<BB0@6<``3)3@&<``3I5@&<``0Q=
  1401. + M@&=.4X!G2E.`9T93@&="4X!G/E.`9SI3@&<V4X!G,E.`9RY7@&<^58!G2%.`
  1402. + M9P``SE>`9UAR%9"!9V!R"Y"!9T!R%9"!9U1;@&<``,I@``/:0JP10'`!*4`1
  1403. + M1"`\```!`6``!$Q"K!%`(#P```$&8``$/D*L$4`@/````0=@``0P0JP10'!"
  1404. + MY8A@``0D0JP10"`\```!"6``!!9(;P`<80#\4%A/?`!P?[R`8AAP!T'L"KW`
  1405. + M,&@`9PQ(;P`<+P9A`/NP4$]2A@R&```!`&W8<%>^@&8*2&\`'&$`_"Y83T*L
  1406. + M$4!P`2E`$41(;P`<80#\=`:````!$5A/8``#M`@L``(1*V<``R1@0`@L``(1
  1407. + M*V<``QA@<@@L``$1*V8``PQ@``"(""P``!$K9@`"_F```*0(+```$2MF``+P
  1408. + M8```M`@L``(1*V8``N((+``%$2MF"$JL$41G``+2(#P```$*8``#3@@L``41
  1409. + M*V8(2JP11&<``K@@/````0M@``,T""P``A$K9@`"I`@L``41*V8(2JP11&<`
  1410. + M`I1P0^6(8``#$@@L``$1*V<``H)P`2E`$4!"K!%$(#P```$.8``"]`@L``01
  1411. + M*V;D8``"8@@L```1*V<``EAP`2E`$4!"K!%$(#P```$/8``"R@@L```1*V<`
  1412. + M`CI"K!%`<`$I0!%$<$3EB&```JY(;P`<80#ZZ$AO`"!A`/KX2&\`)$AX``IA
  1413. + M`/I\0JP10'`!*4`11$AO`"QA`/LT!H````$13^\`%&```G)(;P`<80#ZK%A/
  1414. + M2JP1/&8*2&P`B$ZZ5RI83TOL$3@@51`8*LA^`!X`4YTI2!$X<%Z^@&8H2JP1
  1415. + M/&8*2&P`I$ZZ5P!83TOL$3@@51`8*LA^`!X`4YU\`2E($3A@`GP`2JP1/&8*
  1416. + M2&P`P$ZZ5M983TOL$3@@51`8*LAZ`!H`4YTI2!$X<"VZ@&8``,!*K!$\9@I(
  1417. + M;`#<3KI6JEA/2^P1."!5$!@JR'H`&@!3G2E($3A@;DAO`!PO!V$`^7I03TJL
  1418. + M$3!G6G!_OH!B*$OL"KW;QP@5``!G'`@5``!G""`'<B#0@6`"(`=(;P`<+P!A
  1419. + M`/E&8"J^@&(H2^P*O=O'"!4``6<<"!4``6<((`=R()"!8`(@!TAO`!PO`&$`
  1420. + M^1I03U*'OH5OCDJL$3QF"DAL`/A.NE826$]+[!$X(%40&"K(?@`>`%.=*4@1
  1421. + M.&!N2&\`'"\'80#XXE!/2JP1,&=:<'^^@&(H2^P*O=O'"!4``&<<"!4``&<(
  1422. + M(`=R(-"!8`(@!TAO`!PO`&$`^*Y@*KZ`8BA+[`J]V\<(%0`!9QP(%0`!9P@@
  1423. + M!W(@D(%@`B`'2&\`'"\`80#X@E!/+@5P7;Z`9@#^HDJ&9PI(;P`<80#Y`EA/
  1424. + M0JP10'`!*4`11$AO`!QA`/E(!H````$16$]@``"(0JP10'`!*4`11$JL$3!G
  1425. + M='!_OH!B;DOL"KW;QW`#P!5G8DAO`!QA`/B@6$\(%0``9Q((%0``9P@@!W(@
  1426. + MT(%@`B`'+@!(;P`<+P=A`/?\4$]![`J]"#```7@`9P@@!W(@D(%@`B`'2&\`
  1427. + M'"\`80#WVDAO`"1A`/C$!H````$13^\`#&`"(`=,WR#\WOP`($YU(`]10+"L
  1428. + M#'QE`'[$+P<N+P`((&P1)"`H`!"PJ``4;3Q@#B!L$20B*``4TH$A00`4(&P1
  1429. + M)"`H`!"PJ``4;.0@;!$D(B@`%.6!+P$O*``,80#VY%!/(&P1)"%```P@;!$D
  1430. + M(B@`$%*H`!#E@2)L$20@:0`,(`<A@!@`!(````$`9R9R"I"!9R13@&<@4X!G
  1431. + M'%.`9P93@&<"8`93K!%,8`P@;!$D4J@`'%*L$4P@+!%,(&P1)+"H`!AO!"%`
  1432. + M`!@N'TYU(`]90+"L#'QE`'X$("P12&L(#(````$`;4`,@````1%L.`R````!
  1433. + M`6<P#(````$"9R@,@````01G(`R````!!F<8#(````$'9Q`,@````0AG"`R`
  1434. + M```!"682+P!A`/[B80#X5EA/*4`12&`\#(````$/9BIA`/A"*4`12&$``*P,
  1435. + MK````1`12&<*2&P!!DZZ4W983V$`^"(I0!%(8`I(>`$`80#^G%A/3G4@#UE`
  1436. + ML*P,?&4`?5IA`/](8!(O+!%(80#^?F$`]_)83RE`$4@@+!%(#(````$*9^(,
  1437. + M@````0MGV@R````!#&?23G4@#UE`L*P,?&4`?1AAL&`,8:Q(>`$-80#^/%A/
  1438. + M("P12`R````!$&<4#(````$.9PP,@````05G!$J`:M1.=2`/64"PK`Q\90!\
  1439. + MVF&T8!1A`/=\*4`12&&H2'@!#F$`_?983PRL```!#A%(9^).=2`/64"PK`Q\
  1440. + M90!\JDCG`!0@+P`0)F\`%"!O``PI2Q$D2^P1/"K`<`$JP$*=*4@1-"E($3A*
  1441. + MK!$L9@I(;`$43KI2;%A/80#W&"EK`!@13"E`$4@,@````0-F($AX`0)A`/V&
  1442. + M80#V^BE`$4AA`/]D2'@!#6$`_7)03V`$80#_5`RL```!!1%(9AI(>`$$80#]
  1443. + M6$AX`0UA`/U080#VQ%!/*4`12'#_L*P12&<*2&P!*$ZZ4?Q83W#_D*L`("\`
  1444. + M80#]*$AX`0UA`/T@4$]*JP`@9PI(>`$.80#]$%A/4JL`($S?*`!.=;_L#'QE
  1445. + M`'O*2.<#%"9O`!@J;P`4?@!\`&`0(%/1QB)5T\8@V2#94H=0AKZM``1MZB=M
  1446. + M``0`!$S?*,!.=2`/D'P`$+"L#'QE`'N(GOP`$$CG!S8J;P`X?@!\`"HM``1@
  1447. + M!%*'4(:^A6P,(%71QB`O`#"PD&7L("T`!+Z`;!PB!^>!(%71P29((B\`,+*3
  1448. + M9@HB+P`T@ZL`!&!`0>\`,$/O`"0BV"+84JT`!"P'YX9@)"!5(DC3QD7O`!PL
  1449. + M2BS9+-E2A]'&0^\`)"Q)(-X@WB+:(MI0AKZM``1MUDS?;.#>_``03G4@#UE`
  1450. + ML*P,?&4`>N193TCG+S9^`'P`(&\`-$*H``1Z`$*O`"1@``"`)E/7Q2@O`"0D
  1451. + M4M7$(A(D$[2!4L!$`$B`2,`B+0`$YX$J5=O!2H!G$"!O`#12J``$4H<JVRK;
  1452. + M8$12AE"O`"2TDF0.(&\`-%*H``0JVBK:8"Y2ARK;*ML@;P`T(B@`!%*H``3G
  1453. + M@2!O`#0F4-?!+&\`,"I6V\0@+0`$@:L`!%"%)F\`+"IO`#0D;P`POJL`!&P(
  1454. + MO*H`!&T`_VHH!^>$8!HB+0`$4JT`!%*'(%/1Q.>!(E73P2+8(MA0A+ZK``1M
  1455. + MX"X&YX=@&B(M``12K0`$4H8@4M''YX$B5=/!(M@BV%"'O*H`!&W@3-]L]%A/
  1456. + M3G6_[`Q\90!YU$CG!P0J;P`<?@!\`"HM``1@$"!5("\`%+"P:`!G"%*'4(:^
  1457. + MA6WL("T`!+Z`;"!3K0`$+`?GAF`0(%71QD/H``@@V2#94H=0AKZM``1MZDS?
  1458. + M(.!.=2`/D'P`)+"L#'QE`'ERGOP`'$CG/S9-[P!,)EXJ;P!(?`!*GE;`<@"2
  1459. + M`"]!`#Q*GE;`=`"4`'@`*BL`!'X`+T(`,&`0(%/1QR`0T*@`!+&&4H10A[B%
  1460. + M;>P@!G@`?``B+0`H+T``."]!`#1@="1M`"35QKZ29F0@*P`$(BH`"+*`9E@2
  1461. + M*@`,2(%(P;J!9DP2*@`-2(%(P20O`#"T@68\?@!X`"HK``1@'B!3T<0B:@`$
  1462. + MT\0@*``$L*D`!&8.(!"PD68(4H=0A+Z%;=XH+P!`OJL`!&8&(`1@``'J4H1P
  1463. + M%-R`+T0`0"XO`#@J+P`\N*\`-&T`_WH@+0`HL*T`+&TR8`HB+0`LTH$K00`L
  1464. + M("T`*+"M`"QL["`M`"PB`.6!TH#E@2\!+RT`)&$`\+Q03RM``"0@!.6`T(3E
  1465. + M@"@`)&T`)-7$)(<B*P`$YX$O`6$`\$0E0``$(&T`)-'$0^@`!"Z)+PMA`/Q,
  1466. + M4$\@;0`DT<1-Z``,',4B+P`P',%"'D(H``]"J``0>@!^`"PO`$!@``$H(E/3
  1467. + MQR(1Y8$D;0`,(#(8`&H``.XH*0`$(B\`/%;!=`"4`90!6()R`28!Y:/&A&<6
  1468. + M("\`,%;`=@"6`)8`)`'GHL2$9@``@B`O`#Q6P'8`E@"6`%B#)`'GHL2$9Q8@
  1469. + M+P`P5L!V`)8`E@!2@R0!YZ+$A&94("\`/%;`=@"6`)8`6H,D`>>BQ(1G%"`O
  1470. + M`#!6P'8`E@"6`"0!YZ+$A&8J2J\`/%;"=@"6`I8"6H,D`>>BQ(1G)DJO`#!6
  1471. + MPG8`E@*6`E*#YZ'"A&<2)`;E@M2&Y8(L;0`DW<*)+@`/(`;E@-"&Y8`B;0`D
  1472. + MT\!*J0`09C8L4R0V>`#E@BQM``PC=B@``!!@(@R````!`68:(`;E@-"&Y8`@
  1473. + M;0`DT<`1?`#_``\1?``!``Y2A5"'NJL`!&T`_M12K0`H(`9,WVS\WOP`'$YU
  1474. + M(`^0?``DL*P,?&4`=J:>_``<2.<'-BIO`$`B+0`0Y8$O`6$`[J!83WX`)D`O
  1475. + M0``<8`1"FU*'OJT`$&WV?@!@``$L+`?GAB13U<8B$N6!)FT`#"`S&``,@```
  1476. + M`0!M``$,#(````$!9P`!`@R````!$6P``/@@2D/O`"@BV"+8+V\`+``T(F\`
  1477. + M/"!1T<9-[P`@+-@LV"\)3>\`))[\``@B3W`'$MY1R/_\80#\+D_O``PB+P`H
  1478. + MY8$F;P`<U\%*DV<&4X=@``"F<@$F@2(O`"CE@2!M``S1P2`0!(````$";40,
  1479. + M@`````AL/-!`,#L`!D[[``0`#@`P`!(`,``6`!P`(@`H<#!@&'!08!1P>="`
  1480. + M8!!P>M"`8`IP>]"`8`1P!D8`P:\`-'X`?``J+P`HYX4D;P`\8"@B4R]Q:```
  1481. + M,"\*0^\`-)[\``@L3W`''-E1R/_\80#YS$_O``Q2AU"&)FT`,-?%OJL`!&W,
  1482. + M?O]2AR9O`#R^JP`$;0#^S"\O`!Q.NG:86$],WVS@WOP`'$YU(`^0?`!4L*P,
  1483. + M?&4`=1J>_`!$2.</-BIO`&@K;P!L`#0B+0`8Y8$O`6$`[0XB+0`8Y8$N@2]`
  1484. + M`&0O0``T80#L^B(M`!SG@2Z!+T``8"]``#!A`.SF(BT`'.>!($`B0-/!(BT`
  1485. + M&.6!+H$O0``L+TD`7&$`[,8B+0`<YX$N@2]``%@O0``H80#LLB(M`!SG@2!`
  1486. + M(D#3P2(M`!#E@2Z!+T``)"])`%1A`.R26$\D0'X`)D!@!$*;4H>^K0`0;?8B
  1487. + M+0`<YX$O`6$`['(O0`!$2'@`""\M`!!A`.PL3^\`#"M``#!^`"]*`#1\`&``
  1488. + M`T`J;P!4(`?E@"!K``P@,`@`!(````$`9R!R"I"!9P``[%.`9SA3@&<T4X!G
  1489. + M``$`4X!G``)68``"D'`!(&\`8"#`0^T`!$*5+&\`7$*>+T@`8"])`%0O3@!<
  1490. + M8``"W"!O`%PO:/_\`$PO;P!8`$AZ`"IO`%!@``"*(A7G@2!K`##1P4AO`$`O
  1491. + M"$AO`%!A`/C`3^\`#"(5Y8$@+P!$4X"PLA@`;3Y@!B(3TH$F@2(5Y8$F2M?!
  1492. + M("\`1%.`L)-LZ"`5(@#G@2)O`&@F:0`PU\'E@"`R"`#G@"\`+Q-A`.O&4$\F
  1493. + M@"9O`&@B%>>!(&L`,-'!+PA(;P!$80#W=%!/4H50C2!O`%2ZJ/_\;0#_;B`'
  1494. + MY8`@:P`,#+````$,"`!G``(:<`$@;P!@(4#__&```@P@;P!<+VC__`!,+V\`
  1495. + M6`!(>@`B+?_\YX$J;P!0V\%@``"*(A7G@2!K`##1P4AO`$`O"$AO`%!A`/?H
  1496. + M3^\`#"(5Y8$@+P!$4X"PLA@`;3Y@!B(3TH$F@2(5Y8$F2M?!("\`1%.`L)-L
  1497. + MZ"`5(@#G@2)O`&@F:0`PU\'E@"`R"`#G@"\`+Q-A`.KN4$\F@"9O`&@B%>>!
  1498. + M(&L`,-'!+PA(;P!$80#VG%!/4H50C2!O`%2ZJ/_X;0#_;B9O`&`J;P!<2JO_
  1499. + M^&<*("W__-&M__A@"B(M__SG@=.O`%@@35F(*F\`5"](`%Q*J__\9PH@+?_\
  1500. + MT:W_^&`^(BW_^.>!)F\`4-?!*BW__%.%*`7GA&`2(&\`4-'$(DO3Q"+8(MA3
  1501. + MA5&$2H5JZB(M__CG@=.O`%`K;?_\__A9C29O`&`O30!42JO__&<*2JO_^&<$
  1502. + M<`%@`G``)T#_^%F++TL`8&```+!-[P!<(%8@*/_\T:C_^%F>("W__-&M__A9
  1503. + MC29>+TT`5$JK__QF"DJK__AF!'``8`)P`2=`__A9BR]+`&!@<"`'Y8`@:P`,
  1504. + MT<`,D````0%7P$0`2(!(P")O`&`BP$'M``1P`2J`+&\`7"S`4:\`6$OO`%!1
  1505. + MG2('*L@@;P!0(($O20!@(ETB@7(`1@$A00`$(T$`!"!O`#0@@"9K`##7QDAX
  1506. + M``@O3@!@80#I'%A/)H!2AUBO`#10AB9O`&B^JP`0;0#\N'X`?`!Z`&!Z*FL`
  1507. + M#"`U:``,@````0!M$`R````!`6<(#(````$1;50@:P`PT<5(;P!`+PAA`/3J
  1508. + M+HM(;P!(80#Y_D_O``PF:P`PU\4@+P!$(BL`!+*`;`[G@"\`+Q-A`.CV4$\F
  1509. + M@"9O`&@@:P`PT<4O"$AO`$1A`/2H4$]2AUB&4(6^JP`0;8!"KP!$?@`F;P!8
  1510. + M*F\`7&`L($M#[P`X(M@BV$AO`$!#[P`\GOP`""Q/<`<<V5'(__QA`/2B3^\`
  1511. + M#%*'4(N^K?_\;<XJ;P!H+PU(;P!$80#Y:%!/?`!^`"HO`$0F;P!`8!IP,,"K
  1512. + M``1R8-*!PJL`!.2)LH!G`GP!4H=0B[Z%;>)P`2M``"Q"K0`H2'@`%&$`Y^PK
  1513. + M0``D0I<O!DAO`$@O#6$`]DHNKP!`3KIQ)"ZO`#Q.NG$<+J\`.$ZZ<10NKP`T
  1514. + M3KIQ#"ZO`#!.NG$$+HI.NG#^+J\`4$ZZ</9/[P`03-]L\-[\`$1.=2`/D'PH
  1515. + MS+"L#'QE`&]VGOPHO$CG+S9"KP#<2JP-#&8^<`$I0`T,?`!P?[R`8AAP!T'L
  1516. + M"KW`,&@`9PQ(;`S,+P9A`.@J4$]2A@R&```!`&W82&P,[$AX``IA`.@24$](
  1517. + M;P"T80#HB%A/0J\`6$*O`#A+[P#@0>\@X"`O*.0B`.6!TH#E@21O*.@O00`D
  1518. + M+T@`,&```P(@:P`$T>\`.$/O`-0BV"+8(B\`U.6!)FH`#"`S&`!K%`R````!
  1519. + M`&P,2&\`M"\`80#GJ&`@#(````$1;0`"O`2````!$>N`(%+1P$AO`+0O"&$`
  1520. + MY]A03R`O`-AR`$8!L(%G``#V(&H`)-'&2B@`#%;!=`"4`90!6H)R`>6AP(%F
  1521. + M#DAO`+1(>``*80#G=E!/)FH`)-?&2BL`#%;`<@"2`)(`6(%P`>.@(B\`V,*`
  1522. + M9AY\`'X`0>\`M$/L#.P@,7@`P;!X`%*&6(=P"+R`9>9**P`-5L!R`)(`D@!2
  1523. + M@7`!XZ`B+P#8PH!F('P`?@!![P"T0^P,S"`Q>`!&@,&P>`!2AEB'<`B\@&7D
  1524. + M2BL`#5;`<@"2`)(`<`'CH"(O`-C"@&8>?`!^`$'O`+1#[`S,(#%X`,&P>`!2
  1525. + MAEB'<`B\@&7F?`!'[P"T8`12AEB+<`B\@&0$2I-G\E&&9P`!HGH`1>\`X"]-
  1526. + M`$`O;P`P`#Q+[R#@8``!*B(O`-3E@2)O*.@F:0`,(#,8`&L8#(````$`;!`O
  1527. + M"B\`80#F'%!/2H!G``#V>`!\`'X`0>\`D$/O`+0@,7@`P+)X`"&`>`!G`G@!
  1528. + M4H98AW`(O(!EWDJ$9P``R$*O`+!"KP!L?`!^`$?O`+37QR@3*C)X`$'O`'`@
  1529. + M!$:`P(4A@'@`9P9P`2]``&Q&A<B%)H1G!G`!+T``L%*&6(=P"+R`9<8L+P#<
  1530. + M2J\`;&=6)F\`0"\+2&\`=&$`Y@0NBDAO`)AA`.7Z(&\H]"(H`!SG@2Z!80#D
  1531. + MP"!O`$@@@"Z(+PUA`/#03^\`$%*&+T8`W$'K`"!0KP`\<"#1KP`T4*\`,"](
  1532. + M`$`B+0`$4JT`!.>!(%71P4/O`-0@V2#9*B\`5$JO`+!G%E*%U/P`(%"-+T4`
  1533. + M5"PO`-RZAFT`_LPJ;P`T)&\HZ+J&9D8O#4AO`+AA`.5P2&\`O&$`Y98B*@`<
  1534. + MYX$N@6$`Y#)/[P`,(&\`,""`<@$A00`$(E!-[P#4(MXBWE*&VOP`(%"O`#`O
  1535. + M1@#<4J\`6%"O`#@O30`T+"\`)"9J`"37QB`O`%BPJP`(;0#\Z"(J`!SG@2\!
  1536. + M80#CW"]``&@B*@`<YX$N@6$`X\Q83WP`*F\H["]``"A*J@`T9P``Z'H`0J\`
  1537. + M7"1J`"0H*@`(?@!@."9J``37QW`PP*L`!')@TH'"JP`$Y(FR@&<">@%P`\"K
  1538. + M``1R#,*K``3DB;*`9P9P`2]``%Q2AE"'O(1MQ$AO`&1(:@`$80#O?"9O*/!P
  1539. + M`"Z`+P!(;P!P+PMA`/&Z3^\`%"@`2H5G&$*G2'@``4AO`&PO"V$`\:!/[P`0
  1540. + M*@!@`BH$2J\`7&<82'@``4*G2&\`;"\+80#Q@$_O`!`N`&`"+@1\`"9-<`J\
  1541. + M@&8$)H5@&'!_O(!B$'`'0>P*O<`P:`!G!":'8`(FA%*&6(L,A@```0!MTF`0
  1542. + M)DUP_R;`4H8,A@```0!M\D*O`%A%[R#@0>\`X"](`"Q@``(:0J\`:'H`>`!@
  1543. + M4'P`?@!@+B!3T<=#[P!,(M@BV$AO`&1#[P!0GOP`""Q/<`<<V5'(__QA`.[2
  1544. + M3^\`#%*&4(<@4B(P2`#G@2)O*.@F:0`PU\&\JP`$;;I2A5"$NJH`!&VJ)F\H
  1545. + MZ$JK`#1G1'P`?@!@-"!K`"0B:``$T\=![P!$(-D@V4AO`&1#[P!(GOP`""Q/
  1546. + M<`<<V5'(__QA`.YL3^\`#%*&4(<@:P`DO*@`"&W">@`O+P`L2'@`"F$`XJ!0
  1547. + M3TJ`9RI\`"XO`&@F;P!D8!IP,,"K``1R8-*!PJL`!.2)LH!G`GH!4H90B[R'
  1548. + M;>)X`'X`?``F;P`L(#-H`$'L#,S`L&@`9@I2AUB&<`B^@&7H<`B^@&0H?``N
  1549. + M+P!H)F\`9&`8<`/`JP`$<@S"JP`$Y(FR@&<">`%2AE"+O(=MY"9O*.AP`"\`
  1550. + M+P!(;P!L+PMA`._.3^\`$"P`+T``)$J%9QI"ITAX``%(;P!L+PMA`.^P3^\`
  1551. + M$"]``&!@!"]&`&!*A&<82'@``4*G2&\`;"\+80#OCD_O`!`J`&`"*@9"KP!4
  1552. + M)F\`+'@`8%Q^`'`![Z`D$\2`9SXL!-R'<@J\@68*Y88KKP!@:`!@*G)_O(%B
  1553. + M%'('0>P*O<(P:`!G".6&*X5H`&`0#(8```$`;`CEABNO`"1H`%*'<""^@&6P
  1554. + M4J\`5%B+<"#8@`RO````"`!499I2KP!84(IP(-&O`"PN+P#<("\`6+"';0#]
  1555. + MW'P`1^\@X&`,+Q-.NFG,6$]2AE"+O(=M\"\O`&1.NFFZ+J\`+$ZZ:;)83TS?
  1556. + M;/3>_"B\3G4@#Y!\`!2PK`Q\90!H-%%/2.<_-"IO`#0H+P`P#*T```0``#QM
  1557. + M2'P`>@!@-B!M`$`@,%@`9PXO`$ZZ:6I83R!M`$!@%B!M`$@@,%@`9Q`O`$ZZ
  1558. + M:5)83R!M`$A"L%@`4H98A;RM`#AMQ'``*T``/%*M`#PL!.6&(`8B;0!,0K$(
  1559. + M`"($Y8'2A.6!)FT`)-?!+T``*"]!`"04*P`,5L)V`)8"E@):@W0!YZ(6*P`/
  1560. + MQ`-G(!0K``U6PG``D`*0`G0!X:+$`V<,(FT`3-/&".D``@`#$"L`#%;`=`"4
  1561. + M`)0`6()P`28`Y:,4*P`/Q@)G(A8K``U6PW(`D@.2`U*!)@#CH\8"9PPB;0!,
  1562. + MT\8(Z0`!``-**P`,5L%T`)0!E`%8@B(`Y:$4*P`/P@)G'DHK``U6P78`E@&6
  1563. + M`>>@Q`!G#"!M`$S1Q@CH`````TAX!`!A`-\&)D`N@"\-+P1A`/=F3^\`#'X`
  1564. + M)$M@``"J("T`."(2LH!M``":*@!@"B(M`#C2@2M!`#@@$K"M`#AL[B(M`#A2
  1565. + M@>6!+P$O+0!$80#?#BM``$0@0$/H``0K20!`(BT`..6!+H$O+0!(80#>\"M`
  1566. + M`$@B+0`XY8$N@2\M`$QA`-[<*T``3"(M`#CE@2Z!+RT`4&$`WLA/[P`4*T``
  1567. + M4"@M`#@L!>6&8!0@;0!`0K!H`%*%(&T`2$*P:`!8AKJ$;>A2AUB*#(<```$`
  1568. + M;0#_4"(O`"@@;0!0(:L`*!@`</\G0``H(&T`)-'O`"1**``/9P8@;0!(8`0@
  1569. + M;0!`(8L8`$S?+/Q03TYU(`]10+"L#'QE`&7F+PTJ;P`(<`$K0``X0JT`/$AX
  1570. + M``1(>``"80#=IBM``$0@0$/H``0K20!`2'@`!"\M`#AA`-V,*T``2"(M`#CE
  1571. + M@2Z!80#=LBM``$PB+0`XY8$N@6$`W:(K0`!0+HU"IV$`_41/[P`4*E].=2`/
  1572. + M44"PK`Q\90!E<$CG#S9*K!$09CQP`2E`$1!^`$OL#1!P"KZ`9@1P!&`8<'^^
  1573. + M@&(0<`=![`J]P#!X`&<$<`)@`G`!*H!2AUB-#(<```$`;=`J;P`D2JT`.&8(
  1574. + M+PUA`/\J6$]\`"9O`"@D;0!`(&\`+!"\``H@!N6`*G((`"`-9SAP`!`;2,#E
  1575. + M@"HU"``@!>6`*G((`"`-9QIP`!`;2,#E@"PU"``@!N6`*G((`"`-9M!@!B`&
  1576. + M+`4J`$J&:VP@;P`LM\AB9"@&Y80L;P`D*FX`2-O$2I5G4G``$!-(P"X`Y8<B
  1577. + M;@!,(#%(`$/L#1#`L7@`9R@J;P`X(`UG'"`&Y8#0AN6`(FX`)-/`2BD`#F<&
  1578. + M<`$J@&`"0I4@"V!P*@92BR)5+#%X`&``_TXJ;P`L2J\`-&<2M\UB#G`*L"O_
  1579. + M_V8&(&\`-%*0M\UE!'``8#XJ;P`D2H9K$B\-+P9A`/O>4$\D;0!`8`#_$'`*
  1580. + ML"O__V862J\`,&<0(`7E@"!M`%`L,`@`8`#^\GP`8`#^[$S?;/!.=2`/64"P
  1581. + MK`Q\90!CWB\-*F\`"'`!*T``"$AX`"!A`-O<*H!"K0`$<`$K0``42'@`!&$`
  1582. + MV\@K0``,0JT`($*M`!Q"K0`80JT`$$*M`#1"K0`X4$\J7TYU(`^0?``,L*P,
  1583. + M?&4`8X9(YP<T+"\`*"XO`"`F;P`D*F\`'$JL$3!G``"^+P=.NF9L6$\D0$J`
  1584. + M9@I(;`$V3KHY3%A/0JP1,'H`8$@@3='%$!!R?[`!;C9(@$C`0^P*O0@Q```(
  1585. + M`&<F$!!(@$C`"#$```@`9PP0$$B`2,!R(-"!8`80$$B`2,`5@%@`8`05D%@`
  1586. + M4H6ZAV6T+PMA`/\00JL`AD(K`%0NBR\'+PIA`.8R+HI.NF1$+HMA``3^+H8O
  1587. + M"V$`[:QP`2E`$3`NBV$`_MXNBR\'+PUA`.8(+H8O"V$`[8Y/[P`<8"(O"V$`
  1588. + M_L`NBR\'+PUA`.7J+HMA``2\+H8O"V$`[6I/[P`03-\LX$YU(`]90+"L#'QE
  1589. + M`&)Z2.<#!"IO`!`O%4ZZ8]`NK0`,3KICR%A/?@!\`&`6(&T`)-'&+R@`!$ZZ
  1590. + M8[)83U*'<!3<@+ZM`"AMY"\M`"1.NF.<6$]^`'P`8!8@;0`P(#!H`&<(+P!.
  1591. + MNF.$6$]2AU"&OJT`$&WD+RT`,$ZZ8W!83WX`?`!@*"!M`$`@,&@`9P@O`$ZZ
  1592. + M8UA@$"!M`$@@,&@`9P@O`$ZZ8T983U*'6(:^K0`X;=(O+0!$3KIC,BZM`$A.
  1593. + MNF,J6$\@;0!0+T@`$$S?(,!.^F,8(`]10+"L#'QE`&&H2.<#%"IO`!@F;P`4
  1594. + M(`UF!'``8`P@34H89OQ3B)'-(`@N`"`+9@1\`&`02H=G/B!+2AAF_%.(D<LL
  1595. + M""`+9@Q2AR\'3KID:EA/8!`@!M"'4H`O`"\+3KIB+%!/)D`@"V<,(`UG""!+
  1596. + MT<80W6;\(`M,WRC`3G4@#U%`L*P,?&4`82@@;P`$+PA"IV$`_VI03TYU(`^0
  1597. + M?``,L*P,?&4`80I(YP$4*F\`%"!-2AAF_%.(D<TN""9O`!!@&"\'+PTO"TZZ
  1598. + M82)/[P`,2H!F!"`+8`A2BTH39N1P`$S?*(!.=2`/64"PK`Q\90!@P"!O``0@
  1599. + M"&<(+PA.NF(66$].=2`/64"PK`Q\90!@HDCG`!0J;P`,(`UG$B9-8`HO$TZZ
  1600. + M8?!83T*;2I-F\DS?*`!.=2`/44"PK`Q\90!@<DCG!S0N+P`D*F\`'"`-9@9P
  1601. + M`&```*HO+P`@80#_(EA/)D!*@&8,+PUAFEA/<`!@``".0C-X`'P`)$U@'B\+
  1602. + M+Q)A`/\84$]*@&<,+PM.NF&&6$\@#6!H4H98BDJ29MYZ`"`&Y8`D3=7`8"@O
  1603. + M%2\+80#^ZE!/2H!F!E*%6(U@%"\53KIA4EA/4X99BKR%9P@JDD*22I5FU"(&
  1604. + M5('E@2\!+R\`($ZZ8*A03R!`2H!F!'``8`SEAB&+:`!"L&@$(`A,WRS@3G4@
  1605. + M#Y!\``RPK`Q\90!?H$CG`S0J;P`8(`UG!DJO`!QF!G``8```@$AX``1.NF*(
  1606. + M6$\F0$J`9@1P`&!J0I,D36!>?@`0$DB`2,`O`"\O`"!.NE^`8"A\`6`"4H80
  1607. + M,F@`9P:P-6@`9_*\AV\"+@80$DB`2,`O`$AM``%.NE]64$\J0"`-9M!*AV<4
  1608. + M+P<O"B\+80#^H$_O``PF0$J`9P92BDH29IX@"TS?+,!.=2`/D'P`#+"L#'QE
  1609. + M`%[V2.<`-"9O`!0J;P`0(`UG!"`+9@1P`&`L)$M@(B!2(`A*&&;\4XB1P"\(
  1610. + M+P`O#6$`_DA/[P`,*D!*@&<&6(I*DF;:(`U,WRP`3G4@#Y!\``RPK`Q\90!>
  1611. + MGEE/2.<`-"IO`!0@#6<&2J\`&&8$<`!@;$AX``1.NF&&6$\F0$J`9@1P`&!8
  1612. + M0I,D36!(*F\`&&`X+Q4O$F$`_K)03R1`2H!F#"\+80#]I%A/<`!@,"\*+PMA
  1613. + M`/]`)D`NBF$`_8Y03R`+9@1P`&`66(TD;P`,2I5FP%B*+TH`#$J29K`@"TS?
  1614. + M+`!83TYU(`]90+"L#'QE`%X&2.<`)"IO``P@;0`$(FT`""1M``Q"$D(10A`@
  1615. + M52](``Q,WR0`8`#],B`/D'P`(+"L#'QE`%W0GOP`%$CG/S8F;P!`0JL`AD(K
  1616. + M`%0B*P`04H'I@2\!3KI@MEA/*D`O0``L9P`$6B1-?@!@%$'L$10B32+8(M@B
  1617. + MV"+84H?:_``0OJL`$&_F?@`J2F!H2'@`!$ZZ8'PJ@$AX``).NF!R*T``!$AX
  1618. + M``).NF!F*T``"$AX``).NF!:3^\`$"M```PB%6<``X(D+0`$9P`#>B8M``AG
  1619. + M``-R2H!G``-L(&T`!")M``@L0$(60A%"$"!50I!2A]K\`!"^JP`0;Y)![`%$
  1620. + M0J\`-$*O`#`O2``X8``#*"!M``S1[P`P+A`F;P`L(`=2@&<``7H$@````0%G
  1621. + M4%.`9TQ3@&=(4X!G``,,4X!G/E.`9P`#`E.`9S13@&<P4X!G+%.`9RA3@&<P
  1622. + M4X!G+%.`9P`!*%.`9P`!?%.`9S)3@&<``M13@&<``LY@``)0+PIA`/YV6$]@
  1623. + M``*BM<MC``*XE/P`$"\*80#^8%A/8``"C$'K`""UR&4``IXF2I;\`!"4_``@
  1624. + M(&H`#")K``P0&+`99@9*`&;V9P8@:@`,0A!^`"IJ``1@`E*'$#5X`&<*(&L`
  1625. + M!+`P>`!G[B!J``1",'@`(&H`""`(2AAF_%.(D<`J""!K``@@"$H89OQ3B)'`
  1626. + M*`@N!;Z(;P(N!'P`8"`@!)"&(&L`"-'`(`60AB)J``C3P!`I__^P*/__9@92
  1627. + MAKR';=Q^`&`4(&H`"")((`60AM"'$[`(`'@`4H>^AFWH(&H`"$(P>``O$R\2
  1628. + M80#\]%!/*D!*@&<``=(O$F$`^N(NDDZZ7.Q83R2-8``!HK7+8P`!N)3\`!`@
  1629. + M:@`,0A!@``&.0>L`$+7(9@`!H'X`1>P!1&`D(%4@"$H89OQ3B)'`+`@@2DH8
  1630. + M9OQ3B)'*O(AC!B!3)'!X`%B'*E/;QTJ59M0O2@`X8``!9$'K`""UR&4``5HF
  1631. + M2I;\`!"4_``@+Q,O$F$`_`A03R2`9P`!0"IJ``A*%6=2(&L`!$H09THO#6$`
  1632. + M^;I83RI`2H!G``$@+RL`!"\-80#Y)E!/*D!*@&<``0P@34H89OQ3B)'-+P@O
  1633. + M#2\280#Z/B2`+HU.NEP63^\`#$J29P``YB!J``Q*$&<6+RL`!"\J``1A`/CB
  1634. + M4$\E0``$9P``R"!K``Q*$&8&(&H`"$(0+RL`""\J``AA`/B^4$\E0``(9P``
  1635. + MI"!J``Q*$&<<*FL`#$H59Q0O#2\(80#XG%!/)4``#&9F8```@$(08%YP_[Z`
  1636. + M;71*AV=P#(<```$1;0HO"F$`_!983V!"+PIA`/P,2^H`#"!51^H`!");+%,<
  1637. + MAQ*'$(<@52)J``0L6T(N``%"*0`!0B@``4AX``$O'2\280#Y;$_O`!`D@&<<
  1638. + MU/P`$%*O`#18KP`P*F\`0"`O`#2PK0`0;0#\S"IO`$!(>``Q+R\`/$AM`%1.
  1639. + MNEH\3^\`#$(M`(5![0!4(DA*&6;\4XF3R"M)`(9^`"9O`"PD2V`L+Q)A`/C:
  1640. + M+I)A`/BV+JH`!&$`^*XNJ@`(80#XIBZJ``QA`/B>6$]2A]3\`!"^K0`0;\XO
  1641. + M2P!`3-]L_-[\`!1.^EJN3-]L_-[\`!1.=0``3OD``(UH3OD``(J83OD``(V@
  1642. + M3OD``(J\3OD``(K43OD``*7H3OD``(O\3OD``(MT3OD``(LD<&$@#Y!\``RP
  1643. + MK`Q\90!8^$JL`4AF.C`\`/]R`$'L$5`0P5'(__QP&7(!0>P1L1#!4<C__'`9
  1644. + M0>P1D1#!4<C__'`)0>P1@!#!4<C__"E!`4A.=;_L#'QE`%BN(B\`!"`L`4PI
  1645. + M00%,3G4@#Y!\`-2PK`Q\90!8DI[\`,1(YS<V*F\`]"95)&\`["!*T>\`\")M
  1646. + M`!!"KP#D0J\`X$*O`-PO2P#83>\`.'X!0BT`%"](`"@O20`L+TX`-&$`_TA*
  1647. + MK0`$9@`(.'`<*T``!"(59PPO`"\!3KI9#E!/8`@O`$ZZ6S!83RJ`2H!G``AR
  1648. + M)D`O2P#88``("'#VT*T`!"(+DI6R@&]X($TJ4`RH``$````$9P`(1"!O`/0B
  1649. + M*``$TH$A00`$#($``0``;PAP`4A`(4``!"\H``0O$$ZZ6*I03R!O`/0@@&<`
  1650. + M"!:0C2P`U\8J;P#@(`UG!MO&+TT`X"IO`-P@#6<&V\8O30#<W:\`V"IO`.0@
  1651. + M#6<&V\8O30#D(&\`*+'*9P`'QGP`'!HJ;P`L(`UG""!-T<9\`!P0(`9R"I"!
  1652. + M9P`$&G(:D(%G1EF`9P`#\E.`9P`#^E.`9P`!1E.`9P`!-E>`9P`"3G(1D(%G
  1653. + M``$H<AR0@6<``L93@&<``_Q5@&<``,QR'I"!9P`#X&``!H8J;P`H""P``P%/
  1654. + M9S((+``%`4]F!K7-9@`&;"IO`.`@#6<0+PM(>``$+PUA``=03^\`#$*O`.!P
  1655. + M`Q;`8``&T+7-9W00$G(*L`%G;`@L``4!3V9D""P```%/9PYT*;`"5\%$`4B!
  1656. + M2,%@&')<L`%F#A0J``%V*;0#9@1V`6`"=@`B`TJ!9C((+``!`4]G#G1\L`)7
  1657. + MP40!2(%(P6`6<ERP`68,<'RP*@`!9@1P`6`"<``B`$J!9P`%T!;\``-@``90
  1658. + M2J\`W&<2<`JP*O_^9PH(+``%`4]G``6P""P``P%/9R`@;P#L4HBUR&<*""P`
  1659. + M!0%/9P`%E'`"%L`O2P#88``&$!;\``)@``8(""P``@%/9@`%=DJO`-QF"@@L
  1660. + M``4!3V<`!69"+P`S0B\`,G(KO(%6P$0`2("!+P`S=#^\@E;`1`!(@($O`#(@
  1661. + M;P`HL<I7P$0`2(!(P"P`9F1*AF8`!@!\`!P:(`UG"")-T\9\`!P1<"J\@&>V
  1662. + M""P``@%/9@B\@6>JO()GI@@L``(!3V<N<%R\@&8HL<IG``7&>@`:&B`-9P@@
  1663. + M3='%>@`:$+J!9PBZ@F<$58I@""P%8`#_<E.**F\`W"`-9P`%2DHO`#)G%B!-
  1664. + M2&C__4AX``<O"V$`!:1/[P`,5HM+ZP`#+PLO#2\O`.1(>``%80`%PD_O`!!"
  1665. + MKP#D)DU*+P`S9@`%""!O`-PO"TAH``8O"$AX``AA``6<3^\`$%:+8``$ZB!+
  1666. + M4HL0O``)+T@`W&``!-H@32I0#*@``0````1G``4D(&\`]"(H``32@2%!``0,
  1667. + M@0`!``!O"'`!2$`A0``$+R@`!"\03KI5BE!/(&\`]""`9P`$]I"-+`#7QBIO
  1668. + M`.`@#6<&V\8O30#@*F\`W"`-9P;;QB]-`-S=KP#8*F\`Y"`-9P;;QB]-`.0J
  1669. + M;P#T(`N0E7+=TJT`!+"!;@#_=B!+2^@``2](`-QP7K`29@P@2R9-$+P`"U**
  1670. + M8`@@2R9-$+P`"B!*%OP`("](`"1P'W(`(DL2P5'(__PJ;P`L(&\`*+'*9P`$
  1671. + M5'P`'!H@#6<((DW3QGP`'!%P7;R`9@HB;P`D4HFSRF9L<"VP$F9.<%VP*@`!
  1672. + M9T:QRF<`!"!+Z@`!L<UG``061>T``7H`&A4J;P`L(`UG("!-T<5Z`!H08!8@
  1673. + M!N:((@9T!\*"=`$F`N.CAS,(`%*&O(5CYF""(`;FB'0'S()T`>VBA3,(`&``
  1674. + M_W!3*___$"O__V\*2(!(P$HS"/]G[!`K__](@-;`8``#7@@L```!3V8``.I@
  1675. + M``+(""P```%/9@`!5&```KH(+``$`4]F``'*8``"K`@L``$!3V8``;Q@``*>
  1676. + M(&\`*+'*5\!$`$B`2,`L`&8``TY*AF8``UI\`!P:(`9R)Y"!9P`"(E.`9P``
  1677. + MA%.`9P``]E6`9P`"4%V`9P`"$E.`9P`"#%.`9P`"!E.`9P`"`%.`9P`!^E.`
  1678. + M9P`!]%.`9P`![E.`9P`!Z%.`9P`!XE>`9P`!K%6`9P`!KE.`9P`""%>`9P`!
  1679. + MLG(5D(%G``&"<@F0@6<``:I5@&<``91R%9"!9P`!7%N`9P`!`F```>0(+```
  1680. + M`4]F``':*F\`-$'O`-BQS6<``K)P"KZ`;`X@2Q"\``Q4BR`'$4```2!+(DT@
  1681. + M"RQO`/20EB*`6(U'Z0`(("\`X&<&D)92@&`"<``J@":'4H=#ZP`(("\`V)"6
  1682. + M)T``!$*O`.!"KP#<)D@O2P#8+TD`-&```?X(+````4]F``%B*F\`-$'O`#BQ
  1683. + MS6<``BY9C2)O`/0@4='5+T@`V"`O`.!G$"\+2'@`!"\`80`"-D_O``P@+?_\
  1684. + M<@JP@6P0($L0O``-5(L@+?_\$4```5&-0J\`X"`59PXB;P#T(E'3P%.)+TD`
  1685. + MX%F-+&\`]")6T]4O30`T+TD`W&```7H(+``!`4]F``#>+PM(:P`&+R\`X$AX
  1686. + M``5A``(&3^\`$$*O`.1+ZP`#)F\`X"`+9Q`O#4AX``0O"V$``:Y/[P`,1^T`
  1687. + M`T*O`-PO2P#8+TT`X&```28@2U*+$+P`%"](`-Q@``$6($M2BQ"\`!4O2`#<
  1688. + M8``!!A;\`!9@``#^%OP`%V```/86_``88```[A;\`!E@``#F%OP`$F```-X6
  1689. + M_``38```UBH&<#":@+J'9$(J;P`T48U@"B`5L(5G-)K\`!!![P`XN\AB[B!+
  1690. + M$+P`#E2+$44``2](`-Q@``">""P``@%/9@#ZF"`-9P;;QGP`'!4J;P#D(`UG
  1691. + M8A`52(`@3=#`0^@``;/+9E)R?[`!9TP0$G(JL`%G1')>L`%G/@@L``(!3V<>
  1692. + M<ERP`684$BH``70KL@)G!G8_L@-F!'(!8!AR`&`4<BNP`6<*<C^P`6<$<`!@
  1693. + M`G`!(@!*@6<:+TL`W'`!(&\`W!"`2^L``2]-`.14BW(`&H$6QE(5*F\`]+7O
  1694. + M`"AF`/?P)&\`X"`*9Q`O"TAX``0O"F$``%)/[P`,0>\`.")O`#2SR&82(`N0
  1695. + ME2M```AP`&`J0>P!4&`B0>P!;&`<0>P!>F`60>P!B&`00>P!K&`*0>P!OF`$
  1696. + M0>P!VB`(3-]L[-[\`,1.=;_L#'QE`$^62.<A%!XO`!LF;P`<*F\`%$/5$L=!
  1697. + M[0`#(`N0B"(`=`!&`L*"$L'@@!+`3-\HA$YU(`^0?``,L*P,?&4`3UA(YP$T
  1698. + M'B\`%RIO`!@F;P`@5HLD;P`@8`93BU.*%I*US6;V$`=(@$C`+TT`%"]``!A,
  1699. + MWRR`8(0@#Y!\`5BPK`Q\90!/%)[\`4Q(YS$V*F\!;"9M``PD52!*T>T`"")M
  1700. + M`!!-[P`H+T@`("])`!PO3@`D,#P`_W(`+$L<P5'(__P;?``!`!1"+0`58``"
  1701. + MUB!O`""QRF8.(&\!;!%\``$`%6```L8J;P`<<``0&E.`;0`"G`R`````&6P`
  1702. + M`I+00#`[``9.^P`$`#`"F@!:`(H!!`"*`(H`B@%(`;`"!@$T`30!.@*:`IH"
  1703. + MF@*:`IH!<`&0`IH"F@*:`IH@#6<6<``0*@`!<@`2-0``=`$7@A``8``"/'``
  1704. + M$"H``1>\``$``&```BP@#6<.<``0+0`*<@$7@0``8`9P`1=```HJ;P%L<`&P
  1705. + M+0`59P`"!AM\``(`%6```?P@;P%L$7P``0`5$"H``4B`2,#A@'(`$A(D`78`
  1706. + M1@/$@]2`(`)2@"!*T<!%Z``!2H)N``'><`6P$F8``=80*@`"2(!(P.&`<@`2
  1707. + M*@`!PH/2@%*!($K1P47H``(J;P`D0>\`*+'-9P`!JB!5L<IF``&B68TO30`D
  1708. + M8``!F"!*5(I8KP`D$"@``4B`2,#A@'(`$A`D`78`1@/$@]2`T<)#Z``"+&\`
  1709. + M)"R)8``!:%**8``!8G`!(&\!;!%``!470``*?@!P"KZ`9P87O``!>`!2APR'
  1710. + M```!`&WJ(&\!;$HH`!5G``$:8``!,GX`<`%![!%0L#!X`&8$%X!X`%*'#(<`
  1711. + M``$`;>9@``#V?@!P`4'L$5"P,'@`9P07@'@`4H<,AP```0!MYF```-9+Z@`!
  1712. + M<``0$B(`YX$N`5.')&\`'&`X(`=R"$ZZ2]!P`20`XZ(@!W((3KI+PA(U"`#"
  1713. + M`F<8(`IG#G``$#)X`'(!%X$``&`&%[P``7@`4X=*AVK$8```@'``$!(N`.>'
  1714. + M8!H@#6<.<``0-7@`<@$7@0``8`87O``!>`!2APR'```!`&W>2^H``7``$!(B
  1715. + M`.>!+@%3AR1O`!Q@."`'<@A.NDM.<`$D`..B(`=R"$ZZ2T`2-0@`P@)F&"`*
  1716. + M9PYP`!`R>`!R`1>!``!@!A>\``%X`%.'2H=JQ"IO`"1![P`HL<UG$"!-68@D
  1717. + M52](`"0@"F8`_2A,WVR,WOP!3$YU(`^0?``DL*P,?&4`2]HO!R`O`!@B+P`4
  1718. + M+B\`$"!O``PB;P`(+P<O+P`@+P`O`2\'+PAP`"\`+P`O"6$```I/[P`D+A].
  1719. + M=2`/D'P`++"L#'QE`$N4GOP`#$CG+S0J+P!(+"\`1"XO`#@J;P`P)FT`#"1M
  1720. + M`!`H!]BO`$`O1``D(@MG#DHM`!1F""\-80#\.EA/("T`"&\4(%5P$K`09@Q*
  1721. + MA6\(2H9N``$^>@$@"V<``-*\A&P``,QP`;`M`!5G``#"2H5O8G@`+T4`(+R'
  1722. + M;`XB!M*%LH=M!B@%F(?8AKR';0@@;P`\D<=@!"!O`#31QBI((@IG'&`"4X6Z
  1723. + MA&\B<``0'7(`$C(``$HS$`!GZF`04X6ZA&\*<``0'4HS``!G\-RO`""<A6!:
  1724. + MO(=M$B`&D(<@;P`\$C`(`!]!`"M@#"!O`#00,&@`'T``*W#_P"\`*R(*9QAR
  1725. + M`!(`=``4,A``2C,@`%?!1`%(@4C!8!)R`!(`2C,0`%?`1`!(@$C`(@!*@69,
  1726. + M*"\`)"IO`#!*A6L.N(9F"B`+9P9*+0`59THO+P!0+R\`4"\&+R\`3"\O`$PO
  1727. + M!R\O`$PO#6$``'9/[P`@2H!K#%2`9@1P_F`>(`9@&DJ%9Q1*A6\(4X52AF``
  1728. + M_M!2A5.&8`#^R'#_3-\L]-[\``Q.=2`/D'P`(+"L#'QE`$GJ("\`$"(O``P@
  1729. + M;P`((F\`!"\!+R\`&"\`+P$O"'``+P`O`"\)80``"$_O`"!.=2`/D'P#++"L
  1730. + M#'QE`$FNGOP#'$CG/S8N+P-0+"\#6"HO`V0L;P-((%8O2`-`T>X`"")N`!!-
  1731. + M[P"P+T@`/$'O`S`D;P-,2^\`I"K(+TD`,"K.*LY*AF80($HL!Y7*+TH#3'X`
  1732. + M+T@#5"I*V\<@329O`U0L2]W&+T@`-"].`#BZAVX.($K1Q2]+`S@O2`,\8`XO
  1733. + M30,\($O1Q9''+T@#.'H`2^\`5#1\__\JRE*%<`JZ@&7V*B\#7+J';@X@;P-,
  1734. + MT<4O;P,\`S!@#"!+T<61QR]O`S@#,"](`S0F;P-`)&\#-"IO`S"W[P`\9@``
  1735. + MU"9O`V`J+P-<(`MG``"F)H6[[P,\9@PB"I*O`TPG00`H8`P@"I"O`U30AR=`
  1736. + M`"AX`4?O`%@P?/__+T@`+"!++`3EAB)3+&\`++W)9@QP_R)O`V`C@&@`8$Q'
  1737. + M[P!\U\8B3]+\`$I*,4@`9P@B$Y*O`TQ@""(3DJ\#5-*'(F\#8".!:``F2"!/
  1738. + MT/P`0$HP2`!G#"(3DJ\#3".!:"A@#"`3D*\#5-"'(X!H*%*$6(MP"KB`;8J[
  1739. + M[P,\9@P@"I"O`TR0A6``!]P@"I"O`U30AY"%8``'SB!+0^@``29O`SAP`!`0
  1740. + M+TD#0%.`;0`'9`R`````&6P`!UK00#`[``9.^P`$!M0"7@)T!$@"L@1$`U`$
  1741. + M<@&6`<P!S``P`&@`H`=,!TP'3`:L!K@&7`:,!9P%\@38!3H@;P-`<``0$$C`
  1742. + M(@#E@4/O`'S3P2**4J\#0+OO`SQ7P$0`2(!(P'(`$A`@3]#\`$H1@!``8`#^
  1743. + MAB!O`T!P`!`02,`B`.6!0^\`5-/!(HI2KP-`N^\#/%?`1`!(@$C`<@`2$"!/
  1744. + MT/P`0!&`$`!@`/Y.>``@;P-`&!@@!.6`0^\`?"9Q"``O2`-`($_0_`!*$C!(
  1745. + M`")/TOP`0+(Q2`!F"D'O`%31P")08`0B;P,\)$E@'B!O`SBQRF<:(`3E@$'O
  1746. + M`%31P"I(M=5G"B9O`U0D5;?*9]XJ;P,TM\IF&F``_>`@;P,X(F\#,+/(9P`&
  1747. + M.BIO`U0O2`,PN^\#,&?D*B\#,"(-FH$@"B0+D(*Z@&\"*@`@+P`P9Q(O`"\%
  1748. + M+P(O`6$`!EI/[P`08!P@!2!-(D)R`$J`9PX2&)(99@13@&;V2(%(P2`!2H!F
  1749. + M``7>($W1Q=?%+T@#-&``_WJ[RV<`!<HD;P-4*DLO30,PM<UG[$OJ``$F;P`P
  1750. + M(`MG$"]-`S1P`!`2<@`2,P``8`HO30,T<``0$B(`<`JR@&8`_29@``6*>`!P
  1751. + M"R!O`T"P*/__9A1X`6`0N\MG``5R)&\#5"I++TT#,+7-9^PJ;P`P(`UG#'``
  1752. + M$!)Z`!HU``!@!'H`&A(J;P-`<``0%2(`YX&Z@6PH(`5R"$ZZ1+QP`20`XZ(@
  1753. + M!7((3KI$KA(U"`'"`F<*2H17Q$0$2(1(Q'``$!52@"!-T<`O2`-`2H1G``4`
  1754. + M0>H``6``_(RU[P-,9P#\B'`*L"K__V8`!.9@`/QZ(&\`.+'*9P#\<+7O`#1F
  1755. + M%DJ&9PYP"B!O`U2P$&<$<@!@$G(!8`YR"K(25\!$`$B`2,`B`$J!9P`$J&``
  1756. + M_#PJ;P"D)F\`J+?-9EHJ#9JO`*SDA2(L`>S2@;J!;P9P_F``!,HH!=B$(`3E
  1757. + M@"\`3KHC;"I`(@7E@2Z!+R\`L"\`3KI%C$_O``PB"Y*O`*SD@>6!)DW7P2`$
  1758. + MY8`@3='`+TT`K"](`*0@;P-`5*\#0!`H``%(@$C`X8!R`!(0)`%V`$8#Q(/4
  1759. + M@-'"0^@``B:)0>L`""=*``0O2`"H8`#[GB!O`T`0*``!2(!(P.&`<O_"$'0`
  1760. + M%`'4@"H"1>@``BI*)F\`/&`"4HV[RV<.$!5R#;`!9_)R#+`!9^R[RV<``)@0
  1761. + M%7(!L`%G"'0#L`)F``".5P!F!'`*8`9P`!`M``(H`"I*V\40+0`#L`%F$G(`
  1762. + M$BT`!;*$9PAR!A5!__U@7G(*L`%G!G(+L`%F4G(+L`%7P$0`2(!(P"H`<``0
  1763. + M+0`$YX"X@&PN(`1R"$ZZ0N)P`>.@'T``*"`$<@A.ND+2$B\`*!0U"`7$`6<*
  1764. + M2H57Q40%2(5(Q4J%9@9P!A5`__T@2E6(+T@#0'`&L"C__V<($7P`!/__8`11
  1765. + MKP"H(&\#0!`H``%(@$C`X8!R`!(0=`!&`L*"TH!2@='!0^@``2])`T!@`/I\
  1766. + M*F\`I"1O`*BUS69()F\`K"H-FHODA2@%V(0@!.6`+P!.NB&Z*D`B!>6!+H$O
  1767. + M"R\`3KI#W$_O``P@"I"+Y(#E@"1-U<`@!.6`($W1P"]-`*PO2`"D0I)!Z@`(
  1768. + M0JH`!"](`*A@`/]R(&\#3+'*9P#Z#"!O`#BQRF<`^@(J;P`TM<UF!DJ&9P#Y
  1769. + M]+7-9@IP`"!O`U00$&`$<``0$G0!0>P14+0P"`!7P40!2(%(P7``$"K__[0P
  1770. + M``!7PD0"2()(PK2!9P`"(&``^;0@;P-,L<IG``(2(&\`.+'*9P`"""IO`#2U
  1771. + MS68&2H9G``'ZM<UF"G``(&\#5!`08`1P`!`2=`%![!%0M#`(`%?!1`%(@4C!
  1772. + M<``0*O__M#```%?"1`)(@DC"M(%G`/E68``!NB!O`#BQRF<``;`J;P`TM<UF
  1773. + M!DJ&9P`!HKO*9@8@;P-48`(@2G``$!!R`4'L$5"R,```9@`!A+7O`TQG`/D4
  1774. + M<``0*O__<@%![!%0LC```&<``6A@`/C\(&\#3+'*9P`!6G``$"K__W(!0>P1
  1775. + M4+(P``!F``%&(&\`.+'*9P#XU"IO`#2US68&2H9G`/C&M<UF"G``(&\#5!`0
  1776. + M8`1P`!`2<@%![!%0LC`(`&<``0Y@`/BBN\MG``$$)&\#5"I++TT#,+7-9^Q!
  1777. + MZ@`!<``0$B](`S1![!%02C```&8`^'9@``#:N\MG``#4)&\#5"I++TT#,+7-
  1778. + M9^Q!Z@`!<``0$B](`S1![!%02C```&<`^$9@``"JM>\#3&8``*)@`/@V(&\`
  1779. + M.+'*9P#X++7O`#1F``",2H9F``"&8`#X&GH`(&\#0!H8+T@#0$JO`#!G2&`.
  1780. + MN\MG:"1O`U0J2R]-`S"US6?N<``0&B!O`#`4,```(F\#0+095L%$`4B!+TD#
  1781. + M0$H!9CI3A6;88"R[RV<P)&\#5"I++TT#,+7-9^X2&B!O`T"R&%;`1`!(@"](
  1782. + M`T!*`&8,4X5FXB]*`S1@`/>:*F\`J"!O`*RQS6<\2JW_^&8(48TO30"H8.8@
  1783. + M;?_\(DU1B2]1`T`O2`,T+TD`J+'O`TQE`/=DL>\`-&(`]UPO;P,\`S!@`/=2
  1784. + M</],WVS\WOP#'$YUO^P,?&4`0")(YR$T+B\`("IO`"0F;P`8)&\`'&`8<``0
  1785. + M&G(`$AL4-1``M#4``&<$<`%@"%.'2H=FY'``3-\LA$YU(`^0?``,L*P,?&4`
  1786. + M/]HO#2IO``@@#682("P24&8(0>P!\"`(8%QP`&!82JP24&8X2'@`R$ZZ0KA8
  1787. + M3RE`$E!F"$'L`A`@"&`Z*7P```#($E1(>`$`3KI"F%A/*4`27&8(0>P"(B`(
  1788. + M8!H@34H89OQ3B)'-2&P24"\(+PUA`.;,3^\`#"I?3G4@#Y!\`!BPK`Q\90`_
  1789. + M5")O``0@24H89OQ3B)')<``O`"\(+P`O""\)2&P24&$`\TQ*@%K!1`%(@4C!
  1790. + M3^\`&"`!3G4``+_L#'QE`#\62.<!!"XO`!`J;P`,8!`0%4B`2,"PAV8$(`U@
  1791. + M"%*-2A5F['``3-\@@$YUO^P,?&4`/N1(YP,4+B\`'"9O`!@J;P`4?`!@"!>U
  1792. + M:`!H`%*&O(=M]$S?*,!.=2`/D'P`#+"L#'QE`#ZP2.<!%"IO`!`N+!)TGJP2
  1793. + M<.6'+P=.NAT6)D`B+!)PY8$@3='!+H<O`"\(89@@+!)T(@#E@2!-T<$B+!)P
  1794. + MY8$B3=/!(BP".)*`Y8$N@2\)+PAA`/]R(BP2<-*L`CB2K!)TY8';P2Z'+PTO
  1795. + M"V$`_U@@+`(X2^P2<"(=TH"2E4_O`!PJP"E!$G!,WRB`3G4@#Y!\`"2PK`Q\
  1796. + M90`^%I[\`!!(YS\T*F\`1$*L`C1*K`(X9E1P`2E``CA"K!)H*4`2<"E`$G0@
  1797. + M;P!`$A!T+;("9@QT`BE"$FQ2KP!`8"IT*[("9@I"K!)L4J\`0&`:2&P"0$ZZ
  1798. + M0QY83TJ`9P9"K!)L8`9P`2E`$FPN+P`X2JP2:&<*(&P2:$H09@`!7'`!L*P2
  1799. + M;&9R("P2="(L$G"R@&<2L*P".&<,+R\`/&$`_KI83V`,(BP".+"!9P0I01)P
  1800. + M(BP"..6!)F\`/-?!8`92K`(X6(L@+`(XL(=L)"!+)%`0$G(ML`%F"")02BD`
  1801. + M`680(@UGVG(KL`%FU$HJ``%GSB`L`C@I0!)T("P".+Z`9U#E@$AL`E`@;P!`
  1802. + M+S`(`$ZZ/7!03TJ`9CA2K`(X("P2="(L$G"R@&<2L*P".&<,+R\`/&$`_B18
  1803. + M3V`,LH!F""`L`C@I0!)P(`<I0`(X*4`2="`L`CBPAV86("P2<"(L$G2R@&<$
  1804. + M*4`".'#_8``$9"(L`CCE@2!O`#PD<!@`%!)V+;0#9@HB<!@`2BD``68NNOP`
  1805. + M`&<,=BNT`V8&2BH``68<2JP2;&8&</]@``0F4JP"."EP&``"-'`!8``$%E**
  1806. + M(`UG#!`2<BVP`68$=`%@`G0`(DK3PBE)$F@@#6<``M(@+`(X(@#E@2!O`#PD
  1807. + M<!@`$!)T+;`"9A`@<!@`M"@``6<.2J\`3&8(<BNP`68``J(D;!)H0J\`+'P`
  1808. + M0J\`*&`"4HH0$F<&<CVP`6;T+TT`,'H`8&(@"I"L$F@O`"\L$F@@;P`X+Q!.
  1809. + MNCP*3^\`#$J`9CPN"IZL$F@@;P`P+Q!.NCO&6$^^@&82(&\`,"@%<`$O0``L
  1810. + M+T@`*&`D2J\`*&8,(&\`,"@%+T@`*&`"?`%P$-&O`#!2A2!O`#!*D&:62H9G
  1811. + M1$JO`"QF/DJL`CQG("(L`CCE@2!O`#PO,!@`+Q!(;`)42&P,"$ZZ0:!/[P`0
  1812. + M+RP2:$ZZ.U+1K!)H4JP".%A/<#]@``+N+B\`.$JO`"AG``$:4JP".$H29W@@
  1813. + M;P`H2J@`!&<,0^H``2E)`C1@``#`2JP"/&=((BP"..6!(F\`/"1Q&/QP+;`J
  1814. + M``%F%B\0+Q%(;`)R2&P,"$ZZ02Y/[P`08!P0$DB`2,`O$"\`+Q%(;`*@2&P,
  1815. + M"$ZZ01!/[P`4+RP2:$ZZ.L+1K!)H6$]P/V```F)P`2!O`"BPJ``$9E`B+`(X
  1816. + MLH=L$E*L`CCE@2!O`#PI<!@``C1@-DJL`CQG'.6!(&\`/"\P&/PO$$AL`LY(
  1817. + M;`P(3KI`M$_O`!`O+!)H3KHZ9M&L$FA83W`_8``"!B\L$FA.NCI26$_1K!)H
  1818. + M)&\`2"`*9P(DA"!O`"@@*``(9PXB*``,($`@@7``8``!UB!O`"@@*``,8``!
  1819. + MRDJO`$QG-B(L`CCE@2!O`#PD<!@`<"VP*@`!9R!P*[`29QH@;!)H$!!(@$C`
  1820. + M+P`O+P!$80#ZO%!/2H!F:DJL`CQG3"(L`CCE@2!O`#PD<!@`<"VP*@`!9A@O
  1821. + M+!)H+Q!(;`+T2&P,"$ZZ/_9/[P`08!X0$DB`2,`O+!)H+P`O$$AL`Q1(;`P(
  1822. + M3KH_UD_O`!0O+!)H3KHYB-&L$FA2K`(X6$]P/V```21+[!)H(%40&"J('T``
  1823. + M)TB`2,`O`"\O`$0JR&$`^BY03R1`(&P2:$H09@12K`(X(`IG"A`O`"=R.K`!
  1824. + M9E)*K`(\9T80+P`G<B"P`6T&<G^P`6T:2(!(P"\`(&\`0"\02&P#-$AL#`A.
  1825. + MNC]08!A(@$C`+P`@;P!`+Q!(;`-B2&P,"$ZZ/S9/[P`0<#]@``"6<#JP*@`!
  1826. + M9@``A+`J``)F'B!L$F@0$&<**4@"-%*L`CA@!$*L`C23R2E)$FA@7B!L$FA*
  1827. + M$&<**4@"-%*L`CA@2"`L`CBPAV8N2JP"/&<@$"\`)TB`2,`O`"!O`$`O$$AL
  1828. + M`X)(;`P(3KH^PD_O`!!P/Q]``"=@$E*L`C@B`.6!(&\`/"EP&``"-$*L$F@0
  1829. + M+P`G2(!(P$S?+/S>_``03G4@#Y!\`!BPK`Q\90`X+B`O``0@;P`,(F\`"$*G
  1830. + M0J="IR\(+PDO`&$`^?!/[P`83G4``"`/D'P`$+"L#'QE`#?\*7P``"``$I!P
  1831. + M8.^(+P`I0!*(3KHZ[EA/*4`2@&8J(BPM3.6!0>P)_B\P&``O+!)\2&P#K$AL
  1832. + M#`A.NCX22'@``DZZ/1Q/[P`43G4@#Y!\`!2PK`Q\90`WI$CG)A0L+P`8("P2
  1833. + MB)"&L*P2D&)@8!0B+!*(TH$D+!*0U((I01*(*4(2D"`L$HB0AK"L$I!CX"\L
  1834. + M$H@O+!*`3KHX/E!/*4`2@&8J(BPM3.6!0>P)_B\P&``O+!)\2&P#R$AL#`A.
  1835. + MNCV.2'@``DZZ/)A/[P`4("P2A"(L$HS2@)*&*@8J;!*`)DW7P)?&*4$2C&`"
  1836. + M&ML@!5.%2H!F]BE&$H1*K!*<9P1P`&!\(&P2@-'L$H0O+!*0+P@O+!*43KHL
  1837. + MX$_O``PL`&PV0>P$`"`L$IAG`B!`(BPM3.6!0^P)_B\Q&``O""\L$GQ(;`/D
  1838. + M2&P,"$ZZ/0)/[P`4<`$I0!)X2H9F'B`L$H1O&'(*(&P2@+(P"/]G#'P!=`$I
  1839. + M0A*<$8$(`-VL$H0@!DS?*&1.=2`/D'P`#+"L#'QE`#9J2.<'!"PO`!PN+P`8
  1840. + M*F\`%'H`2JP2M&<44H5R"K(=5L!$`$B`2,!F\&```.(@+!*89QY*K!*L9AAR
  1841. + M.DJ&9@)R+2\!+P!(;`0(3KH]!$_O``Q*K!*H9R)P.DJ&9@)P+2(-DJP2@-*L
  1842. + M$HPO`"\!2&P$#DZZ/-Q/[P`,2JP2L&<8<#I*AF8"<"TO`"\'2&P$%$ZZ/+Y/
  1843. + M[P`,4H4(+``!#`%G3%*L"_(@+`ORL*P+^FXF(&P+ZE*L"^H0%1"`<@JP`68^
  1844. + M""P`!@P!9S9(;`OF3KI`XEA/8"I3K`OR$!5(@$C`2&P+YB\`3KH\LE!/8!(0
  1845. + M%4B`2,!(;`OF+P!.NCR>4$]R"K(=5L!$`$B`2,!FBD*L$VPI31-H(`5,WR#@
  1846. + M3G4@#Y!\`)BPK`Q\90`U0)[\`'A(YR\T?@!\`'`!+T``E'H`0J\`A$*L$VQ@
  1847. + M``24)FP2@-?L$H1@`E.+M^P2@&,(<`JP*___9O`@2R](`"@B;!*`M\EF""XL
  1848. + M$H1@``1D$!,I21-HT\8J22]-`(@H+P"4'T``+&```O0D2V`"4XJUS6,(<`JP
  1849. + M*O__9O(@2BI+)F\`*"](`"2[RV0.<@JR'5;`1`!(@$C`9NX@32](`"Y*KP"0
  1850. + M9P``XGH`+`V<BE.&8```QB`&D(5(;P`T+P`O!2\&+PI(;!-23KKHCD_O`!@N
  1851. + M`%*`9P``J"`O`%R0ARH`2JP2O&<,2H=F``"4NH9F``".2JP2N&<``)!@=$J'
  1852. + M;R00,GC_<G^P`6(0=``4`'`'0>P*O<`P*`!F6A`R>/]T7[`"9U#:A[J&;%X0
  1853. + M,E@`<G^P`6(0<@`2`'`'0>P*O<`P&`!F"A`R6`!R7[`!9CH@!5.`+P!(;P`X
  1854. + M+P<O!B\*0J="ITAL$U).NNH<3^\`("H`2H5NB"H'4H6ZAF\`_SB[RV8``=I@
  1855. + M``'X+B\`C"HO`(0F;P"(2JP2P&8``,12AR]'`(Q@%B`$4H1"IR\`+PMA`/T8
  1856. + M3^\`#-?`4X5*A6<$M\IEXBHL$J1@%K7L$VAC"E.*<`JP*O__9O!3KP"44X5*
  1857. + MA6\&M>P3:&+@2JP2I&8&2JP2H&<B2JP2M&8<2JP$&F862JP3;&8&M>P3:&,*
  1858. + M2&P$'DZZ+<183T*L!!HJ;P`D8!@@+P"44J\`E$*G+P`O"F$`_)A/[P`,U<"U
  1859. + MS67D("\`E%*O`)1(>``!+P`O"F$`_'I/[P`,+VP2H`"$8```[+?*9B)*A6\6
  1860. + M4X5"IR\O`)@O"B]%`)!A`/Q23^\`#%*O`)1@``#&M<MC``"\*DLJ+!*D8!2[
  1861. + M[!-H8PI3C7`*L"W__V;P4X13A;OL$VAC!$J%9N)*K!*D9@9*K!*@9R)*K!*T
  1862. + M9AQ*K`0:9A9*K!-L9@:[[!-H8PI(;`0J3KHL_%A/0JP$&F`4(`12A$*G+P`O
  1863. + M#6$`^]A/[P`,V\"[RV7H8!A2AR`$4H1(>``!+P`O#6$`^[I/[P`,V\"[RF7D
  1864. + M+T<`C$JL$J!G&D*G+R\`F"\*80#[FD_O``P@+!*@4X`O0`"$4J\`E&`$3KHI
  1865. + M("@O`)0J;P`N+TT`B"9O`"B[RV<B2&\`D$AO`)A"IR\++PU(;!+(80`'^$_O
  1866. + M`!@F0$J`9@#\[BIO`"@:KP`L*B\`C"9O`(A*K!+`9BXN+P"$8!H@!%*$0J<O
  1867. + M`"\+80#[(D_O``S7P%.'+T<`A+?-9```MDJ'9MQ@``"NN\MC``"H)$LN+!*D
  1868. + M8!2U[!-H8PI3BG`*L"K__V;P4X13A[7L$VAC!$J'9N)*K!*D9@9*K!*@9R)*
  1869. + MK!*T9AQ*K`0:9A9*K!-L9@:U[!-H8PI(;`0V3KHKOEA/0JP$&F`4(`12A$*G
  1870. + M+P`O"F$`^II/[P`,U<"URV7H8!A2A2`$4H1(>``!+P`O"F$`^GQ/[P`,U<"U
  1871. + MS67D+VP2H`"$?``B#9*L$H`N+!*$GH%@1"XL$J0D36`0M>P3:&,*4XIP"K`J
  1872. + M__]F\+7L$VAC""`'4X=*@&;B+`TB"IR!(`&0K!*`+BP2A)Z`LJP3:&,&<`$I
  1873. + M0!-L+T4`C"\'80#XU%A/2H!N`/M>(`5,WRSTWOP`>$YU(`^0?``,L*P,?&4`
  1874. + M,&(O+!)\2&P$0DAL#`A.NC:D2'@``DZZ-:Y/[P`03G4@#Y!\`2BPK`Q\90`P
  1875. + M-I[\`11(YR\T+B\!.$*O`3";S9?+?`!Z`$*O`2PD;P$\2'@`+R\23KHP,%!/
  1876. + M2H!G#"!`0^@``2E)$GQ@!"E2$GQ"K`(\8``"*B`$<C"0@6<``*93@&<``*!3
  1877. + M@&<``)I3@&<``)13@&<``(Y3@&<``(A3@&<``()3@&=\4X!G>%.`9W1=@&=H
  1878. + M58!G``"84X!G``"Z4X!G``#<<A.0@6<``.)R#)"!9P``[E.`9P``\E6`9P``
  1879. + M^%.`9P`!`E6`9P`!#%.`9P`!$%>`9P`!7%6`9P`!8%N`9P`!8E>`9P`!9%.`
  1880. + M9P`!9E.`9P`!:&```6QA`/[68``!?$/L$J`@$2(`Y8'2@-*!TH1P,)*`(L$B
  1881. + M&20!Y8+4@=2"U(24@"E"$J1@``%02&P2H$AL!-0O+`(T3KHTO$_O``Q*@&<(
  1882. + M("P2H&H``3!A`/Z"8``!*$AL$J1(;`38+RP"-$ZZ-)1/[P`,2H!G""`L$J1J
  1883. + M``$(80#^6F```0!P`BE`$J0I0!*@8```\DAL!)M(;`3<2&P,"$ZZ-/A@``#:
  1884. + M<`$I0!*H8```U'P!<`$I0!*T8```R"`+9P1A`/X6*FP"-&```+@@#6<$80#^
  1885. + M!B9L`C1@``"H<`$I0!*L8```GG`!+T`!,'@`0>P*O0@P``!(`&<>"#```$@`
  1886. + M9P@@!'(@T(%@`B`$($_0_``L$8!(`&`,(`0@3]#\`"P1@`@`4H0,A````0!M
  1887. + MP$'O`"PI2!-B8$IZ`7`!*4`2M&!`<`$I0!*P8#AP`2E`$K1@,'`!*4`2P&`H
  1888. + M<`$I0!*X8"!P`2E`$KQ@&"\L$GQ(;`3@2&P,"$ZZ-"!A`/U<3^\`#$AL!+0O
  1889. + M"B\'3KKU@$_O``PH`%*`9@#]PB\O`3!(>``4+T8`,"]%`"Q.NJ@@2'@`%$ZZ
  1890. + MU-Y/[P`,(`MG``#$2&P$_"\+3KH[/E!/)$!\0.6.>@!*@&8L(BPM3.6!0>P)
  1891. + M_B\P&``O"R\L$GQ(;`3^2&P,"$ZZ,Z)(>``"3KHRK$_O`!A(>`$`3KHP1%A/
  1892. + M8!H@15*%(@@;A!@`NH9F#MR&+P8O#4ZZ+?Q03RI`""H````;9R93J@`(;18(
  1893. + M*@`-`!YF#B!J``12J@`$<``0$&`2+PI.NC666$]@""\*3KHUC%A/*`!2@&:H
  1894. + M+PI.NCCV6$]*A6\*<`JP-5C_9@)3A2P%8#(@#68B("P".+"';01A`/Q((BP"
  1895. + M.%*L`CCE@2IR&``@34H89OQ@!B!-2AAF_%.(D<TL"$JL$KAF"$JL$KQG``".
  1896. + M(`9R,M"!+P!.NB^"6$\F0$JL$KAG#$'L!0HB2Q+89OQ@"D'L!1XB2Q+89OP@
  1897. + M2TH89OQ3B)'+*`@@"")+T\`O!B\-+PE.NBSN3^\`#-B&)$O5Q$JL$KAG#$'L
  1898. + M!2(B2A+89OQ@"D'L!38B2A+89OP@2DH89OQ3B)'*V(A(>``!2&P2R"\$+PM.
  1899. + MNLAJ8!!(>``!2&P2R"\&+PU.NLA83^\`$$AL$U(O!B\-3KK3/$_O``Q*@&<(
  1900. + M+P!A``'$6$]*K!*P9F)*K!+`9EP@+!-.9QYR,K"!9QA"ITAL$QQ.NBO,4$]%
  1901. + M[!,<U>P33K"*9P9"K!+$8#)"$DAL!3I.NB!*6$]*@&<.2&P3'$AL!41.NB9(
  1902. + M4$\O+P$P2&P3'&$``R903W`!*4`2Q"`'D*P".'("L(%L!G`!*4`2K&$`\T0L
  1903. + M+P`H*B\`)+ZL`CAO``#.)&\!/&```+I"K!*<0JP2C"(L`CA2K`(XY8$@<A@`
  1904. + M<``O`"\`+P@I2!*83KH8ND_O``PI0!*4:BXB+"U,Y8%![`G^+S`8`"\L$I@O
  1905. + M+!)\2&P%5DAL#`A.NC$T3^\`%'`!*4`2>&!:80#UAB@`9P9P`2]``2PO+!*4
  1906. + M3KH'4%A/2H9G*$JL$JQF%"\$+RP2F$AL!6).NB5V3^\`#&`D+P1(;`5J3KHE
  1907. + M9E!/8!9*A6<22H1G#B\L$IA(;`5N3KHE3E!/("P".+"';0#_0&`R80#U("@`
  1908. + M9P9P`2]``2Q*AF<.+P1(;`5R3KHE)%!/8!)*A6<.2H1G"DAL!79.NB386$]*
  1909. + MK!)X9PI(>``"3KHOE%A/2J\!+&<(0J=.NB^&6$](>``!3KHO?%A/<`%,WRST
  1910. + MWOP!%$YU(`^0?``0L*P,?&4`*?P@;P`$+P@O+!)\2&P%@$AL#`A.NC`XWOP`
  1911. + M$'`"+T``!$[Z+SP@#Y!\`!RPK`Q\90`IREE/2.<!-"XO`"0J;P`<)DTD;P`@
  1912. + M2JP2Q&9J1^\`'";-)LHFQTS?+(!8CT[ZQ"(F2BIO`!Q@`E.+M\UC!G`*L!-F
  1913. + M]"I*)&\`(&`"4HV[RF0&<`JP%6;T4HT0%4(5+R\`+"\O`"PO!R\-+PLO+P`L
  1914. + M'T``*$ZZP]I/[P`8&J\`$$J`9A@F32`*D(TO`"\+80``%%!/)$!*@&:6<`!,
  1915. + MWRR`6$].=2`/64"PK`Q\90`I'%E/2.<"-"PO`!PJ;P`8("PK^+"&;@``MB9-
  1916. + MU\8@+"OX(@#E@;R!;PH@2Y'!+T@`$&`$+TT`$"1-U<!3BBIO`!!@(-7&<``0
  1917. + M$DC`Y8!#[!-PU?$(`'``$!)(P"(`Y8'5\1@`M<UD&'``$!)(P"(`Y8%![!-P
  1918. + M+#`8`&;(8`)2BK7+9!1P`!`22,`B`.6!0>P3<$JP&`!FYK?*9S(L+"OX4X8J
  1919. + M2E.&;1A3C7``$!5![!=P$C```$/L&'"R,6@`9^1*AFL&4HI@`/]V(`I@`G``
  1920. + M3-\L0%A/3G4@#Y!\``RPK`Q\90`H.$CG+A0L+P`@*F\`'"!-2AAF_%.(D<TI
  1921. + M2"OX2H9G4GH`*`A@1B9-U\40$TB`2,!![`J]"#````@`9QX(,```"`!G#!`3
  1922. + M2(!(P'(@T(%@#A`U6`!(@$C`8`00-5@`2(!(P$'L&'`1@%@`4H6ZA&VV8!(O
  1923. + M+"OX+PU(;!AP3KHH:D_O``QZ`$OL$W`H+"OX*L0@!4'L%W`1@`@`4H4,A0``
  1924. + M`0!MZGH`*"PK^%.$8")P`$'L&'`0,%@`2,`B`.6!("PK^)"%4X!![!-P(8`8
  1925. + M`%*%NH1MVDOL&&_;["OX<``0%4C`Y8!![!-P0K`(`$J&9P``I'P`8$)'[!AP
  1926. + M<``0,V@`0>P*O0@P``$(`&<J"#```0@`9PIR`!(`=""2@F`$<@`2`"`!Y8`B
  1927. + M+"OXDH93@4'L$W`A@0@`4H:\A&VZ<``0%4'L"KT(,``!"`!G(`@P``$(`&<*
  1928. + M<@`2`'0@DH)@!'(`$@#E@4'L$W!"L!@`?$%![`J]"#```&@`9P@@!G(@T(%@
  1929. + M`B`&0>P7<!&`:`!2AG!:O(!OVDS?*'1.=0``2.<@,B!O`!A#[P`<1?H`'"9O
  1930. + M`!0D"RQY````!$ZN_?8@"Y""3-],!$YU%L!.=0``3KH'O"`L+51.=0``(&\`
  1931. + M!")O``A93TCG,S8J2'X`(&PM*"PH`.`O20`@2H9F($JL#*1F&D'L!:`B""QL
  1932. + M+90D/````^U.KO_B+`!G`GX!2H9G-B(&0>P%JB0(0>P,K"8(+&PME$ZN_IXB
  1933. + M!B0-)B\`($ZN_IXB!G0*3J[^R$J'9U@B!DZN_]Q@4"!L+2@F:`"X,'S__[?(
  1934. + M9T!#[`6P<"4L>``$3J[]V"1`2H!G+"EL#*P%E"E-!9@O"B!++$I#[`6,E<HF
  1935. + M;P`D3J[]M$S?!``B2BQX``1.KOYB3-]LS%A/3G4@;P`$0^\`"&$`_RI.=2!O
  1936. + M``1#[P`(80#_''`43KHJUDYU``!(YP`&<`AR`"QX``1.KO\Z*D!*@&8$<`!@
  1937. + M+D*M``1(>``H<``O`$'L!<1R`9/)P4%.NA[^4$\J@&8,(DUP"$ZN_RYP`&`"
  1938. + M(`U,WV``3G4@;P`$2.<`!BI((`UG&"!-80``'B!53KH?0B)-<`@L>``$3J[_
  1939. + M+DS?8`!.=2!O``1(YP`&*DA*K0`$9Q0B52QX``1.KOX@(E5.KOXF0JT`!$S?
  1940. + M8`!.=2!O``0@4")H``YP`!`I``]R`>&A(`%.=2!O``0@+P`((B\`#$CG`P8L
  1941. + M`2X`*DAAJDJ'9@1*AF<>(E4C1P`@(T8`)#-\``D`'"QX``1.KOXR<`$K0``$
  1942. + M3-]@P$YU(&\`!$CG``8J2$JM``1G'")5+'@`!$ZN_BQ*0&<.(E5.KOXF0JT`
  1943. + M!'`!8`)P`$S?8`!.=2\.("PM-"(`2$%"0=*`("PM*+.`*4`L`$*L+`1#[`78
  1944. + M<``L>``$3J[]V"E`*_QP_TZN_K9(@$C`*4`%U$JL*_QG"$J`:P1P`6`"<``I
  1945. + M0"P(+%].=2\.("P%U&L(+'@`!$ZN_K`@+"O\9PHB0"QX``1.KOYB+%].=2`O
  1946. + M``113TCG`P`N`$ZZ!0`@!TZZ`9!*@&<H(D`@:0`<<D#EB<*1+T@`#"`!(&D`
  1947. + M!")O``Q.D2P`(`=.N@%((`9@`G#_3-\`P%!/3G4@+P`$+P<N'V"N```@;P`$
  1948. + M("\`"")O``PO;P`0``0O;P`4``@O;P`8``PO;P`<`!`O;P`@`!0O;P`D`!A1
  1949. + M3TCG!Q0N`$CO`P``%'P`*FPL#&`62JT`!&8*,'P``2M(``1@#%*&VOP`)+RL
  1950. + M+!!MY"`L+!"\@&9X<@K3K"P0("PL$"(`YX'2@.6!(`%.NB7P*D!*@&8,<`PI
  1951. + M0"U,</]@``".</;0K"P0(@#G@=*`Y8$@;"P,(DU@`A+84X%D^B`L+`QG!B!`
  1952. + M3KHD$BE-+`QZ]MJL+!`@!>>`T(7E@-O`E\LK2P`$4H7:_``DNJPL$&WP(`;G
  1953. + M@-"&Y8`@;"P,(:\`%`@$(8<(`"&O`!@("$OO`"`AG0@,(9T($"&="!1+[P`L
  1954. + M(9T(&"&="!PAG0@@(`9,WRC@4$].=2`O``0B`&L6LJPL$&P0(`'G@-"!Y8`@
  1955. + M;"P,0K`(!$YU("\`!$CG`00N`&L>OJPL$&P8(`?G@-"'Y8`J;"P,V\!*K0`$
  1956. + M9P0@#6`(<`DI0"U,<`!,WR"`3G4@+"P03G4``"`O``193RZ`0>P%["`(6$].
  1957. + M=2!O``193RZ(0>P%["`(6$].=2`L!>Q.=0``64]*K`8>9@Q![P`#*4@&'F'N
  1958. + M8!9![P`#(FP&'K/(9`1P`6`"</\I0"P46$].=5E/2.<!%"XO`!1*K"P49@)A
  1959. + MP"IL!B)@+B`L+!1O#$'O``\B;0`$L\AB$$J`:AQ![P`/(FT`!+/(9!`F52\-
  1960. + M3KHBIEA/*DL@#6;.*4T&(DJ'9@1P`&`B4(<O!TZZ)"X@0""L!B)#[P`3(4D`
  1961. + M!$/H``A83RE`!B(@"4S?*(!83TYU```@+P`$64\N@"`L+21G#B!`3KK\BDJ`
  1962. + M9P1R`6`"<@`@`5A/3G4@+P`$(&PM)'(`3OK\,$ZZ^V0I0"TD9@I(;`8H3KK[
  1963. + M0%A/(&PM)$ZZ^_2!K"P83G4@;"TD3OK[D`CL``PL&DYU("\`!`@```Q6P$0`
  1964. + M2(!(P$YU".P`#2P:3G4@+P`$"```#5;`1`!(@$C`3G5.NAE6<``@;"V$$"@`
  1965. + M#W(!X:&#K"P83G5.^AFH("\`!%E/2.<!%B]``!!^`&`N("T`%$ZZ&/XF0$J`
  1966. + M9Q1*JP`49@Y^`7`!)T``%"=M`!@`&")-<!PL>``$3J[_+B!L+80L>``$3J[^
  1967. + MC"I`2H!FP"`'3-]H@%A/3G4@+P`$2.</!"X`<`'OH"P`<`F^@&8&<`!.N@L4
  1968. + M("PM',"&9P:-K"T@8'HJ!D:%RZPM($J':V9P(+Z`;&`@!^>`0>PL'"IP"``P
  1969. + M?``!N\AF+"`'58!G%%.`9Q!R#9"!9SQ9@&<X48!G-&`*2&P&0$ZZ^?Q83W``
  1970. + M3KH*MF`@(`UG'"`'YX`H!D'L+!R(L`@$B:PM'"`'3I5&A,FL+1P@+"T@P(9F
  1971. + MBDS?(/!.=2`O``0O#B(L+!B"@'``+'@`!$ZN_LXL7TYU("\`!"\.(@`@+"P8
  1972. + M@($L>``$3J[^PBQ?3G4@+P`$2.<#`"X`?`!A`/X02H!G"'P!<`YA`/\,(`=A
  1973. + M`/YB2H!G"'P!<`)A`/[Z(`=A`/YJ2H!G"'P!<`-A`/[H(`=A`/Z&2H!G"'P!
  1974. + M<!1A`/[6(`9,WP#`3G4@+P`$+P<I0`R$<`@N'V``_KQP`&$`_V!@D&#V2.<!
  1975. + M%'X`2^PL'#9\``$JBT*M``12AU"-<""^@&WP0JPM($*L+1Q"K"P880#]U&$`
  1976. + M_>IA`/VB3-\H@&``_?AA`/VX8`#^"```2&P&5$ZZ^-A83TYU("\`!"\-3KHA
  1977. + M5"I`2H!F`F'B(`TJ7TYU(&\`!"`O``@O"TZZ'Q`F0$J`9@)AQB`+)E].=2!O
  1978. + M``0O#2I((`UF!$OL!EX@34H89OQ3B)'-(`A2@$ZZ(0@@0$J`9@1P`&`((D@2
  1979. + MW6;\(`@J7TYU64](YP,T?@!\`"!L+2@F:`#08"Q**P`(9B0P/`4`P&L`#F8:
  1980. + M4H<@:P`*(`A*&&;\4XB1P"`(W(#<JP`45(8F4TJ39M`@!U*`Y8#0AF$`_THI
  1981. + M0"U`Y8<@0")`T\=%Z0`$+T``%&8*0>P&4"E(+4!@5B!L+2@J:`#08$)*+0`(
  1982. + M9CHP/`4`P&T`#F8P)FT`"BXM`!0@;P`4(,HO2``48`(4VTH39OH4_``])FT`
  1983. + M$&`"%-L@!U.'2H!F]D(:*E5*E6:Z(&\`%$*03-\LP%A/3G4@;P`$("\`""\-
  1984. + M*D@J@$*M``3E@&$`_K0K0``(*E].=2!O``0B;P`(("\`#$CG(C0F22I(2H!G
  1985. + M"B!+80#^PB1`8`(D2R`*9SXB%20M``2T@6TB+`'<AG00TH*\@6T"(@8J@2`!
  1986. + MY8`@;0`(3KH=CBM```AG$D?M``0B$U*;Y8$@6R&*&`!P`4S?+$1.=2!O``0B
  1987. + M;P`(("\`#&&22H!F!&$`_AI.=2!O``0B;P`(2.<`%"9)*D@@+0`$T*L`!+"5
  1988. + M;Q+0@"J`Y8`@;0`(80#^&BM```@B+0`$Y8$@;0`(T<$@*P`$(@#E@2)K``A@
  1989. + M`A#94X%D^M&M``0@:P`(3-\H`$[Z'7X@;P`$(F\`""]O``P`!"`O`!`B+P`4
  1990. + M64](YP(T+`$J221(+T@`$$J`9T13@&<*4X!G``"V8```]%.&9R(@+P`8(@V0
  1991. + M@2!O`!!",`@`($$B;P`08`(2V%.`9/I@``#.0>P&8")O`!`2V&;\8```OB9O
  1992. + M`!A@;G!<L!5F9DHM``%G8%2-<`&\@&8&%/P`86!4(`95@&9&$"W__TB`2,!R
  1993. + M(Y"!9RY5@&<J58!G)E.`9R)3@&<>4X!G&G(5D(%G%'(<D(%G#E6`9PIR'Y"!
  1994. + M9P15@&8$%/P`)Q3M__]@"!3M__]@`A3=N\MECF!`)F\`&&`V<"JP%68N2BT`
  1995. + M`6<H5(T0+?__2(!(P')ED(%G#'()D(%F#!3\``I@#A3\`!M@"!3M__]@`A3=
  1996. + MN\MEQD(23-\L0%A/3G6>_`$L2.<_-BIO`5@@;`R@#&@`)0`49`I(>``43KJ1
  1997. + MZEA/0JP+X'`!*4`+W"E`#`)P`BE`"_XI0`PD*7P```"$#""3R2QX``1.KO[:
  1998. + M*4`M*$ZZ]2@I0"TL9@I(;`9B3KKU!%A/(&PM+$ZZ];@I0"TP+&PM+"!6+&@`
  1999. + M%"E.+3Q![P$P3J[_OBEO`3`M-$ZZ]B!.NONL(&PM*"`H`*QG$.6`(D`B*0`T
  2000. + MY8$I02TX8`8I:`"$+3A*%68``.A![`9Z(@@L;"V4)#P```/N3J[_XBP`0>P&
  2001. + M@"((3J[_XBX`0>P&AB((3J[_XBH`2H9G"$J'9P1*A68B2H9G!B(&3J[_W$J'
  2002. + M9P8B!TZN_]Q*A6<&(@5.KO_<80#[<G`!+P`O!2\`+P<B!L%!3KH-;"!L#*0@
  2003. + M*``<0>\!6&$`_)Y/[P`0?`!^`&!0(FP,I"!I`"0@,'@`9SXB`$/O`#`D"2QL
  2004. + M+91V0.6+3J[^;DJ`9R8B;`RD(&D`)-''("@`!&<((@(D`$ZN_(Y![P%(0^\`
  2005. + M,'`!80#\V%*&4(<@;`RDO*@`'&VF8``"S"QL+91.KO_**`!.KO_$*@!^`"!L
  2006. + M+2@L*`#@9BA^`4'L!HPB""0\```#[4ZN_^(L`&820>P&CB((3J[_XBP`9@1A
  2007. + M`/JD+P<O!G``+P`O!2($P4%.N@R>0>\!6'`!80#[UB`\```%&F$`^HX@0#%\
  2008. + M!```$B]``#QP0.6(80#Z>D_O`!!^0.6/+T`!.&`"4HT0%4B`2,!![`J]"#``
  2009. + M`P@`9NP0%6<``A9R(K`!9C!2C29-8!!P*K`59@A*+0`!9P)2C5*-$!5G!G(B
  2010. + ML`%FYB1-$!5R(K`!9@)2C7P"8%1P)[`59B!2C29-8`)2C1`59P9R)[`!9O0D
  2011. + M37`GL!5F`E*-?`%@+B9-8!!P7+`59@A*+0`!9P)2C5*-$!5G$G(@L`%G#'(*
  2012. + ML`%G!G()L`%FVB1-?``@2RH*FHL@!5*`+T@`*&$`^;8F0$JO`4QF("`%($LB
  2013. + M;P`H3KH8AD(S6`!![P%((DMP`&$`^V!@`/\FVH5R$-J!NH=O%"!O`3A.NADP
  2014. + M(`5A`/EV+@4O0`$X+PH@!B!+(F\`+'(!80#[KEA/(@LD+P$X)@<L;"V43J[\
  2015. + MN"H`;!!"$B\O`"A(;`:43KKR"E!/2H5F(B\*(`8@2R)O`"QR`&$`^W1![P%,
  2016. + M(DMP`&$`^NA83V``_JQZ`2!O`"Q"J``(0B@`$4(H`!`O"B`&($LB;P`L<@)A
  2017. + M`/M`0>\!0'`080#Z)EA/(@LD+P`L+&PME$ZN_,HH`&8\8"IZ`")O`"S2_`$8
  2018. + M0>\!/'`!80#Z($J`9@1X9V`2(B\`+"QL+91.KOS$*`!*A&?2(B\`+"QL+91.
  2019. + MKOR^<'30@+B`9PI(;`:H3KKQ5EA/2H5G(B\*(`8@2R)O`"QR`&$`^L!![P%,
  2020. + M(DMP`&$`^C183V``_?@@+P%`(&\!1$ZZ$OI![P%(0^\!/&$`^BH@2TZZ%_9@
  2021. + M`/W6(&\!.$ZZ%^H@;P`L3KH7XF$`^))![`;"3KH+,BE`!>QF"$'L!L@I2`7L
  2022. + M0>P&SDZZ"QPI0`8`9@8I;`7L!@!![`;83KH+""E`!@1F"$'L!MXI2`8$0>P&
  2023. + MXDZZ"O(I0`8(9@A![`;H*4@&"$'L!O!.N@K<*4`M1&8(0>P&^BE(+40@+P%,
  2024. + M(&\!4")L+4!.NC$Z<`!.NAM<3-]L_-[\`2Q.=2`O``1(YP,`+@!*K"U(9P0@
  2025. + M!V!@?``@!P*````!)&<"?`@(!P`'9P0`1@`%"`<`!&<$",8``@@'``%G!`C&
  2026. + M```(!P`#9P0(Q@`!"`<``&<$",8`!B`'<DG`@7)`L(%F!`!&`$((!P`)9P0(
  2027. + MQ@`%(`8*0``/3-\`P$YU("\`!$CG!@`L`$JL+4AG""`&`D`/_V!>>@`*1@`/
  2028. + M"`8``V<$>DGEC2`&<@7`@5N`9@0(Q0`'"`8``F<$",4`!`@&``!G!`C%``$@
  2029. + M!G)"P(%G!`C%``8(!@`!9P0(Q0`#"`8`!F<$",4```@&``5G!`C%``D@!4S?
  2030. + M`&!.=0``2.<#`$ZZ\P8N`'P`8`HO!DZZ\6Y83U*&O(=M\DS?`,!.=2`O``0O
  2031. + M!RX`8=1.NO#B3KKV6"!L+2Q.NN^@+P=.NHO66$\N'TYU("\`!"\'+A]@U```
  2032. + MGOP`#$CG+S8J;P`T?@/.KP`X?`$@;"TH)F@`N"H\```#[$ZZ]<I*AV<*<`*^
  2033. + M@&<$<@!@`G(!+T$`*'`!OH!G"%6'9P1P`&`"<`$O0``L($U#[`<`3KH0SDJ`
  2034. + M9@9X_V```51P_R!L+2@A0`"X(@TL;"V4=/Y.KO^L+@`@;"TH(4L`N$J`9G@L
  2035. + M;"V43J[_?$ZZ"B0L`"`L#(!R+D8!L(%G!$J`9@I^`2H\```#[F`6(`95@&8,
  2036. + M""\`"``Z9P1P`6`"<``N`$J'9RQ\``@O``@`.F<<""\`#P`Z9P9X`F```-8@
  2037. + M+P`\3KK]TB@`8```R'C_8```PBE&+4QP_V```4)"IRQL+91R`B0/3J[_'$_O
  2038. + M``0D0$J`9PPB!R0*3J[_FDJ`9A8@"F<()`IR`DZN_Q9.N@I^</]@``$(*"H`
  2039. + M="0*<@).KO\6(@=.KO^F<%#IB,"O`#@,@```!0!F#'`1*4`M3'#_8```VDJO
  2040. + M`"AG!@@$``-F#$JO`"QG$@@$``)G#'`-*4`M3'#_8```M@@O``D`.F<B(@TD
  2041. + M/````^Y.KO_B2H!G""(`3J[_W&`*3KH*`G#_8```C`@O``@`.F<$(`5@!B`\
  2042. + M```#[20`(@TL;"V43J[_XBH`9@A.N@G6</]@8`@O``D`.F8$2H9F!"P$8`)\
  2043. + M_WX`2J\`*&<"?@%*KP`L9P0(QP`!""\``P`[9P0(QP`#+P<@!2(&3KH%GEA/
  2044. + M+@!L''#_(&PM*"%``+@B!2QL+91.KO_<(&PM*"%+`+@@!TS?;/3>_``,3G4@
  2045. + M;P`$+R\`#"\O``PO"&$`_:A/[P`,3G6>_``,2-<!`W#_WOP`#$YU44](UP,`
  2046. + M4$].=4CG,`(B$$HH``UG!'``8!PD"28`+&PME$ZN_]8B`%*`9@A.N@D0</]@
  2047. + M`B`!3-]`#$YU44](YS\V+@`J229(+!,O1@`H+T@`+$HK``UG!G``8```C$HK
  2048. + M``QG9B9-U\=Z`&!8)$U@`E**M<MD!G`*L!)F]+?*9@0H"F`&0>H``2@(F(TB
  2049. + M+P`H)`TF!"QL+91.KO_0+`!2@&8(3KH(FG#_8#[:AK:&9C9+Z@`!GH9P`$ZZ
  2050. + M\BA.NO)82H!F(DJ'9J1@'"(&)`TF!RQL+91.KO_0*@!2@&8(3KH(7G#_8`(@
  2051. + M!4S?;/Q03TYU64](YS\"+@`L$"]!`!Q**``-9P1P`&!24X$F`2(&)`<L;"V4
  2052. + M3J[_OBH`3J[_?"@`4H5G!$J$9PX@!$ZZ!Q@I0"U,</]@)"(&=``F`DZN_[XL
  2053. + M`%*`9P1*A&<.(`1.N@;V*4`M3'#_8`(@!DS?0/Q83TYUGOP!`$CG/P8N`"I(
  2054. + M+!4J+0`(("T`!&<*(@`L;"V43J[_IA@M``U(A$C$($U.NA($2H1G!'``8$0B
  2055. + M!D'O`"`D""QL+91V0.6+3J[^:"@`2H=F"B(&3J[_W$J`9QI*A&<2</^Z@&<,
  2056. + M(@(D!4ZN_T9*@&<$<`!@!DZZ!V1P_TS?8/S>_`$`3G4@+P`$2.<@`B(`+&PM
  2057. + ME'0`3J[_-$ZN_WQT+D8"L()7P40!2(%(P2`!3-]`!$YU("\`!"!O``@B;P`,
  2058. + MGOP`$$CG-Q8N`"9)*DA\`&&X2H!F?"('+&PME'0!3J[^5DJ`9VPB!T'L!P@D
  2059. + M"'8$3J[_T%F`9E(B!R0\```G$$ZN_S1*@&="(@=![P`@)`AV$$ZN_]9R";"!
  2060. + M;RYPF[`O`"!F)D'O`"4B""0+3J[\T"H`0>\`)M'`(@@D#4ZN_-!2@&<&4H5G
  2061. + M`GP!(@=T`$ZN_E8@!DS?:.S>_``03G4@+P`$(B\`")[\`A!(YS\&+@!P_R]`
  2062. + M`B@O00`D(@<L;"V4=`!V`4ZN_[XO0``@(@=.KO^^+`!.KO]\*@`O0`(L9@``
  2063. + MPB@O`"0B!R0$=O].KOXXL()F``"NO()L``">*@2:AB@%(`1R`4A!+'@`!$ZN
  2064. + M_SHJ0$J`9FIR`DA!3J[_*.*(*@`,A0```@!M$"`%<@%(04ZN_SHJ0$J`9D9Z
  2065. + M0.>-2^\`*#`\`?]R`$'O`"@0P5'(__Q@++B%;P0@!6`"(`0F`$ZZ[_HB!R0-
  2066. + M+&PME$ZN_]"P@V<*3J[_?"]``BQ@!IB#2H1NT$'O`"BQS6<,(DT@!2QX``1.
  2067. + MKO\N*B\"+&8$0J\"*"PO`""\KP`D;`XB!R0&+&PME';_3J[_OBPO`BAG"B`%
  2068. + M3KH$7BE`+4P@!DS?8/S>_`(03G6>_`$(2.<W%BX`)DDJ2"P52BT`#68``1@@
  2069. + M!P2````$`&<@!(````0`9TI3@&=84X!G7%.`9UY3@&=F4X!G;&```.Y*+0`,
  2070. + M9R8@!D'O`21#[P$@80#]UDJ`9Q0@+P$D-T```B`O`2`V@'``8```RG`98```
  2071. + MOB(&+&PME$ZN_R@F@'``8```LB:&<`!@``"J<`!@``"D(`8B$V$`_C9@``"8
  2072. + M*U,`"'``8```CBH32JT`!&8.(A4L;"V43J[^C"M```0@+0`$9V(D`"(%+&PM
  2073. + ME$ZN_EQ*@&92(@9![P`@)`AV0.6+3J[^:$J`9SXB!4ZN_Z8B+0`$3J[_IB(&
  2074. + M3J[_W"("=`!.KO]&&WP``0`-*H(K0@`$0>\`("((+&PME$ZN_[A*@&<$(`)@
  2075. + M#DZZ!!Q@!G`6*4`M3'#_3-]H[-[\`0A.=2`O``0B+P`(+V\`#``$2.</!BHO
  2076. + M`!PL`2X`<`Y.N@_B*D!*@&8*<`PI0"U,</]@3D/5(L="F2+&0BT`#2('+&PM
  2077. + ME$ZN_R@;0``,2'K^=$AZ^]I(>OMD2'KZK$AZ^G9(>OIH(`4@34/Z^E!.NNE4
  2078. + M3^\`&"@`;`8@34ZZ#>(@!$S?8/!.=2`O``0B+P`(+V\`#``$+V\`$``(+V\`
  2079. + M%``,+V\`&``02.<-`"@O`!0J+P`0+@!P`$J!9@1P0.6(`$```2\`(`=R_V$`
  2080. + M_T983TJ`9D!P`$J$9@1P0.6(`$```B\`(`5R_V$`_RA83U.`9B)P`$JO`!QF
  2081. + M!'!`Y8@`0``"+P`@+P`<<O]A`/\&6$]5@&<00>P'#B](`!!,WP"P3OKF6$S?
  2082. + M`+!.=0``("\`!"!O``@B+P`,64](YP,T+`$N`"I(3KKM!"`'3KKIE"9`2H!G
  2083. + M1`@K``$``V<V""L``P`#9Q8@:P`8+T@`%"!K``1P`'("(F\`%$Z1(&L`%"](
  2084. + M`!0@!B!K``0B321O`!1.DF`(<`TI0"U,</],WRS`6$].=2`O``0@;P`((B\`
  2085. + M#$CG`P1,WR#`8(`@;P`$GOP`0$CG.Q8J2$ZZ[((@#6=22A5G3B(-0>\`("0(
  2086. + M+&PME'9`>`!.KOQV+@!M-DZN_WPL`%*`3KH.$"9`2H!G)+Z&9Q0F!E*#(@TD
  2087. + M"TZN_'9*@&\0(`)@#B!"(DL2V&;\(`M@`G``3-]HW-[\`$!.=2`O``0B+P`(
  2088. + M+V\`#``$44](YP<`*B\`&"P!+@!.NNP`(`=.NNB02H!G&B)`(&D`&"](`!`@
  2089. + M!B(%(&D`!")O`!!.D6`"</],WP#@4$].=2`O``0B+P`(+V\`#``$2.<'`"HO
  2090. + M`!`O10`03-\`X&"@```@+P`$(&\`""(O``Q93TCG`S0L`2X`*DA.NNN4(`=.
  2091. + MNN@D)D!*@&<F""L````#9Q@@:P`0+T@`%"`&(&L`!")-)&\`%$Z28`AP#2E`
  2092. + M+4QP_TS?+,!83TYU("\`!"!O``@B+P`,2.<#!$S?(,!@G@``("\`!"E`#(!*
  2093. + M@&<``(9R9Y"!9P``@E6`9P``@'()D(%G?%.`9WA3@&=T4X!G<%.`9VQ3@&=H
  2094. + M4X!G:%.`9VAR49"!9V93@&=F4X!G9E.`9V93@&=F4X!G9E6`9V93@&=F4X!G
  2095. + M9E.`9V95@&=F4X!G9E.`9V93@&=F4X!G9E.`9V95@&=F4X!G9E.`9V93@&=F
  2096. + M8&AP`&!F<`Q@8G`+8%YP%F!:<`=@5G`(8%)P$&!.<!%@2G`"8$9P`F!"<!9@
  2097. + M/G`'8#IP%F`V<"1@,G`68"YP%F`J<!Y@)G`28")P)6`><"9@&G`38!9P%F`2
  2098. + M<!Q@#G`-8`IP#6`&<`U@`G#_3G4O#BQL+91.KO]\80#^^BE`+4PL7TYU3KKJ
  2099. + M*$ZZ\^).NN)B<@9.^@#R```@;P`$("\`"%E/2.<!%BX`+T@`$"!O`!`J4&!D
  2100. + M<`VP+0`(9EH@+0"L9P;E@"!`8`*1R"9(("T`G+"'9S0@+0"@L(=G+"`M`."P
  2101. + MAV<D(`MG+B`K`!RPAV<8("L`(+"'9Q`@*P`XL(=G""`K`#"PAV8.(DUP8.^(
  2102. + M+'@`!$ZN_KPJ54J59IA,WVB`6$].=2`O``0B+P`(2.<!`BX`(`%3@&<,4X!G
  2103. + M"%.`9P1=@&8L+'@`!$ZN_WP@;`R@T/P!EB`'80#_2"!L#*#0_`&D(`=A`/\Z
  2104. + M3J[_=G``8`AP%BE`+4QP_TS?0(!.=2`O``0B+P`(2.<&!"P!*@!.NND>2H5J
  2105. + M`D2%NJPM5&8.2H9G!B`&3KKGPG``8$@@!4ZZ`&XJ0$J`9P9*K0`49PIP`RE`
  2106. + M+4QP_V`L(`9G*"(M`!#!06$`_U@B`'`)O(!F%'(!*T$`%"M``!AP%$ZZYWQP
  2107. + M`&`"(`%,WR!@3G4``"!O``1(YP`&*D@B32QX``1.KO\$($U,WV``3OH(K"`O
  2108. + M``1(YP$$+@`J;"U88`X@+0`,L(=F!"`-8`@J54J59NYP`$S?((!.=4CG(`)!
  2109. + M["U83KHA:B`L+2@B+"TT)`"S@@*"`'___RE"+512@BE"+5`O`2\`2&P*H$AL
  2110. + M+61.NN!&3^\`$"QX``1.KOUF*4`MB&<00>PM9'``3KHA?BE`+81F"DAL"JY.
  2111. + MNN$Z6$],WT`$3G5(YP`&("PMB&<*($`L>``$3J[]8$JL+81G."QX``1.KO]\
  2112. + M8`PB37`<+'@`!$ZN_RX@;"V$+'@`!$ZN_HPJ0$J`9N(@;"V$3KH@UBQX``1.
  2113. + MKO]V3-]@`$YU```@;P`$("\`""(O``PB;P`0+V\`%``$+V\`&``(64](YP\V
  2114. + M*"\`+"HO`"@L`2X`*DDO2``@+'@`!$ZN_68F0$J`9S`@2R`$3J[]<B1`2H!G
  2115. + M(B`-9P@E30`H)44`)"!O`"`@!R)*(@9.KOY$2@!F!"`*8!8@"F<&($I.KOUL
  2116. + M(`MG!B!+3KH@0'``3-]L\%A/3G4@;P`$2.<`!BI((`UG&")-+'@`!$ZN_CX@
  2117. + M;0`.3KH@%B!-3J[];$S?8`!.=5E/0?D`````+HAG""!Y_____$Z06$].=5E/
  2118. + M0?D`````+HAG""!Y_____$Z06$].=4CG`P0J;P`0($U*&&;\4XB1S2X(8`H@
  2119. + M!D'L"^9.N@R"?``<'4J&9NY![`OF3KH0AB`'3-\@P$YUGOP`$$CG!Q1^`$OO
  2120. + M`"Q@``":<"6P+P`49@``@"!O`"A2KP`H$!!R`!(`'T``%7!DDH!G.G`,DH!G
  2121. + M#E>!9P9;@6<&8$0F76`T+!U'[P`>>@<@!G(/P(%!^@!XT<`6D%.+Z(93A4J%
  2122. + M:NA"+P`?8`H@'4'O`!=.N@(:1^\`%R\+3KK_2%A/WH!@(E*'<``0+P`50>P+
  2123. + MYDZZ"])@$%*'<``0+P`40>P+YDZZ"\`@;P`H4J\`*!`0'T``%&8`_UA![`OF
  2124. + M3KH/NB`'3-\HX-[\`!!.=3`Q,C,T-38W.#E!0D-$148`````2.<#%RIL+8Q@
  2125. + M%"95<!30K0`$(DTL>``$3J[_+BI+(`UFZ$*L+8Q@3"IL+9APG-"L#'PF0"`M
  2126. + M``0I0"V8*6T`"`Q\+BT`&$J`9AX@;`R@#&@`)``491(@3RP(0>T`#"QX``1.
  2127. + MKOTD+D8B2R`'+'@`!$ZN_RY*K"V89JY,W^C`3G4@;P`$(F\`""!0(E$0&+`9
  2128. + M9@1*`&;VD"%(@$C`3G4@;P`$("\`"$/Z_^!R!$[Z""H@;P`$(F\`""`O``Q*
  2129. + M@&\*$A`0T1+!4X!F]DYU(&\`!")O``AP`'(`$!@2&0P``&%M"@P``'IN!`0`
  2130. + M`"`,`0!A;0H,`0!Z;@0$`0`@D(%F!$H!9M1.=0``("\`""!O``1.5?_T(D]R
  2131. + M"DZZ`G`&00`P$L%*@&;P(`D0X;_)9OI"$)"/3EU.=0``("\`""!O``1.5?_T
  2132. + M(D\B``)!``<&00`P$L'FB&;P(`D0X;_)9OI"$)"/3EU.=0``,#$R,S0U-C<X
  2133. + M.6%B8V1E9B`O``@@;P`$44\B3S(``D$`#Q+[$-SHB&;R(`D0X;_)9OI"$)")
  2134. + M4$].=0``("\`""!O``0O"$J`3E7_]")/;`80_``M1(!R"DZZ`<@&00`P$L%*
  2135. + M@&;P$.&_R6;Z0A`@"$Y=D)].=0``(&\`!")O``A(YS`@)$AR`"`!)@$,$``K
  2136. + M9P@,$``M9@1V`5)($!@$```P;1H,```);A0D`>6!TH+2@4H#9@32@&#BDH!@
  2137. + MWB*!(`B0BE.`3-\$#$YU(&\`!"\-*D@(+0`#`!MF,"`L#"Q.N@4.*T``!"M`
  2138. + M`!!F"G`,*4`M3'#_8!8K;`PL`!1P\\&M`!A"K0`,0JT`"'``*E].=0``(&\`
  2139. + M!$CG(!0J2"9-8"!P`!`30>P*O0@P``$(`&<*<@`2`'0@DH)@!'(`$@`6P4H3
  2140. + M9MP@#4S?*`1.=0``GOP`4$CG,39#^@"$<``L>``$3J[]V"I`2H!F!G`43KKL
  2141. + MJGX`(&P,K!XH__\@!T/O`!Q@`A+84X!D^D(W>!Q![P`<*4@,1$/L#$Q'[`Q@
  2142. + M+$V1R)7*<``B`'1]U()V*$ZN_J1P%$ZZ[&1,WVR,WOP`4$YU*BH@4W1A8VL@
  2143. + M3W9E<F9L;W<@*BH``$58250``&EN='5I=&EO;BYL:6)R87)Y`$J`:@``'D2`
  2144. + M2H%J```,1(%A```@1(%.=6$``!A$@$2!3G5*@6H```Q$@6$```9$@$YU+P)(
  2145. + M030!9@``(DA`2$%(0C0`9P``!H3!,`)(0#0`A,$P`DA",@(D'TYU+P-V$`Q!
  2146. + M`(!D```&X9E10PQ!"`!D```&Z9E90PQ!(`!D```&Y9E50TI!:P``!N.94T,T
  2147. + M`.:H2$)"0N:J2$.`P38`,`(T`TA!Q,&0@F0```930]"!<@`R`TA#Y[A(0,%!
  2148. + M)A\D'TYU``!(YW``)`!G($J!9@1"@&`8)@#&P4A"Q,%(0D)"UH)(0<#!2$!"
  2149. + M0-"#3-\`#DYU```@+`RH!$`!]"Y`3OK^8```(&\`!"`(2AAF_%-(D<`@"$YU
  2150. + M```@;P`$("\`"+`09PA*&&;X<`!.=2`(3G4@;P`$(F\`""`O``Q*@&<04X`2
  2151. + M&+(99@Q*`6<$4X!J\G``3G5N!'#_3G5P`4YU```@;P`$(F\`"!(8LAEF"$H!
  2152. + M9O9P`$YU;@1P_TYU<`%.=2)O``@@;P`$("\`#"((8`00V6<(4X!D^&`&0AA3
  2153. + M@&3Z(`%.=2)O``@@;P`$("\`#"((2H!O%K')90S3P-'`$2%3@&;Z8`80V5.`
  2154. + M9OH@`4YU(&\`!"`O``A(YP,4+@`J2&82(`UF!'``8&@@34ZZ`&YP`&!>(`UF
  2155. + M"B`'3-\HP$[Z`@`F356+,#Q__\!32,#E@"P`"!,`#V<,#&N``/_^9@0L*__R
  2156. + M(`=.N@'8)D!*@&8$<`!@'KR'8P0@!V`"(`8@32)+8`(2V%.`9/H@34ZZ``X@
  2157. + M"TS?*,!.=2!O``0@"&8"3G59@$CG/#(B+"V,9@XI?````!8M3$S?3#Q.=2)!
  2158. + ML(%O$B0!U*D`!`:"````%+"";`)@""(I``!GU&#@)@$&@P```!"P@VW&9Q(D
  2159. + M0T*"-"H``FNZY8K6@EB#8.@D0#0J``!JJ@BJ``<``$*#-BH``@)#?__EBTIJ
  2160. + M``)K0$?R.`1*:P``:S9"A#@K``("1'__Y8S8@UB$Y(Q8@TIK``)J!`!$@``U
  2161. + M1``":Q(J!.6,-#)(!`)"@`"*0C6%2`1"A#@J``!G3.6,1(1'\DC\2FL``&L^
  2162. + M0H0X*P`"Y8Q"A3HJ``("17__Y8W8A5B$6(/DC$IJ``)J!`!$@``W1``":Q(J
  2163. + M!.6,-#-(!`)"@`"*0C>%2`37J0`()BD`!+:L"KAN#+:I``AF.DJI``!G-"`L
  2164. + M+8P@0+*`9@PI:0``+8Q@$"!H``"RJ```9O8A:0`````@*0`$!H`````4+'@`
  2165. + M!$ZN_RY,WTP\3G4@+P`$(B\`"$CG#`1.NOSR*@!.N@`H*D!*@&8$<`!@$'@`
  2166. + M8`9"-4@`4H2XA67V(`U,WR`P3G4``"`O``1*@&8,*7P````6+4QP`$YU2.<^
  2167. + M,E:``H#____\#(```?_\;@``N+"L"KAN``"P)BPMC&<``*@B0["I``AN,B(L
  2168. + M+9"RJ0`,9BA%Z0`02E)K$$*$."H``@)$?__EC+"$;QI"A#@J``)K".6,1?)(
  2169. + M!&#<)BD``&=F(D-@O@CJ``<``$?R"`1"A;"$9SPL!)R`689F!"`$8##DCDIJ
  2170. + M``)J!`!&@``J`.2--T8``C=%```U10`">@1*1FL.-#)(!`)"@`",0C6&2`0F
  2171. + M*0`(EH"6A2-#``@@"EB`3-],?$YU*@"PK`JX:@0@+`JX*``&@````!0B+"V0
  2172. + M+'@`!$ZN_SI*@&8**7P````,+4Q@S")`1>D`$"-L+8P``"E)+8PC1``$(VPM
  2173. + MD``,)@26A6<H68-G)"-#``A'\E@$-7R`````Y(TU10`"-T4``.2+`$.``#=#
  2174. + M``)@%$*I``@U?(````#DC`!$@``U1``"(`I8@$S?3'Q.=2!O``0@+P`((B\`
  2175. + M#")O`!!93TCG#S8L`2X`*D@O20`@<`&^@&,``+(F3=?&(`=5@&8D+PLO#2!-
  2176. + M(DLL;P`H3I903TJ`;P``DB`&($TB2TZZ]Z1@``"$(`?BB"(&3KKZ]B)-T\`@
  2177. + M!B!-3KKWBB1->@!X`6`J+PTO"R!+(DTL;P`H3I903TJ`:A)2A=7&M<MG"B`&
  2178. + M($LB2DZZ]US7QE*$N(=ETK7-9PH@!B!-(DI.NO=&)F\`("`%(@8@32)+80#_
  2179. + M4B!*T<8@!Y"%4X`B!B)+3-]L\%B/8`#_.DS?;/!83TYU3OKO9D[Z[UX@+P`$
  2180. + M2.<!!"X`*FP,=&`((&T`!$Z0*E4@#6;T2^P+Q'`&P*T`&%6`9A@@+0`$D*T`
  2181. + M$&<.(BT`'"!M`!#!04ZZ[IP@32I0(`UFUB`'3-\@@$[ZY8`@;P`$0JPMG"E(
  2182. + M+:!(;P`,+R\`#$AL+9Q!^@`00_H`+$ZZ$K1/[P`,3G5#["V<4IEP`"!1$!@B
  2183. + MB'+_(LA*@&<"(@`@`4YU("\`!%E/+H!3K"V<4ZPMH%A/3G4``"`O``0@;P`(
  2184. + M+PTB`"I(4I5#[0`((!%2D1N!"`P@&0R````"`&T40>T`#")M``1R`<%!3KH#
  2185. + MU$*M``@J7TYUGOP"#"\-*F\"%$*O``Q"KP`$+TT`"$AO`APO+P(<0?K_JD/O
  2186. + M``Q.NA-V4$\@+P`,9Q!![P`0(F\`"'(!P4%.N@.*""T`!0`;9@@(+0`$`!MG
  2187. + M!'#_8`0@+P`$*E_>_`(,3G4O#2(`*DA#U5*9(!%2D1N!"`@@&0R````"`&T2
  2188. + M0>T`"$/L"^9R`4ZZ`T!"K0`$*E].=9[\`@A"KP`$0I=(;P(0+R\"$$'Z_[I#
  2189. + M[P`(3KH2[E!/("\`!&<00>\`"$/L"^9R`<%!3KH#`G`PP*P+_F<$</]@`B`7
  2190. + MWOP""$YU("\`!"!O``A93TCG`P0N`"I(?``?0``/<D'2@<*M`!AF#`CM``4`
  2191. + M&W#_8``!0'`SP*T`&%6`9U!P3$8`P*T`&')`TH&P@68,".T``0`;0JT`#&`T
  2192. + M""T`!0`;9P9P_V```0QP;D8`P*T`&')N1@&P@68,".T``0`;0JT`#&`*<``K
  2193. + M0``,8```YB`M``RPK0`4;#(@;0`$4JT`!"`'$(!2K0`,""T`!@`;9PYR"KZ!
  2194. + M9@@@34ZZ`V@L`$J&9P``JB`&8```J@@M``(`&V<N0JT`#"`M`!Q![P`/<@%.
  2195. + MNNPT+`!2@&8(".T`!0`;8'(@!E.`9VP([0`$`!M@9$JM`!1F("!-3KKUN$J`
  2196. + M9PH([0`%`!MP_V!8<``K0``,*VT`$``$("T`#+"M`!1M""!-3KH"[BP`".T`
  2197. + M`0`;(&T`!%*M``0@!Q"`4JT`#`@M``8`&V<.<@J^@68(($U.N@+"+`!*AF<$
  2198. + M(`9@!G(`$@<@`4S?(,!83TYU(&\`!%E/2.<!!"I(0>P+Q+O(9D1![`OF3KH"
  2199. + MC@@M``T`&F<T("T`'$'O``MR`4ZZ[-PN`&\*?@`>+P`+8``!($J'9@@([0`$
  2200. + M`!M@!@CM``4`&W[_8``!"%.M``AM$"!M``12K0`$<``0$&```/1P,\"M`!A3
  2201. + M@&<T<%Q&`,"M`!AR0-*!L(%F%`CM````&P@M``0`&V<6</]@``#&0JT`"`CM
  2202. + M``4`&W#_8```M@@M``(`&V=&0JT`"'X`'BT`($J'9PA"+0`@8```EB`M`!Q!
  2203. + M[P`+<@%.NNPV+@!O"'X`'B\`"V!Z2H=F"`CM``0`&V`&".T`!0`;?O]@9$JM
  2204. + M`!1F%"!-3KKT1$J`9PH([0`%`!MP_V!,(&T`$"M(``0@+0`<(BT`%"!M`!!.
  2205. + MNNOB*T``""X`;Q)3K0`((&T`!%*M``1^`!X08!A*AV8(".T`!``;8`H([0`%
  2206. + M`!M"K0`(?O\@!TS?((!83TYU(&\`!"`O``@B+P`,(F\`$%E/2.</$"P!+@`F
  2207. + M22](`!0@!B('3KKUGBH`>`!*AV<$2H9F!G``8```_'`PP*L`&&8*<$'0@,"K
  2208. + M`!AF#`CK``4`&W``8```WG`SP*L`&%6`9U!P3$8`P*L`&')`TH&P@68,".L`
  2209. + M`0`;0JL`#&`T""L`!0`;9P9P`&```*IP;D8`P*L`&')N1@&P@68,".L``0`;
  2210. + M0JL`#&`*0JL`#'``8```A$JK`!1F3`@K``(`&V9$($M.NO,<2H!G.@CK``4`
  2211. + M&W``8&`@;P`4$!@B:P`$$H!2JP`$4JL`#%.%4H0O2``4<@JP`68.""L`!@`;
  2212. + M9P8@2TZZ`#X@*P`,L*L`%&P$2H5NPDJ%;Q8@2TZZ`"8@*P`<(@4@;P`43KKI
  2213. + M#-B`(`0B!TZZ]`!,WPCP6$].=2!O``1(YP$$*D@@#6<``*!P0="`P*T`&&8L
  2214. + M(&T`$$/M``0BR$*90BT`('``(L`(+0`'`!MG!@BM````&PBM``0`&V```(I*
  2215. + MK0`49T0@+0`,:@9R`"M!``P@+0`,9R@B+0`<(&T`$,%!3KKHCBX`4H!F"`CM
  2216. + M``4`&V`,OJT`#&<&".T`!``;*VT`$``$0JT`#'`PP*T`&&82""T`!P`;9P9P
  2217. + M_,&M`!AP`&`D</]@('X`2^P+Q$JM`!AG#"!-80#_1DJ`9P)^_RI5(`UFZ"`'
  2218. + M3-\@@$YU(&\`!$CG`00J2'X`(`UG!B`M`!AF!'#_8$`(+0`!`!MG""!-3KK_
  2219. + M"BX`<`S`K0`89@Y*K0`49P@@;0`03KKU#D*M`!@@+0`<3KK/XE*'9P1*@&<$
  2220. + M</]@`G``3-\@@$YU(&\`!")O``@O;P`,``193TCG#Q0F;P`@*DDO2``8?@`L
  2221. + M+`PP>@!*JP`89P8@2TZZ_W1P`!`M``%R*Y"!9R!R-I"!9P93@&<$8"!\`'(K
  2222. + MLBT``E?`1`!(@$C`*@!@#'H!<&&P+0`"9@)\`'``$!5R89"!9PQR$9"!9QI;
  2223. + M@&<D8#9*A5;`<@&2``!!`0B,@7Y`X8]@*$J%5L!R`)(`D@",@6`:2H56P'(!
  2224. + MD@``00$``$$"`(R!8`9P`&```(`O+`PT+P8O+P`@3KK>($_O``PH`%*`9@1P
  2225. + M`&!B2H5G!@C'``=@,'``$!5R89"!9PQR$9"!9QI;@&<:8!H(QP`!2'@``B`$
  2226. + M<@!.NN?`6$]@!GX!8`)^`@@&``]F!`C'``^1R$OK`!`JR"K()T0`'"=(``0G
  2227. + M2``,)T@`""K'(`M,WRCP6$].=0``(&\`!")O``A13TCG`!1([P,```A+[`O$
  2228. + M8`0F32I3(`UG!DJM`!AF\B`-9AYP(DZZ]1PJ0$J`9@1P`&`>($TFB'`A<@`0
  2229. + MP5'(__PO#2!O``PB;P`03KK^=%A/3-\H`%!/3G4``"!O``0B;P`(+V\`#``$
  2230. + M+V\`$``(+V\`%``,+V\`&``0GOP`&$CG#S8F;P!$*DDO2``D)&\`2'X`?`!Z
  2231. + M`"`+9P9P`22`8`)"DG``(&\`)!`00>P*O0@P``((`&<P<`\@;P`DP!A(@$C`
  2232. + M(@?E@=*'TH'2@"X!+T@`)'``(&\`)!`00>P*O0@P``((`&;0(&\`)!`0<FRP
  2233. + M`6<4<FBP`68(4J\`)'P!8`QR3+`!9@92KP`D>@$O1@`P+T4`-$Z5*``@;P`D
  2234. + M$!!R8[`!9QYR;K`!9QAR6[`!9Q)@!$Z5*`!![`J]"#```T@`9O!P_[B`9@P@
  2235. + M;P!`((1P`&``!11P`"!O`"00$')8D(%G``'P5X!G``-D48!G``+T4X!G``#:
  2236. + M6X!G7EN`9R)3@&<``6)3@&<``;I7@&<``PY5@&<``)I7@&<``;A@``2V<``D
  2237. + M@"(+9P`$L"1O`#Q*AF802H5F#"!3(A)3@2"!8``$F"X24X<D4TJ&9P8TAV``
  2238. + M!(@DAV``!()Z`$J'9P9P`;Z`;QYP+;B`9P9R*[B!9A*X@&8$</]@`G``*@!.
  2239. + ME2@`4X=P,+B`9G!.E2@`0>P*O0@P``$(`&<((`1R()"!8`(@!')8L(%F``#4
  2240. + M8``!,'H`<"VX@&<&<BNX@68\N(!F!'#_8`)P`"H`3I4H`&`J>@!*AV<&<`&^
  2241. + M@&\><"VX@&<&<BNX@682N(!F!'#_8`)P`"H`3I4H`%.'0>P*O0@P``)(`&8,
  2242. + M(&\`0""$<`!@``/8?``@!'(/P($B!N6!TH;2@=*`+`%.E2@`4X=G#$'L"KT(
  2243. + M,``"2`!FVB`+9P`#G$J%:@)$AB132J\`-&<&)(9@``.(2J\`,&<&-(9@``-\
  2244. + M)(9@``-V<#"X@&T&<#>X@&\,(&\`0""$<`!@``-L?``@!'('P('GAMR`3I4H
  2245. + M`%.'9PQP,+B`;09P-[B`;^(@"V<``S@D4TJO`#1G!B2&8``#*DJO`#!G!C2&
  2246. + M8``#'B2&8``#&$J'9@)^"$*O`#!P`2]``#1Z`7`MN(!F!GK_3I4H`"1O`$`O
  2247. + M10`@0>P*O0@P``=(`&8()(1P`&```NPJ!$Z5*`!*AV<&<`*^@&\P<#"Z@&8J
  2248. + M<'BX@&<&<%BX@&8>3I4H`$'L"KT(,``'"`!F""2$<`!@``*R?`!3AV!H2H=G
  2249. + M!G`!OH!O+$7L"KW5Q0@2``)G!BP%<#"<@`@2``!G!BP%<#><@`@2``%G.BP%
  2250. + M<%><@&`R?`!@+NF&"!(``F<((`1R,)"!C(`($@``9P@@!'(WD(&,@`@2``%G
  2251. + M!G)7F(&,A$Z5*`!3AV<,1>P*O=7$"!(`!V;"(`MG``(@("\`(&H"1(8D4TJO
  2252. + M`#1G!B2&8``""DJO`#!G!C2&8``!_B2&8``!^"`+9QX@4U*3(`00@&`43I4H
  2253. + M`%*`9Q`@"V<((%-2DR`$$(!3AV[H</^X@&8``=`@;P!`((1P`&```<P@"V<&
  2254. + M(%-2DQ"$3I4H`%*`9Q!3AV<,0>P*O0@P``-(`&?>(`MG``&6(%-"$&```8Y2
  2255. + MKP`D<%X@;P`DL!!F#'P!4J\`)"!O`"1@`GP`+T@`+'!=L!!F'E*O`"1@&"!O
  2256. + M`"1*$&8,(F\`0"*$<`!@``%<4J\`)'!=(&\`)+`09MY*AF<``+`O;P`L`"A\
  2257. + M`&!X(&\`*!`0<BVP`69"2H9G/D7H``$B;P`DL\IG,BQ*>@`:$B].`"B\A6,&
  2258. + M(`8L!2H`N(9E0+B%8CP@"V<$(%-"$"!O`$`@A$'I``%@``#N<@`2`+*$9AHB
  2259. + M"V<$(E-"$2)O`$`BA")O`"12B2`)8```SGP`'!!2KP`H(&\`*+'O`"1F`/]^
  2260. + M(`MG!B!34I,0A$Z5*`!2@&<&4X=F`/]<(%-"$&```(PO;P`L`"A\`&!,(&\`
  2261. + M*!`0<BVP`68L2H9G*$7H``$B;P`DL\IG'")*>@`:$B])`"B\A6,&(`8L!2H`
  2262. + MN(9E!+B%8RA\`"!O`"@<$'``$!"PA&<84J\`*"!O`"BQ[P`D9JH@"V<F(%-"
  2263. + M$&`@(`MG!B!34I,0A$Z5*`!2@&<$4X=F@"!30A!@!'``8`X@;P!`((0@;P`D
  2264. + M4H@@"$S?;/#>_``83G4``"!O``0B;P`(+V\`#``$+V\`$``(GOP`-$CG+S8F
  2265. + M;P!@*F\`7$CO`P``+$(O`#M"+P`Z0B\`.4(O`#@??``@`#="KP!4</\O0`!0
  2266. + M0B\`-GX`?`!%[P`\8$IP`"!O`"P0$'(@D(%G(E>`9R91@&<258!G!E>`9R)@
  2267. + M,A]\``$`.V`>'WP``0`Z8!8??``!`#E@#A]\``$`.&`&'WP`,``W4J\`+"!O
  2268. + M`"Q*$&:N<`&P+P`[9@8??``@`#=R*B!O`"RR$&8>+&\`,")66)8B$2]!`%1L
  2269. + M"$2O`%0?0``[4J\`+&`,0^\`5$ZZZ'K1KP`L(&\`+!`0<BZP`69&4J\`+'`J
  2270. + M(&\`++`09APB;P`P(%%8D2`0+T``4&P&</\O0`!04J\`+&`60^\`4$ZZZ#@J
  2271. + M`&8&0J\`4&`$VZ\`+!]\`"``-W``(&\`+!`0<DR0@6<4<AR0@6<&68!G"F`2
  2272. + M'WP``@`V8`8??``!`#92KP`L(&\`+%*((F\`+!`1<@`2`!]``"0O2``F<%"2
  2273. + M@&<``1!1@6<``1QP"Y*`9P`!T%.!9U!;@6=,6X%G(E.!9P`!`E.!9P``ZE>!
  2274. + M9P`!@%6!9P``\%>!9P``ZF```;@D;P`P<`*P+P`V9@X@4EB2(E`@$S*`8``"
  2275. + M2B!26)(B4"*38``"/B)O`#`@45B1*!!J!'X!1(1*AV<,1>\`/1]\`"T`/&`B
  2276. + M2B\`.F<,1>\`/1]\`"L`/&`02B\`.6<,1>\`/1]\`"``/'P!(`0@2DZZYE(J
  2277. + M`"`O`%!F!DJ$9P`!Y"`O`%!J!G(!+T$`4"@O`%"8A6\<($K1Q"`%(DI.NNH<
  2278. + M<C`@2F`"$,%3A&3Z*B\`4-R%(`53@&8``000$K`O`#=F``#Z2J\`4&8``/)"
  2279. + M$F```.P@+P!0:@9P""]``%`??``!`#9P`K`O`#9F$")O`#`@45B1(!!X`#@`
  2280. + M8`HB;P`P(%%8D2@0$"\`)')UL`%G`/]:<F^P`68>2B\`.&<,1>\`/1]\`#``
  2281. + M/'P!(`0@2DZZY<)@`/\^2B\`.&<2'WP`,``\1>\`/A]\`'@`/7P"(`0@2DZZ
  2282. + MY=XJ``@O``4`)&8`_Q1![P`\3KKFRF``_P@B;P`P(%%8D210(`IF!$7Z`/(@
  2283. + M2DH89OQ3B)'**@@@+P!0:P2PA6\$+T4`4"PO`%!@('P!(F\`,"!16)$@$!]`
  2284. + M`#Q"+P`]8`9P`&```*Q%[P`\("\`5+"&;`AR`"]!`%1@!)VO`%1*+P`[9QY@
  2285. + M"'``$!H@2TZ54X9L]&`&($MP($Z54Z\`5&ST8&I*AV8,2B\`.68&2B\`.F=&
  2286. + M$!)R(+`!9PQT*[`"9P9T+;`"9C)*AFLNLB\`-V828`IP`!`O`#<@2TZ54Z\`
  2287. + M5&SP<``0&B!+3I53AF`*<``0+P`W($M.E5.O`%1L\&`(<``0&B!+3I53AFST
  2288. + M("\`)DS?;/3>_``T3G4``"!O``0B;P`(+V\`#``$+V\`$``(+V\`%``,GOP`
  2289. + M#$CG`S0J2"])`!1^`"9O`"Q@``$@0J\`&'P`(&\`*!P8)&\`%"](`"A#[`J]
  2290. + M"#$``V@`9@``VG`EO(!F``"H<"6P$&8@4J\`*$Z5+`!![`J]"#```V@`9O!P
  2291. + M);R`9P``U&```-IP*B!O`"BP$&<&)$M8BV`&E<I2KP`H0J\`'$AO`!@O"DAO
  2292. + M`"0O+P`P(&\`.")-3KKU'D_O`!`D0$J`5L%$`4B!2,$L`6<$+TH`*"`O`!QR
  2293. + M_["!9A!*AF<$WJ\`&$J';G@@`6!V("\`'&<,<@`2`"`!(&\`%$Z0(`IG7MZO
  2294. + M`!A@3DZ5+T``'"!O`!Q#[`J](`@(,0`#"`!FZ"`O`!R\@&<N<@`2`"`!3I)@
  2295. + M+DZ5+T``'"!O`!Q#[`J](`@(,0`#"`!FZ"`O`!QR`!(`(`%.DB!O`"A*$&8`
  2296. + M_MH@!TS?+,#>_``,3G4``"!O``0B;P`(+V\`#``$+V\`$``(GOP`#$CG`!0F
  2297. + M22I(+V\`'``08#AP);`O``QF)B!O`!BP$&8&4J\`&&`8+PLO#4/O`!A.NOHL
  2298. + M4$]*@&<&+T``&&`*<``0+P`,($M.E2!O`!@0&!]```PO2``82@!FMDS?*`#>
  2299. + M_``,3G4@;P`$((A8D$*H``0A2``(3G4``"!O``1(YP`&*DA*K0`*9PHB32QX
  2300. + M``1.KOZ8&WP`_P`(</\K0``4<``0+0`/+'@`!$ZN_K`B37`B3J[_+DS?8`!.
  2301. + M=0``(&\`!"`O``A(YP,6+@`J2'#_+'@`!$ZN_K8<`$B&2,8@!E*`9@1P`&!@
  2302. + M<"(B/``!``%.KO\Z)D!*@&8((`9.KOZP8$1!ZP`*(,T71P`)%WP`!``(0A@0
  2303. + MQI/)3J[^VB=``!`@#6<((DM.KOZ>8!I!ZP`8)T@`%$'K`!0G2``<0JL`&!=\
  2304. + M``(`("`+3-]HP$YU+P@O`$ZY``!:5E!/3G4``"`O``0@;P`((F\`#"(O`!!*
  2305. + M@&8:+P$O"2\(2'H`%$AL#`A.NNK>WOP`%$[ZVZQ.=4%S<V5R=&EO;B`H)7,I
  2306. + M(&9A:6QE9"!I;B!F:6QE("5S(&%T(&QI;F4@)60*`````````^P````-````
  2307. + M````I=X``#&.```Q<```,78``#&"```QB```,7P``#%J```Q7@``,60```)N
  2308. + M```"8@```F@````"`````0```!0````*`````````_(```/J```#'DUE;6]R
  2309. + M>2!E>&AA=7-T960``&X@(3T@,```9&9A+F,`365M;W)Y(&5X:&%U<W1E9```
  2310. + M;B`A/2`P``!D9F$N8P!-96UO<GD@97AH875S=&5D``!5;F9I;FES:&5D(%P@
  2311. + M<75O=&4``%5N9FEN:7-H960@7"!Q=6]T90``56YB86QA;F-E9"!;``!5;F)A
  2312. + M;&%N8V5D(%L``%5N8F%L86YC960@6P``56YB86QA;F-E9"!;``!5;F)A;&%N
  2313. + M8V5D(%L``%5N8F%L86YC960@6P``56YB86QA;F-E9"!;``!5;F)A;&%N8V5D
  2314. + M(%L``%5N8F%L86YC960@6P``56YB86QA;F-E9"!;``!5;F)A;&%N8V5D("@`
  2315. + M`$YO('-Y;G1A>"!S<&5C:69I960`56YB86QA;F-E9"`I``!O=70@;V8@;65M
  2316. + M;W)Y`````````````````$EN=F%L:60@<F5G=6QA<B!E>'!R97-S:6]N``!5
  2317. + M;FUA=&-H960@7"@``%5N;6%T8VAE9"!<*0``4')E;6%T=7)E(&5N9"!O9B!R
  2318. + M96=U;&%R(&5X<')E<W-I;VX`3F5S=&EN9R!T;V\@9&5E<```4F5G=6QA<B!E
  2319. + M>'!R97-S:6]N('1O;R!B:6<``$UE;6]R>2!E>&AA=7-T960`````!]!.;R!P
  2320. + M<F5V:6]U<R!R96=U;&%R(&5X<')E<W-I;VX``$UE;6]R>2!E>&AA=7-T960`
  2321. + M`$UE;6]R>2!E>&AA=7-T960``````````````````5!/4TE83%E?0T]24D5#
  2322. + M5``M+0``)7,Z(&]P=&EO;B!@)7,G(&ES(&%M8FEG=6]U<PH`)7,Z(&]P=&EO
  2323. + M;B!@+2TE<R<@9&]E<VXG="!A;&QO=R!A;B!A<F=U;65N=`H``"5S.B!O<'1I
  2324. + M;VX@8"5C)7,G(&1O97-N)W0@86QL;W<@86X@87)G=6UE;G0*```E<SH@;W!T
  2325. + M:6]N(&`E<R<@<F5Q=6ER97,@86X@87)G=6UE;G0*`"5S.B!U;G)E8V]G;FEZ
  2326. + M960@;W!T:6]N(&`M+25S)PH`)7,Z('5N<F5C;V=N:7IE9"!O<'1I;VX@8"5C
  2327. + M)7,G"@`E<SH@=6YR96-O9VYI>F5D(&]P=&EO;BP@8VAA<F%C=&5R(&-O9&4@
  2328. + M,"5O"@``)7,Z('5N<F5C;V=N:7IE9"!O<'1I;VX@8"TE8R<*```E<SH@;W!T
  2329. + M:6]N(&`M)6,G(')E<75I<F5S(&%N(&%R9W5M96YT"@`````E<SH@365M;W)Y
  2330. + M(&5X:&%U<W1E9"`H)7,I"@``)7,Z($UE;6]R>2!E>&AA=7-T960@*"5S*0H`
  2331. + M`"5S.B!R96%D(&]N("5S(&9A:6QE9"`H)7,I"@`\<W1D:6X^`"5S)6,``"5D
  2332. + M)6,``"5D)6,```````$M+2TM+2TM+2TM"@`M+2TM+2TM+2TM"@`M+2TM+2TM
  2333. + M+2TM"@!5<V%G93H@)7,@6RU#5F)C:&EL;G-V=WA=(%LM;G5M72!;+4$@;G5M
  2334. + M72!;+4(@;G5M72!;+68@9FEL95T*("`@("`@(%LM95T@97AP<B!;9FEL92XN
  2335. + M+ET*`$=.52!E/V=R97`L('9E<G-I;VX@,2XV```P,3(S-#4V-S@Y03I".D-6
  2336. + M8F-E.F8Z:&EL;G-V=W@``"5D```E9```)7,*`"5S.B!G971O<'0H,RD@;&5T
  2337. + M(&]N92!B>2$*``!R`"5S.B`E<SH@)7,*`%PH7EQ\6UY!+5IA+7I?75PI7"@`
  2338. + M7EPH`%PI7"A;7D$M6F$M>E]=7'PD7"D`7"DD`$U54U1$14)51P!M=7-T(&AA
  2339. + M=F4Z("(E<R(*```E<SH@)7,Z("5S"@`E<SHE9`H``"5D"@`E<PH`)60*`#QS
  2340. + M=&1I;CX*```E<SH@)7,*`$]K```````4```````````````````%B&-O;G-O
  2341. + M;&4Z```E<SH@``!I;G1U:71I;VXN;&EB<F%R>0```'1I;65R+F1E=FEC90``
  2342. + M``#_____9FEF;RYL:6)R87)Y```````````````````%Z``!```````````%
  2343. + MZ@```````````````$`H(REA;&QO8V$N8PDQ+C$```````````````!&86EL
  2344. + M960@=&\@8W)E871E('1I;65R``!U<V5R(&EN=&5R<G5P=````````$YO(&UE
  2345. + M;6]R>0```&$`1F%I;&5D('1O(&-R96%T92!T:6UE<@``3DE,.@``3DE,.@``
  2346. + M3DE,.@``*@!.24PZ``!);G9A;&ED('=I;&1C87)D("5S`$5R<F]R(&5X<&%N
  2347. + M9&EN9R!A<F=U;65N=',`55-%4@``=7-E<@``55-%4DY!344``$A/344``',Z
  2348. + M``!32$5,3`!B:6XZ<V@``$A/4U1.04U%``!A;6EG80!.24PZ`````)LP('$`
  2349. + M`$9A:6QE9"!T;R!I;FET:6%L:7-E($DO3P``86UI9V$@<W!E8VEF:6,@97)R
  2350. + M;W(`````!RA5;FMN;W=N(&5R<F]R`&YO="!O=VYE<@!N;R!S=6-H(&9I;&4@
  2351. + M;W(@9&ER96-T;W)Y`&YO('-U8V@@<')O8V5S<P!I;G1E<G)U<'1E9"!S>7-T
  2352. + M96T@8V%L;`!I+V\@97)R;W(`;F\@<W5C:"!D979I8V4@;W(@861D<F5S<P!A
  2353. + M<F=U;65N="!L:7-T('1O;R!L;VYG``!E>&5C(&9O<FUA="!E<G)O<@!B860@
  2354. + M9FEL92!N=6UB97(`;F\@8VAI;&0@<')O8V5S<P``;F\@;6]R92!P<F]C97-S
  2355. + M97,`;F]T(&5N;W5G:"!M96UO<GD`<&5R;6ES<VEO;B!D96YI960`8F%D(&%D
  2356. + M9')E<W,`8FQO8VL@9&5V:6-E(')E<75I<F5D`&UO=6YT(&1E=FEC97,@8G5S
  2357. + M>0``9FEL92!E>&ES=',`8W)O<W,M9&5V:6-E(&QI;FL`;F\@<W5C:"!D979I
  2358. + M8V4``&YO="!A(&1I<F5C=&]R>0!I<R!A(&1I<F5C=&]R>0``:6YV86QI9"!A
  2359. + M<F=U;65N=```9FEL92!T86)L92!O=F5R9FQO=P!T;V\@;6%N>2!O<&5N(&9I
  2360. + M;&5S`&YO="!A('1Y<&5W<FET97(``'1E>'0@9FEL92!B=7-Y``!F:6QE('1O
  2361. + M;R!B:6<``&YO('-P86-E(&QE9G0@;VX@9&5V:6-E`&EL;&5G86P@<V5E:P``
  2362. + M<F5A9"UO;FQY(&9I;&4@<WES=&5M`'1O;R!M86YY(&QI;FMS``!B<F]K96X@
  2363. + M<&EP90!M871H(&%R9W5M96YT`')E<W5L="!T;V\@;&%R9V4``$DO3R!S=')E
  2364. + M86T@96UP='D``&9I;&4@;F%M92!T;V\@;&]N9P``9&ER96-T;W)Y(&YO="!E
  2365. + M;7!T>0!T;V\@;6%N>2!S;V9T(&QI;FMS("AL;V]P/RD````'0@``!U````=:
  2366. + M```'=```!X0```><```'I@``!\````?8```'Z@``!_H```@,```('@``"#``
  2367. + M``A"```(3@``"&0```AX```(A```")8```BF```(M@``",8```C8```([```
  2368. + M"0````D2```)(@``"3````E(```)5@``"6P```E\```)B```"98```FH```)
  2369. + MN@``"<X```GB````)@``9&]O<BXE;'@N)6QX``!.;R!M96UO<GD```!````@
  2370. + M("`@("`@("`H*"@H*"`@("`@("`@("`@("`@("`@($@0$!`0$!`0$!`0$!`0
  2371. + M$!"$A(2$A(2$A(2$$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!`0$!`0$!`0$!
  2372. + M$!`0$!`0@H*"@H*"`@("`@("`@("`@("`@("`@("`@(0$!`0(```````````
  2373. + M````````````````````````````````````````````````````````````
  2374. + M````````````````````````````````````````````````````````````
  2375. + M```````````````````````````````````````````````/H```"^8`````
  2376. + M``````````````````````````````````````P(````````````````````
  2377. + M````````````````````````````````````````````````````````````
  2378. + M```````````"````@``````-__\````.``X```````````````#__P````0`
  2379. + M!````````(EV```,./__````!``$````````B8P``````````````^P````"
  2380. + M````````#&P```Q8````+@````$```Q<```+Y@``"\0```J6```*D@``"HX`
  2381. + M``J*```*A@``"H(```I^```*>@``"G8```IR```*;@``"FH```IF```*8@``
  2382. + M"EX```I:```*5@``"E(```I.```*2@``"D8```I"```*/@``"CH```HV```*
  2383. + M,@``"BX```HJ```*)@``"B(```H>```*&@``"A8```H2```*#@``"@H```H&
  2384. + @```*`@``"?X```<^```%_```!?````6<`````````_(2
  2385. + `
  2386. + end
  2387. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/ls.uue emacs-18.59/amiga/amiga-extra/amiga/c/ls.uue
  2388. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/ls.uue    Thu Jan  1 00:00:00 1970
  2389. --- emacs-18.59/amiga/amiga-extra/amiga/c/ls.uue    Tue Jul 12 10:35:38 1994
  2390. ***************
  2391. *** 0 ****
  2392. --- 1,929 ----
  2393. + begin 666 ls
  2394. + M```#\P`````````"``````````$``".[```$S````^D``".[2.=^_B1()`!)
  2395. + M^0`````L>``$+P)(YP#@)FX!%"(K`*QG#.6)($$B*``TY8E@!B(/DJL`.G0`
  2396. + M(#P``"H@LJP0[&0((BP0[-"!=`$F02(\``$``4ZN_SI*@&8(3-\'!&```D`@
  2397. + M0"1`(D`@/```!&>9_``````@W%.`9OH@'&<.($G1W-70((HD25.`8/`H2=G\
  2398. + M`````"E\```J(!'H3-\'`"E.$<1*`DS?``1([(``$<QG2"`,!(``````!H``
  2399. + M`"H@T*P0["(`!(````"`#&X`)``4;1@I0!'D*4$1X)*L$.Q![!'<((%.KOTD
  2400. + M8`(N0"`L$.PO0``$T:P1Z"(/DHL&@0```(`I01&@0JP1R'``(CP``#``3J[^
  2401. + MSB9N`11#^@&(<`!.KOW8*4`J%&8&<&1@``#F*6L`F!'`2JL`K&<``'X@:P"L
  2402. + MT<C1R")H`!#3R=/)(`)R`!(9*4D1T-"!7H`"0/_\*4`1V$CG0$`B/``!``%.
  2403. + MKO\Z3-\"`DJ`9@AP%"\`9P`!!"!`*4`1U"`"4X#4@1&R```@`E."4<C_]A&\
  2404. + M`"`@`E."$;P`(B`"$;$@`"`!4<K_^!"\`"(O"&!*0>L`7$ZN_H!!ZP!<3J[^
  2405. + MC"E`$<@O`"1`("H`)&<8+&PJ%"!`(B@``$ZN_Z`I0!'`(@!.KO^"(&P1R"\(
  2406. + M2&P1G"!H`"0I:``$$=!.NG:83KHV*G``8`0@+P`$)&P1S"4`+'@`!`QN`"0`
  2407. + M%&T22JP1W&<,0>P1W%FL$>1.KOTD+DH@+!&X9P0@0$Z03KIV<$ZZ=Z!*K!'(
  2408. + M9R`L;"H4(BP1P&<$3J[_IBQX``1.KO]\(FP1R$ZN_H9@$BQX``0@+!'89P@B
  2409. + M;!'43J[_+B)L*A1.KOYB("P1Z"),D_P`````3J[_+B`?3-]_?DYU9&]S+FQI
  2410. + M8G)A<GD````@#Y!\``RPK!&@90![>$CG`Q`N+P`0)F\`%$*L$FQP`4*L$?Q"
  2411. + MIRE`$F`I0!)<3KI<Z"E3$>PNBR\'*4`2`&$``<Q03RP`2JP2=&<:+RP'GDAL
  2412. + M`]Y(;!$T3KHA[D*73KHB!D_O``Q*K!)P9P1A`"&@("P2%'(#L(%G+%F`9RA*
  2413. + MK!((9R)*K!(T9AQ*K!(X9A9*K!(L9A!*K!(D9@I*K!(P9@1P`&`"<`%R9"E!
  2414. + M$?1(>"`(*4`2:$ZZ9GA"K!'X*4`1\&$`"!I83[R';`1"K!)<(`;E@-?`8!1(
  2415. + M;`/B2'@``2\;80`(3$_O``Q2AKR';>A*K!)<9RA*K!(\9Q9(;`/F2'@``4AL
  2416. + M`^1A``@F3^\`#&`,0J=(;`/H80`%EE!/2JP1^&<680`-\$JL$CQF#$*G2&P#
  2417. + MZF$`#')03TJL$?AG:&$`$/A*K!'\9P``K`@L``$1+6=$4JP1'B`L$1ZPK!$F
  2418. + M;B(@;!$64JP1%A"\``H(+``&$2UG``"`2&P1$DZZ(-983V!R4ZP1'DAL$1)(
  2419. + M>``*3KH@R%!/8%Y(;!$22'@`"DZZ(+A03V!.2JP1_&=((&P1_$JH``AF/D*L
  2420. + M$F!@."9L$?PI:P`($?PO*P`$+Q-A``4R+I-.NGM*4$\@*P`$9P@O`$ZZ>SQ8
  2421. + M3R\+3KI[-%A/<`$I0!)@2JP1_&;"("P2;"]``!!,WPC`3OI_%B`/D'P`'+"L
  2422. + M$:!E`'EL44](YR,4+B\`("IO`"1"K!)00JP23$AX``%.NEHB6$]*@&<.<`(I
  2423. + M0!((<`$I0!)08`IP`4*L$E`I0!((1^P2#$*;0IM"K!(80JP2($*L$B1(;`/L
  2424. + M)L!.NGYR2H!7P40!2(%(P4?L$BQ"FT*;0IM'[!(X0IM"FT*;0JP21$*L$DA"
  2425. + MK!)42&P#_"E!$BA.NGX\4$]*@&<*+P!.NGXT6$]@`G!02&\`%$AX!`!(>``!
  2426. + M*4`29$ZZ./I/[P`,4H!G#C`O`!9G"'(`,@`I01)D2&P$!$ZZ??A83TJ`9PHO
  2427. + M`$ZZ??!83V`"<`B7RRE`$EA@``-^(`9*@&<``W9R"I"!9P`"P%.`9P`"\%.`
  2428. + M9P`#(%.`9P`#4'(DD(%G``*<<A"0@6<``<Q3@&<``=!3@&<``>!7@&<``>13
  2429. + M@&<``>A5@&<``>Q7@&<``?15@&<``?A7@&<``?Y3@&<``@I3@&<``@Y3@&<`
  2430. + M`A)3@&<``CI7@&<``CQR"9"!9VY3@&=X4X!G``""4X!G``"&58!G``"*4X!G
  2431. + M``+<58!G``"N58!G``"R4X!G``"V4X!G``"X4X!G``"\58!G``#`4X!G``#$
  2432. + M4X!G``#,4X!G``#04X!G``#44X!G``#858!G``#<4X!G``$$8``"AG`!*4`2
  2433. + M1"E`$D!@``)\<`$I0!),0JP24&```FYP`2E`$@Q@``)D<`$I0!(\8``"6G`!
  2434. + M0JP2%"E`$D0I0!)`2JP2"&84+P!.NE@26$]*@%;!=`&4`2E"$@A"K!(D8``"
  2435. + M*G`!*4`2,&```B!P`2E`$BA@``(60JP2"&```@YP!"E`$@A@``($<`$I0!(@
  2436. + M8``!^G`"*4`2+&```?!P`2E`$E!"K!),8``!XG`!*4`2&&```=AP`2E`$B1@
  2437. + M``'.<`,I0!(48``!Q'`"*4`2#&```;HO+`Y43KI\%%A/*4`29'(!L(%L``&D
  2438. + M+RP.5$AL!#)"IR\!3KIO*D_O`!!@``&,<`,I0!((8``!@G`!*4`20&```7A(
  2439. + M;`1*80`#,$AL!$YA``,H4$]@``%B<`(I0!((8``!6'`!*4`2+&```4YP`2E`
  2440. + M$AQ@``%$+RP.5&$``OQ83V```39P`2E`$C1@``$L0JP23$*L$E!@``$@<`%"
  2441. + MK!)0*4`23"E`$E1@``$.<`$I0!(X8``!!'`$*4`2%&```/HO+`Y43KI[5%A/
  2442. + M*4`26'(!L(%L``#D+RP.5$AL!%)"IR\!3KIN:D_O`!!@``#,0JP2%&```,1P
  2443. + M`BE`$A1@``"Z<`$I0!((8```L$AL`VXO+`Y43KIO*E!/+`!L%B\&+RP.5$AL
  2444. + M!&A.NF^(80`<%$_O``SEAD'L`X(I<&@`$A1@>$AL`[(O+`Y43KIN]%!/+`!L
  2445. + M%B\&+RP.5$AL!').NF]280`;WD_O``SEAD'L`\HI<&@`$@Q@0DAL`Q8O+`Y4
  2446. + M3KINOE!/+`!L%B\&+RP.5$AL!'Q.NF\<80`;J$_O``SEAD'L`S8I<&@`$@A@
  2447. + M#'`!*4`4T&`$80`;BB\+2&P!!$AL!`PO#2\'3KICND_O`!0L`%*`9@#\:"`L
  2448. + M#EA,WRC$4$].=2`/64"PK!&@90!TRDCG`!0J;P`02'@`#$ZZ8&8F0"!`(6P1
  2449. + M_``(+J\`$"E`$?Q.NF`<6$\F@"`-9PXO#4ZZ8`Y83R=```1@!$*K``1,WR@`
  2450. + M3G4@#Y!\`!"PK!&@90!T=DCG`30J;P`4?@!"K"FL+PU.NA]06$\F0$J`9AXO
  2451. + M#4AL!(@O+"FL0J=.NFSB<`$I0!)L3^\`$&```/AA``&28!XO"F$``2!83TJ`
  2452. + M9Q(O#4*G2&H`#&$``<I/[P`,WH`O"TZZ(#)83R1`2H!FU"\+3KH?XF$`!Y)8
  2453. + M3TJL$CAG#$AX``$O#6$`!A)03TJL$F!G("1O`!@@"F<,+PI(;`203KINI&`*
  2454. + M+PU(;`263KINF%!/2JP2"&<&2JP2)&<,+P=(;`2<3KIZME!/2JP1^&<$80`*
  2455. + M6DJL$?QG6`@L``$1+6="4JP1'B`L$1ZPK!$F;B`@;!$64JP1%A"\``H(+``&
  2456. + M$2UG+DAL$1).NGV@6$]@(E.L$1Y(;!$22'@`"DZZ>MQ03V`.2&P1$DAX``I.
  2457. + MNGK,4$],WRR`3G4@#UE`L*P1H&4`<S0O#2IO``A(>``(3KI>TB!`((TA;!)(
  2458. + M``183RE`$D@J7TYU(`^0?``,L*P1H&4`<P1(YP`4*F\`#"9L$DA@&DAX``1(
  2459. + M;0`,+Q-.NEAL3^\`#$J`9S(F:P`$(`MFXDJL$D1F'G`NL"T`#&862JP20&<4
  2460. + M$BT`#6<.L@!F!DHM``YG!'`!8`)P`$S?*`!.=2`/64"PK!&@90!RG$CG`P!^
  2461. + M`'P`8"8@;!'P+S!H`$ZZ=")83R!L$?`@,&A&9P@O`$ZZ=!!83U*'<%+<@+ZL
  2462. + M$?AMU$*L$?AP!"E`$@1,WP#`3G4@#Y!\`%2PK!&@90!R2)[\`$1(YP8V+"\`
  2463. + M9"IO`&`D;P!H("P1]"(L$?BR@&8H(@#2@2`!Y8"0@="`D('G@-"!T(`O`"\L
  2464. + M$?`I01'T3KI=[%!/*4`1\"`L$?@B`.6!DH#2@9*`YX'2@-*!)FP1\-?!0JL`
  2465. + M1D*K`$I*AF8(2JP2:&<``MA*%6<22'@`.DAM``%.NG(&4$]*@&8$2A)F!"9-
  2466. + M8#`@34H89OQ3B)'-(@@@2DH89OQ3B)'*THA4@2\!3KHDSB9`+HTO"B\`80`7
  2467. + MND_O``P@+!'X(@#E@9*`TH&2@.>!TH#2@2!L$?#1P47H``1*K!(T9S@O"B\+
  2468. + M3KH:&E!/*@!L-B`L$?@B`.6!DH#2@9*`YX'2@-*!(&P1\-'!2&@`!"\+3KH:
  2469. + M*%!/*@!@#"\*+PM.NAH:4$\J`$J%:B`O"TAL!*8O+"FL0J=.NFF@<`$I0!)L
  2470. + M3^\`$'``8``"$"`L$?@B`.6!DH#2@9*`YX'2@-*!)&P1\-7!(#P``/``P*H`
  2471. + M#`R```"@`&8``09*AF8(2JP2"&8``/HO"B\+80`!V"`L$?@B`.6!DH#2@9*`
  2472. + MYX'2@-*!(&P1\"ZP&$8O"V$``B)/[P`,)D!*@&<``+A*AF<&2JP2"&8(2JP2
  2473. + M+&<``*9(;P`:+PM.NADN4$]*@&8``)1*AF=P2JP2"&=J(#P``/``P*\`(@R`
  2474. + M``!``&982JP2/&8D($TJ2R`L$?@B`.6!DH#2@9*`YX'2@-*!(FP1\"9Q&$8C
  2475. + MB!A&("P1^"(`Y8&2@-*!DH#G@=*`TH$B;!'PT\%-Z0`$0^\`&G(/+-E1R?_\
  2476. + M/-E@'B`L$?@B`.6!DH#2@9*`YX'2@-*!(&P1\"&O`"(82B`+9P@O"TZZ<618
  2477. + M3R`L$?@B`.6!DH#2@9*`YX'2@-*!)FP1\-?!*CP``/``RJL`#`R%``"@`&8&
  2478. + M0JL`3F`D#(4``$``9A9*AF<*2JP2/&8$<`)@"G`!)T``3F`&<`,G0`!.(#P`
  2479. + M``'_T*L`&G)`YXE.NFYJ+`!*K!(H9PP@!E*`:@)2@.*`8`(@!BP`#(```"<0
  2480. + M;1`,K`````42!&P&<`4I0!($#(8``8:@;1`,K`````82!&P&<`8I0!($#(8`
  2481. + M#T)`;10,K`````<2!&P*<`<I0!($8`)\`"\-3KI:;":`4JP1^%A/(`9,WVQ@
  2482. + MWOP`1$YU(`^0?``0L*P1H&4`;M)(YP$T)F\`&"IO`!0N*P`:(`=2@"\`3KI:
  2483. + M9"1`+H<O`"\-3KHA$$_O``PN`&PB+PU(;`2J+RPIK$*G3KIG+'`!*4`2;"Z*
  2484. + M3KIP)$_O`!!@"$(R>``G2@!&3-\L@$YU(`^0?``,L*P1H&4`;F9(YS$V)F\`
  2485. + M)"IO`"`@"V8$<`!@;DAX`"\O#4ZZ;FQ03R1`2H!F#DAX`#HO#4ZZ;EI03R1`
  2486. + M(`IF#"]+`"!,WVR,3OI9FBX*GHU2AR!+2AAF_%.(D<LF!]:(4H,O`TZZ6;(D
  2487. + M0"('(D!@`A+=4X%D^D(R>``B"B0++&PJ%$ZN_(Y83R`*3-]LC$YU(`^0?``,
  2488. + ML*P1H&4`;=!(YP\T+B\`)"IO`"`@34H89OQ3B)'-+`A4ABHL$?A3A2@%Y828
  2489. + MA=B$F(7GA-B%V(1@``"B)FP1\-?$("L`3G(!L(%G!E6`9@``ADJ'9PPO$V$`
  2490. + M`,983TJ`9W0F;!'PU\0D4W`OL!)G!$H59@XO*P!&+Q-A`/B&4$]@/B!*2AAF
  2491. + M_%.(D<H@"-"&+P!.NECN)D`@;!'P+K!(`"\-+P!A`!-B(&P1\"ZP2$8O"V$`
  2492. + M^$XNBTZZ;KA/[P`0<`(@;!'PL+!(3F8*+S!(`$ZZ;J!83U.%<*[8@$J%:@#_
  2493. + M7'P`>@`J;!'P)DU@(G`"L*T`3F<44H4@32)+<!,BV%'(__PRV-;\`%)2AMK\
  2494. + M`%*\K!'X;=@I11'X3-\L\$YU(`]10+"L$:!E`&RL+PTJ;P`(2'@`+R\-3KIL
  2495. + MP%!/2H!G!B!`2^@``7`NL!5F%!(M``%G"K(`9@I*+0`"9@1P`&`"<`$J7TYU
  2496. + M(`^0?``0L*P1H&4`;&(O#2`L$A0,@`````5D``"*T$`P.P`&3OL`!`"2`$P`
  2497. + M7``(`&P@+!(,2H!G&E.`9P93@&<B8&)!^@!Z2JP2&&=60?H`BF!00?H`GDJL
  2498. + M$AAG1D'Z`*Y@0$'Z`,)*K!(89P1!^@#2*DA@,$'Z`1A*K!(89R1!^@$X8!Y!
  2499. + M^@%<2JP2&&<40?H!\F`.0?H`Q$JL$AAG!$'Z`-0J2"\-2'@`4B\L$?@O+!'P
  2500. + M3KIP-$_O`!`J7TYUO^P1H&4`:Z@@;P`((F\`!"`H`"Z0J0`N3G6_[!&@90!K
  2501. + MCB!O``@B;P`$("D`+I"H`"Y.=;_L$:!E`&MT(&\`"")O``0@*``FD*D`)DYU
  2502. + MO^P1H&4`:UH@;P`((F\`!"`I`":0J``F3G6_[!&@90!K0"!O``@B;P`$("@`
  2503. + M'I"I`!Y.=;_L$:!E`&LF(&\`"")O``0@*0`>D*@`'DYUO^P1H&4`:PP@;P`(
  2504. + M(F\`!"`H`!J0J0`:3G6_[!&@90!J\B!O``@B;P`$("D`&I"H`!I.=2`/44"P
  2505. + MK!&@90!JU")O``@@;P`$(%`B41`8L!EF!$H`9O:0(4B`2,!.=2`/44"PK!&@
  2506. + M90!JJB!O``@B;P`$(%`B41`8L!EF!$H`9O:0(4B`2,!.=2`/44"PK!&@90!J
  2507. + M@$CG`38J;P`82'@`+B\53KIJDB9`2'@`+B!O`"@O$$ZZ:H)/[P`0)$`@"V8>
  2508. + M(`IF&B!5+&\`'")6$!BP&68$2@!F]I`A2(!(P&!$(`MF!'#_8#P@"F8$<`%@
  2509. + M-"!+(DH0&+`99@1*`&;VD"%(@$C`+@!F&B!5+&\`'")6$!BP&68$2@!F]I`A
  2510. + M2(!(P&`"(`=,WVR`3G4@#U%`L*P1H&4`:>!(YP$V*F\`'$AX`"XO%4ZZ:?(F
  2511. + M0$AX`"X@;P`D+Q!.NFGB3^\`$"1`(`MF'B`*9AH@52QO`!@B5A`8L!EF!$H`
  2512. + M9O:0(4B`2,!@1"`+9@1P_V`\(`IF!'`!8#0@2R)*$!BP&68$2@!F]I`A2(!(
  2513. + MP"X`9AH@52QO`!@B5A`8L!EF!$H`9O:0(4B`2,!@`B`'3-]L@$YU(`]10+"L
  2514. + M$:!E`&E`2.<#`"`L$@@,@`````5D``$@T$`P.P`&3OL`!`":``@`A`",`)1^
  2515. + M`'P`8&P@;!'PT<8O"&$`!EY83P@L``$1+6="4JP1'B`L$1ZPK!$F;B`@;!$6
  2516. + M4JP1%A"\``H(+``&$2UG+DAL$1).NG,(6$]@(E.L$1Y(;!$22'@`"DZZ<$10
  2517. + M3V`.2&P1$DAX``I.NG`T4$]2AW!2W("^K!'X;8Y@``"080`)4&```(AA``JR
  2518. + M8```@&$`#"!@>'X`?`!@;"!L$?#1QB\(80``;EA/""P``1$M9T)2K!$>("P1
  2519. + M'K"L$29N("!L$192K!$6$+P`"@@L``81+6<N2&P1$DZZ<G983V`B4ZP1'DAL
  2520. + M$1)(>``*3KIOLE!/8`Y(;!$22'@`"DZZ;Z)03U*'<%+<@+ZL$?AMCDS?`,!.
  2521. + M=2`/D'P`3+"L$:!E`&?\GOP`0$CG(00J;P!02&\`."\M``Q.NEXH4$]"+P!"
  2522. + M("P2#$J`9Q)3@&<&4X!G$F`6+VT`+@`,8`XO;0`F``Q@!B]M`!X`#$AO``Q.
  2523. + MNCN.6$\@0$/O`!`2V&;\2JP2$&<&0B\`*&`P(#P`[4X`T*\`#"(L$@"R@&X.
  2524. + M(#S___'PT*\`#+*`;`Q![P`C0^\`&Q+89OQ"+P`@2JP2,&<.+RT`"$AL!*Y.
  2525. + MNFY:4$]*K!(D9SH@/````?_0K0`:<D#GB4ZZ9D8N`$JL$BAG#"`'4H!J`E*`
  2526. + MXH!@`B`'+P`O+!($2&P$M$ZZ;AQ/[P`,<``P+0`0+P!(;P`\2&P$NDZZ;@1/
  2527. + M[P`,2JP2(&<2<``P+0`2+P!(;`3"3KIMZF`8<``P+0`2+P!.NE,>6$\O`$AL
  2528. + M!,A.NFW04$]*K!(<9C)*K!(@9Q)P`#`M`!0O`$AL!-!.NFVR8!AP`#`M`!0O
  2529. + M`$ZZ5"A83R\`2&P$UDZZ;9A03R`\``#P`,"M``P,@```(`!G"`R```!@`&8B
  2530. + M("T`%B(`X(ET`$8"PH+`@B\`+P%(;`3>3KIM8$_O``Q@#B\M`!I(;`3H3KIM
  2531. + M3E!/0>\`%$JL$A!G!$'O`!`O"$AL!.Y.NF#^+I5A``!24$]*K0!.9BY*K0!&
  2532. + M9SA(;!$22&P$\DZZ;5XNK0!&80``,%!/2JP2+&<<+RT`2F$``]183V`02JP2
  2533. + M+&<*+RT`#&$``\)83TS?((3>_`!`3G4@#Y!\``RPK!&@90!EREE/+PTJ;P`,
  2534. + M2JP25&<``K0(+``!$2UG-%*L$1X@+!$>L*P1)FX0(&P1%E*L$180O``B8``"
  2535. + MCE.L$1Y(;!$22'@`(DZZ;0A03V```GA(;!$22'@`(DZZ;/903V```F9*K!),
  2536. + M9P`!+'``$"\`!%&`9SQ3@&=44X!G)E6`9UI3@&<Z<A.0@6=>58!G:'(ZD(%F
  2537. + M<$AL!/A.NE_*6$]@``(F2&P$_$ZZ7[Q83V```AA(;`4`3KI?KEA/8``""DAL
  2538. + M!01.NE^@6$]@``'\2&P%"$ZZ7Y)83V```>Y(;`4,3KI?A%A/8``!X$AL!1!.
  2539. + MNE]V6$]@``'22&P%%$ZZ7VA83V```<00+P`$<B"P`6-R<G^P`61L""P``1$M
  2540. + M9U!2K!$>(BP1'K*L$29N*B!L$192K!$6$(!R"K`!9@`!C`@L``81+6<``8)(
  2541. + M;!$23KINM%A/8``!=%.L$1YR`!(`2&P1$B\!3KIK[%!/8``!7'(`$@!(;!$2
  2542. + M+P%.NFO84$]@``%(<@`2`"\!2&P%&$ZZ:T903V```300+P`$<B"P`65R<G^P
  2543. + M`61L""P``1$M9U!2K!$>(BP1'K*L$29N*B!L$192K!$6$(!R"K`!9@``_`@L
  2544. + M``81+6<``/)(;!$23KIN)%A/8```Y%.L$1YR`!(`2&P1$B\!3KIK7%!/8```
  2545. + MS'(`$@!(;!$2+P%.NFM(4$]@``"X2JP24&9J""P``1$M9U!2K!$>("P1'K"L
  2546. + M$29N*B!L$192K!$6$"\`!!"`<@JP`68``(8(+``&$2UG?$AL$1).NFVP6$]@
  2547. + M<%.L$1YP`!`O``1(;!$2+P!.NFKH4$]@6'(`$@!(;!$2+P%.NFK64$]@1@@L
  2548. + M``$1+6<P4JP1'B`L$1ZPK!$F;@X@;!$64JP1%A"\`#]@(E.L$1Y(;!$22'@`
  2549. + M/TZZ:IY03V`.2&P1$DAX`#].NFJ.4$\0'1]```1F`/V42JP25&=&""P``1$M
  2550. + M9S!2K!$>("P1'K"L$29N#B!L$192K!$6$+P`(F`B4ZP1'DAL$1)(>``B3KIJ
  2551. + M2%!/8`Y(;!$22'@`(DZZ:CA03RI?6$].=2`/D'P`#+"L$:!E`&*>2.<!!"IO
  2552. + M``Q*K!(P9PXO+0`(2&P%'DZZ:8I03TJL$B1G.B`\```!_]"M`!IR0.>)3KIA
  2553. + M=BX`2JP2*&<,(`=2@&H"4H#B@&`"(`<O`"\L$@1(;`4D3KII3$_O``PO%6$`
  2554. + M_&983TJL$BQG"B\M``QA```*6$],WR"`3G4@#U%`L*P1H&4`8AA(YR,`+B\`
  2555. + M$"P'`H8``/``#(8``$``9D8(+``!$2UG,%*L$1X@+!$>L*P1)FX.(&P1%E*L
  2556. + M$180O``O8")3K!$>2&P1$DAX`"].NFE04$]@#DAL$1)(>``O3KII0%!/#(8`
  2557. + M`*``9D8(+``!$2UG,%*L$1X@+!$>L*P1)FX.(&P1%E*L$180O`!`8")3K!$>
  2558. + M2&P1$DAX`$!.NFD"4$]@#DAL$1)(>`!`3KIH\E!/#(8``!``9D8(+``!$2UG
  2559. + M,%*L$1X@+!$>L*P1)FX.(&P1%E*L$180O`!\8")3K!$>2&P1$DAX`'Q.NFBT
  2560. + M4$]@#DAL$1)(>`!\3KIHI%!/#(8``,``9D8(+``!$2UG,%*L$1X@+!$>L*P1
  2561. + M)FX.(&P1%E*L$180O``]8")3K!$>2&P1$DAX`#U.NFAF4$]@#DAL$1)(>``]
  2562. + M3KIH5E!/#(8``(``9FIP`;"L$BQF8B(L%-!G#`@'``9F$`@'``%G"DJ!9DQT
  2563. + M2<Z"9T8(+``!$2UG,%*L$1XB+!$>LJP1)FX.(&P1%E*L$180O``J8")3K!$>
  2564. + M2&P1$DAX`"I.NF?T4$]@#DAL$1)(>``J3KIGY%!/3-\`Q$YU(`]90+"L$:!E
  2565. + M`&!,64](YP,4*F\`&"95?@!*K!(P9P)^!TJL$B1G"B`'T*P2!"X`4H=*K!)4
  2566. + M9UY4AV!:2JP23&=2$"\`$$B`2,!1@&<@4X!G'%.`9QA5@&<44X!G$'(3D(%G
  2567. + M"E6`9PIR.I"!9A)4AV`D2JP25&<$5(=@&E*'8!80+P`0<B"P`6T&<G^P`6T$
  2568. + M6(=@`E*'$!L?0``09IX@+!(L9UXL/```\`#,K0`,#(8``(``9BI3@&9(("P4
  2569. + MT&<0""T`!@`/9A0(+0`!``]G#$J`9BYP2<"M``QG)E*'8"(,A@``0`!G&`R&
  2570. + M``"@`&<0#(8``!``9P@,A@``P`!F`E*'(`=,WRC`6$].=2`/D'P`&+"L$:!E
  2571. + M`%\^GOP`$$CG#P!^`'H`?`!@&B!L$?#1QB\(80#^S%A/L(=O`BX`4H5P4MR`
  2572. + MNJP1^&W@5(<O1P`8("P29"(O`!A.NEX(+@!F`GX!("P1^"('3KI=^"]``!`@
  2573. + M+!'X(@=.NEWJ2H%6P$0`2(!(P"(O`!#2@$*O`!PO00`48```RBP%>``@!>6`
  2574. + MD(70@)"%YX#0A="`*@`@!^6`D(?0@)"'YX#0A]"`+T``$"!L$?#1Q2\(80#[
  2575. + MXB!L$?#1Q2Z(80#^*EA/+@#<KP`4VJ\`$+RL$?AL&"`'T(0N!-ZO`!@O!R\`
  2576. + M80`#HE!/*`=@O@@L``$1+6="4JP1'B`L$1ZPK!$F;B`@;!$64JP1%A"\``H(
  2577. + M+``&$2UG+DAL$1).NFA86$]@(E.L$1Y(;!$22'@`"DZZ99103V`.2&P1$DAX
  2578. + M``I.NF6$4$]2KP`<+B\`%"HO`!RZAVT`_RQ,WP#PWOP`$$YU(`^0?``0L*P1
  2579. + MH&4`7=113TCG#P!^`'H`?`!@&B!L$?#1QB\(80#]9%A/L(=O`BX`4H5P4MR`
  2580. + MNJP1^&W@5(<O1P`0("P29"(O`!!.NER@+T``%&8&<`$O0``4>@!^`'P`>`!@
  2581. + M``"J2H9G``""(`8B+P`43KI<>$J!9EP(+``!$2UG0E*L$1X@+!$>L*P1)FX@
  2582. + M(&P1%E*L$180O``*""P`!A$M9RY(;!$23KIG:EA/8")3K!$>2&P1$DAX``I.
  2583. + MNF2F4$]@#DAL$1)(>``*3KIDEE!/>@!@%B`'T(4N!=ZO`!`O!R\`80`"0%!/
  2584. + M*@<@;!'PT<0O"&$`^D`@;!'PT<0NB&$`_(A83RX`4H9P4MB`O*P1^&T`_U((
  2585. + M+``!$2UG0E*L$1X@+!$>L*P1)FX@(&P1%E*L$180O``*""P`!A$M9RY(;!$2
  2586. + M3KIFSEA/8")3K!$>2&P1$DAX``I.NF0*4$]@#DAL$1)(>``*3KIC^E!/3-\`
  2587. + M\%!/3G4@#U%`L*P1H&4`7&!(YP\`?@!\`&```30J!R@&Y828AMB$F(;GA-B&
  2588. + MV(0@;!'PT<0O"&$`^^!83]Z`4H:\K!'X;`)4ATJ%9V"^K!)D;5H(+``!$2UG
  2589. + M0E*L$1X@+!$>L*P1)FX@(&P1%E*L$180O``*""P`!A$M9RY(;!$23KIF(%A/
  2590. + M8")3K!$>2&P1$DAX``I.NF-<4$]@#DAL$1)(>``*3KIC3%!/GH4@;!'PT<0O
  2591. + M"&$`^0Y83[RL$?AL``".""P``1$M9S!2K!$>("P1'K"L$29N#B!L$192K!$6
  2592. + M$+P`+&`B4ZP1'DAL$1)(>``L3KIB_E!/8`Y(;!$22'@`+$ZZ8NY03P@L``$1
  2593. + M+6<P4JP1'B`L$1ZPK!$F;@X@;!$64JP1%A"\`"!@(E.L$1Y(;!$22'@`($ZZ
  2594. + M8KA03V`.2&P1$DAX`"!.NF*H4$^\K!'X;0#^R`@L``$1+6="4JP1'B`L$1ZP
  2595. + MK!$F;B`@;!$64JP1%A"\``H(+``&$2UG+DAL$1).NF4<6$]@(E.L$1Y(;!$2
  2596. + M2'@`"DZZ8EA03V`.2&P1$DAX``I.NF)(4$],WP#P3G4@#Y!\``RPK!&@90!:
  2597. + MKEE/2.<#`"PO`!0N+P`08```P"`'(BP26$ZZ69XO0``((`8B+!)83KI9D+"O
  2598. + M``AO6`@L``$1+6<P4JP1'B`L$1ZPK!$F;@X@;!$64JP1%A"\``E@(E.L$1Y(
  2599. + M;!$22'@`"4ZZ8<Y03V`.2&P1$DAX``E.NF&^4$\@!R(L$EA.NEDZWJP26)Z!
  2600. + M8$@(+``!$2UG,%*L$1X@+!$>L*P1)FX.(&P1%E*L$180O``@8")3K!$>2&P1
  2601. + M$DAX`"!.NF%V4$]@#DAL$1)(>``@3KIA9E!/4H>^AFT`_SY,WP#`6$].=;_L
  2602. + M$:!E`%G(2.<@-"9O`!PJ;P`4)&\`&'`NL!)F#B!O`!A**``!9R1@`AK:2A)F
  2603. + M^K7O`!AC%A`J__]R+[`!9PQT.K`"9P8:P6`"&MM*$V;Z0A5,WRP$3G4@#Y!\
  2604. + M``RPK!&@90!9:B\L$>Q(;`4J2&P1-$ZZ7\Q(;`942&P1-$ZZ7\!(>``!3KI>
  2605. + MXD_O`!A.=0``3OD``(2J3OD``(.83OD``(AL3OD``(6\3OD``(.<3OD``(/4
  2606. + M3OD``(6(3OD``(4^3OD``(*T<&%(YR`R(&\`&$/O`!Q%^@`<)F\`%"0++'D`
  2607. + M```$3J[]]B`+D(),WTP$3G46P$YU```@;P`$("\`"")O``PO;P`0``193TCG
  2608. + M(30N`"9O`!PJ2"1)+TD`%&`"&MI*$F<$4X=N]K7O`!1C&A`J__]R+[`!9Q!T
  2609. + M.K`"9PI3AV\&&L%@`AK;2A-G!%.';O9"%4J'7L!$`$B`2,!,WRR$6$].=2`O
  2610. + M``0@;P`((F\`#%E/2.<G-BX`*D@O20`@2JP3?&<``/X@;!-\)F@`#$ZZ!0XB
  2611. + M*P`$LH!F``#H(&P3@$AH`"Q!["BL(E-P`$8`80#_6%A/2H!G``#*0>PHK")-
  2612. + M$!BP&68``+Q*`&;T9@``M$J'9A`@;!.`("@`&'(#L(%G``"@(&P3@"`H`!AR
  2613. + M_+"!9P19@&8^(FP3?"(1+&PJ%$ZN_X(L`"!L$X#0_``L(@AT_DZN_ZPJ`&<2
  2614. + M(@5![!)X)`A.KO^:(@5.KO^F(@9.KO^"8`8I:``@$G@@;!.`*6@`!!+X*6@`
  2615. + M"!+T0^@`#$7L$OPDV239)-D@;!.`*6@`&!)\*6@`'!+L+R\`("\K`1@@34/L
  2616. + M$GAP`$ZZ-FA03W`!8`)P`$S?;.183TYU(&\`!")O``A(YP`4)DDJ2$ZZ#5X@
  2617. + M32)+<`!A`/[(2H!G!'``8`P@32)+3-\H`$[Z-SQ,WR@`3G4@;P`$(F\`"$CG
  2618. + M`!0F22I(3KH-)B!-(DMP`6$`_I!*@&9P2'@`_TAL**PO#4ZZ"3Q/[P`,2H!J
  2619. + M#"!-(DM,WR@`3OHV\DO30IU"JP`2<`$W0``.0FL`$"=\```"```R-T``#$*K
  2620. + M`#9!["BL(DA*&6;\4XF3R"=)`!9"G2`\#PP_`"=``"(G0``:)T``*BK\``"A
  2621. + M_W``3-\H`$YU(&\`!%E/2.<`%"](``@@;P`(*F@!#&`*)E4@34ZZ5^XJ2R`-
  2622. + M9O),WR@`6$].=2!O``2>_``02.<@-BI()FT`#$/K`0PO2``<+TD`("!+8;1"
  2623. + MK!-\0JL!#$*M``0@%>6`($`G:``,`1A!ZP`(+T@`&&```)Y!ZP`0(DA*&6;\
  2624. + M4XF3R"`)D<C0_``L<@`R`-*(4H%T`#0!/T``%C]!`!0@`DZZ6-8D0$J`9@9P
  2625. + M#&```)Q-TD*>(&\`(""*+U``("SK`(@LZP"$0>L`C$/J``PBV"+8(M@E:P`,
  2626. + M`!@E:P!\`!Q+Z@`@.V\`%``$.V\`%@`&(&\`'"`H``12J``$*T``"$'J`"Q#
  2627. + MZP`0$-EF_"JK``@J;P`<(A4D+P`8+&PJ%$ZN_Y1*@&8`_TXG:P$,`1!"K0`$
  2628. + M+&PJ%$ZN_WQR=-*!L(%F!'`!8`I.NC?0*4`IK'``3-]L!-[\`!!.=2!O``19
  2629. + M3TCG(#8O2``4<!!.NE@,*D!P1^6(3KI8`B9`(&\`%"`(2AAF_%.(D<`@"%*`
  2630. + M3KI7ZB1`3KH+"B`-9P``@B`*9WP@"V=X*TL`#"M\```!'``(D<@G2`$0)T@!
  2631. + M#"=(`10FBB!O`!04V&;\3KH!=B=```0B+P`4+&PJ%'3^3J[_K"J`9R)!ZP`(
  2632. + M(@`D""QL*A1.KO^:2H!G#B!-80#^.$J`9Q0@#6`^+&PJ%$ZN_WQ.NC<**4`I
  2633. + MK"!-80``-F`D<`PI0"FL(`UG!B!-3KI5XB`*9P8@2DZZ5=@@"V<&($M.NE7.
  2634. + M<`!,WVP$6$].=2!O``1(YP`6*D@F;0`,3KH*1$*L$WP@2V$`_:`@4TZZ5:(@
  2635. + M%6<*(@`L;"H43J[_IB!M``Q.NE6,($U,WV@`3OI5@B!O``193TCG`S0O2``4
  2636. + M(&\`%"IH``R7RTZZ"?A*K0$49R1^`"1M`0P@;P`4+"@`!&`$4H<D4KZ&;`0@
  2637. + M"F;T*TH!$$*M`10@+0$09R(F0-;\`"`I;P`4$WQ%[0$0(%(I2!.`(%(DT"!O
  2638. + M`!12J``$(`M,WRS`6$].=2!O``0O#2I(3KH)D"`M``0J7TYU(&\`!"`O``A(
  2639. + MYP$4+@`J2"9M``Q.N@EP<`$G0`$4*T<`!$S?*(!.=4CG`0(L;"H4<@!.KO^"
  2640. + M+@`B`$ZN_X(@!TS?0(!.=0``(&\`!")O``A93TCG,S8J2'X`(&P4L"PH`.`O
  2641. + M20`@2H9F($JL$<AF&D'L![PB""QL*A0D/````^U.KO_B+`!G`GX!2H9G-B(&
  2642. + M0>P'QB0(0>P1T"8(+&PJ%$ZN_IXB!B0-)B\`($ZN_IXB!G0*3J[^R$J'9U@B
  2643. + M!DZN_]Q@4"!L%+`F:`"X,'S__[?(9T!#[`?,<"4L>``$3J[]V"1`2H!G+"EL
  2644. + M$=`'L"E-![0O"B!++$I#[`>HE<HF;P`D3J[]M$S?!``B2BQX``1.KOYB3-]L
  2645. + MS%A/3G4@;P`$0^\`"&$`_RI.=2!O``1#[P`(80#_''`43KI7NDYU``!(YP`&
  2646. + M<`AR`"QX``1.KO\Z*D!*@&8$<`!@+D*M``1(>``H<``O`$'L!^!R`9/)P4%.
  2647. + MNC;&4$\J@&8,(DUP"$ZN_RYP`&`"(`U,WV``3G4@;P`$2.<`!BI((`UG&"!-
  2648. + M80``'B!53KHW"B)-<`@L>``$3J[_+DS?8`!.=2!O``1(YP`&*DA*K0`$9Q0B
  2649. + M52QX``1.KOX@(E5.KOXF0JT`!$S?8`!.=2!O``0@4")H``YP`!`I``]R`>&A
  2650. + M(`%.=2!O``0@+P`((B\`#$CG`P8L`2X`*DAAJDJ'9@1*AF<>(E4C1P`@(T8`
  2651. + M)#-\``D`'"QX``1.KOXR<`$K0``$3-]@P$YU(&\`!$CG``8J2$JM``1G'")5
  2652. + M+'@`!$ZN_BQ*0&<.(E5.KOXF0JT`!'`!8`)P`$S?8`!.=2\.("P4O"(`2$%"
  2653. + M0=*`("P4L+.`*4`3B$*L$XQ#[`?T<``L>``$3J[]V"E`$X1P_TZN_K9(@$C`
  2654. + M*4`'\$JL$X1G"$J`:P1P`6`"<``I0!.0+%].=2\.("P'\&L(+'@`!$ZN_K`@
  2655. + M+!.$9PHB0"QX``1.KOYB+%].=2`O``113TCG`P`N`$ZZ!HP@!TZZ`9!*@&<H
  2656. + M(D`@:0`<<D#EB<*1+T@`#"`!(&D`!")O``Q.D2P`(`=.N@%((`9@`G#_3-\`
  2657. + MP%!/3G4@+P`$+P<N'V"N```@;P`$("\`"")O``PO;P`0``0O;P`4``@O;P`8
  2658. + M``PO;P`<`!`O;P`@`!0O;P`D`!A13TCG!Q0N`$CO`P``%'P`*FP3E&`62JT`
  2659. + M!&8*,'P``2M(``1@#%*&VOP`)+RL$YAMY"`L$YB\@&9X<@K3K!.8("P3F"(`
  2660. + MYX'2@.6!(`%.NE*<*D!*@&8,<`PI0"FL</]@``".</;0K!.8(@#G@=*`Y8$@
  2661. + M;!.4(DU@`A+84X%D^B`L$Y1G!B!`3KI0]BE-$Y1Z]MJL$Y@@!>>`T(7E@-O`
  2662. + ME\LK2P`$4H7:_``DNJP3F&WP(`;G@-"&Y8`@;!.4(:\`%`@$(8<(`"&O`!@(
  2663. + M"$OO`"`AG0@,(9T($"&="!1+[P`L(9T(&"&="!PAG0@@(`9,WRC@4$].=2`O
  2664. + M``0B`&L6LJP3F&P0(`'G@-"!Y8`@;!.40K`(!$YU("\`!$CG`00N`&L>OJP3
  2665. + MF&P8(`?G@-"'Y8`J;!.4V\!*K0`$9P0@#6`(<`DI0"FL<`!,WR"`3G4@+!.8
  2666. + M3G4``"!O``1(YP`&*D@L;!3$3J[_O@:5#PP_`'``3-]@`$YU("\`!"!O``A9
  2667. + M3P2`#PP_`"(\``%1@"Z`3KI-6B"`(!<B/``!48!.NDU,(`$N@7(\3KI-0B%`
  2668. + M``0@%W(\3KI--B`!Y8"0@>>`T('0@"%```A83TYU(&\`!%E/2.<@!$O0(!TB
  2669. + M`.F!DH`@`>>`T($B`.6!TH#O@2`=)`#I@I2`Y8(@'2]!``AR,DZZ3.K0@M"O
  2670. + M``@&@`\,/P!,WR`$6$].=2`O``193RZ`0>P(""`(6$].=2!O``193RZ(0>P(
  2671. + M""`(6$].=2`L"`A.=0``(&\`!")O``@@+P`,64](YS\V+@`J2"])`"B7RTZZ
  2672. + M`[`B#20++&PJ%$ZN_7XF0"("3J[]>"`+9@9.NC$(8%XD;P`H0A(J!U*%(A,D
  2673. + M*P`$)@TH"BQL*A1.KOY*2H!G&"(+3J[]>$H29@1P`F`L+P1.NDT\6$]@*$ZN
  2674. + M_WPL`'(R1@&P@68(""L``0`+9I0B"TZN_7@@!DZZ+[(I0"FL</],WVS\6$].
  2675. + M=0``64]*K`@Z9@Q![P`#*4@(.F'N8!9![P`#(FP(.K/(9`1P`6`"</\I0!.<
  2676. + M6$].=5E/2.<!%"XO`!1*K!.<9@)AP"IL"#Y@+B`L$YQO#$'O``\B;0`$L\AB
  2677. + M$$J`:AQ![P`/(FT`!+/(9!`F52\-3KI.(EA/*DL@#6;.*4T(/DJ'9@1P`&`B
  2678. + M4(<O!TZZ3W(@0""L"#Y#[P`3(4D`!$/H``A83RE`"#X@"4S?*(!83TYU```@
  2679. + M+P`$64\N@$'L"%H@"%A/3G4@;P`$64\NB$'L"%H@"%A/3G4@+P`$64\N@"`L
  2680. + M%*QG#B!`3KKZ_DJ`9P1R`6`"<@`@`5A/3G4@+P`$(&P4K'(`3OKZI$ZZ^=@I
  2681. + M0!2L9@I(;`AH3KKYM%A/(&P4K$ZZ^FB!K!.@3G4@;!2L3OKZ!`CL``P3HDYU
  2682. + M("\`!`@```Q6P$0`2(!(P$YU".P`#1.B3G4@+P`$"```#5;`1`!(@$C`3G5.
  2683. + MNB^2<``@;"GD$"@`#W(!X:&#K!.@3G5.^B_D("\`!%E/2.<!%B]``!!^`&`N
  2684. + M("T`%$ZZ+SHF0$J`9Q1*JP`49@Y^`7`!)T``%"=M`!@`&")-<!PL>``$3J[_
  2685. + M+B!L*>0L>``$3J[^C"I`2H!FP"`'3-]H@%A/3G4@+P`$2.</!"X`<`'OH"P`
  2686. + M<`F^@&8&<`!.N@L4("P4I,"&9P:-K!2H8'HJ!D:%RZP4J$J':V9P(+Z`;&`@
  2687. + M!^>`0>P3I"IP"``P?``!N\AF+"`'58!G%%.`9Q!R#9"!9SQ9@&<X48!G-&`*
  2688. + M2&P(@$ZZ^'!83W``3KH*MF`@(`UG'"`'YX`H!D'L$Z2(L`@$B:P4I"`'3I5&
  2689. + MA,FL%*0@+!2HP(9FBDS?(/!.=2`O``0O#B(L$Z""@'``+'@`!$ZN_LXL7TYU
  2690. + M("\`!"\.(@`@+!.@@($L>``$3J[^PBQ?3G4@+P`$2.<#`"X`?`!A`/X02H!G
  2691. + M"'P!<`YA`/\,(`=A`/YB2H!G"'P!<`)A`/[Z(`=A`/YJ2H!G"'P!<`-A`/[H
  2692. + M(`=A`/Z&2H!G"'P!<!1A`/[6(`9,WP#`3G4@+P`$+P<I0!&H<`@N'V``_KQP
  2693. + M`&$`_V!@D&#V2.<!%'X`2^P3I#9\``$JBT*M``12AU"-<""^@&WP0JP4J$*L
  2694. + M%*1"K!.@80#]U&$`_>IA`/VB3-\H@&``_?AA`/VX8`#^"```2&P(E$ZZ]TQ8
  2695. + M3TYU("\`!"\-3KI,="I`2H!F`F'B(`TJ7TYU(&\`!"`O``@O"TZZ2F@F0$J`
  2696. + M9@)AQB`+)E].=2!O``0O#2I((`UF!$OL")X@34H89OQ3B)'-(`A2@$ZZ3"@@
  2697. + M0$J`9@1P`&`((D@2W6;\(`@J7TYU64](YP,T?@!\`"!L%+`F:`#08"Q**P`(
  2698. + M9B0P/`4`P&L`#F8:4H<@:P`*(`A*&&;\4XB1P"`(W(#<JP`45(8F4TJ39M`@
  2699. + M!U*`Y8#0AF$`_THI0!3(Y8<@0")`T\=%Z0`$+T``%&8*0>P(D"E(%,A@5B!L
  2700. + M%+`J:`#08$)*+0`(9CHP/`4`P&T`#F8P)FT`"BXM`!0@;P`4(,HO2``48`(4
  2701. + MVTH39OH4_``])FT`$&`"%-L@!U.'2H!F]D(:*E5*E6:Z(&\`%$*03-\LP%A/
  2702. + M3G4@;P`$("\`""\-*D@J@$*M``3E@&$`_K0K0``(*E].=2!O``0B;P`(("\`
  2703. + M#$CG(C0F22I(2H!G"B!+80#^PB1`8`(D2R`*9SXB%20M``2T@6TB+`'<AG00
  2704. + MTH*\@6T"(@8J@2`!Y8`@;0`(3KI(YBM```AG$D?M``0B$U*;Y8$@6R&*&`!P
  2705. + M`4S?+$1.=2!O``0B;P`(("\`#&&22H!F!&$`_AI.=2!O``0B;P`(2.<`%"9)
  2706. + M*D@@+0`$T*L`!+"5;Q+0@"J`Y8`@;0`(80#^&BM```@B+0`$Y8$@;0`(T<$@
  2707. + M*P`$(@#E@2)K``A@`A#94X%D^M&M``0@:P`(3-\H`$[Z2-8@;P`$(F\`""]O
  2708. + M``P`!"`O`!`B+P`464](YP(T+`$J221(+T@`$$J`9T13@&<*4X!G``"V8```
  2709. + M]%.&9R(@+P`8(@V0@2!O`!!",`@`($$B;P`08`(2V%.`9/I@``#.0>P(H")O
  2710. + M`!`2V&;\8```OB9O`!A@;G!<L!5F9DHM``%G8%2-<`&\@&8&%/P`86!4(`95
  2711. + M@&9&$"W__TB`2,!R(Y"!9RY5@&<J58!G)E.`9R)3@&<>4X!G&G(5D(%G%'(<
  2712. + MD(%G#E6`9PIR'Y"!9P15@&8$%/P`)Q3M__]@"!3M__]@`A3=N\MECF!`)F\`
  2713. + M&&`V<"JP%68N2BT``6<H5(T0+?__2(!(P')ED(%G#'()D(%F#!3\``I@#A3\
  2714. + M`!M@"!3M__]@`A3=N\MEQD(23-\L0%A/3G6>_`$L2.<_-BIO`5@@;!'$#&@`
  2715. + M)0`49`I(>``43KK)OEA/0JP1#'`!*4`1""E`$2YP`BE`$2HI0!%0*7P```"$
  2716. + M$4R3R2QX``1.KO[:*4`4L$ZZ\YPI0!2T9@I(;`BB3KKS>%A/(&P4M$ZZ]"PI
  2717. + M0!2X+&P4M"!6+&@`%"E.%,1![P$P3J[_OBEO`3`4O$ZZ])1.NONL(&P4L"`H
  2718. + M`*QG$.6`(D`B*0`TY8$I013`8`8I:`"$%,!*%68``.A![`BZ(@@L;"H4)#P`
  2719. + M``/N3J[_XBP`0>P(P"((3J[_XBX`0>P(QB((3J[_XBH`2H9G"$J'9P1*A68B
  2720. + M2H9G!B(&3J[_W$J'9P8B!TZN_]Q*A6<&(@5.KO_<80#[<G`!+P`O!2\`+P<B
  2721. + M!L%!3KHC6"!L$<@@*``<0>\!6&$`_)Y/[P`0?`!^`&!0(FP1R"!I`"0@,'@`
  2722. + M9SXB`$/O`#`D"2QL*A1V0.6+3J[^;DJ`9R8B;!'((&D`)-''("@`!&<((@(D
  2723. + M`$ZN_(Y![P%(0^\`,'`!80#\V%*&4(<@;!'(O*@`'&VF8``"S"QL*A1.KO_*
  2724. + M*`!.KO_$*@!^`"!L%+`L*`#@9BA^`4'L",PB""0\```#[4ZN_^(L`&820>P(
  2725. + MSB((3J[_XBP`9@1A`/JD+P<O!G``+P`O!2($P4%.NB**0>\!6'`!80#[UB`\
  2726. + M```%&F$`^HX@0#%\!```$B]``#QP0.6(80#Z>D_O`!!^0.6/+T`!.&`"4HT0
  2727. + M%4B`2,!![`_I"#```P@`9NP0%6<``A9R(K`!9C!2C29-8!!P*K`59@A*+0`!
  2728. + M9P)2C5*-$!5G!G(BL`%FYB1-$!5R(K`!9@)2C7P"8%1P)[`59B!2C29-8`)2
  2729. + MC1`59P9R)[`!9O0D37`GL!5F`E*-?`%@+B9-8!!P7+`59@A*+0`!9P)2C5*-
  2730. + M$!5G$G(@L`%G#'(*L`%G!G()L`%FVB1-?``@2RH*FHL@!5*`+T@`*&$`^;8F
  2731. + M0$JO`4QF("`%($LB;P`H3KI#WD(S6`!![P%((DMP`&$`^V!@`/\FVH5R$-J!
  2732. + MNH=O%"!O`3A.ND2((`5A`/EV+@4O0`$X+PH@!B!+(F\`+'(!80#[KEA/(@LD
  2733. + M+P$X)@<L;"H43J[\N"H`;!!"$B\O`"A(;`C43KKP?E!/2H5F(B\*(`8@2R)O
  2734. + M`"QR`&$`^W1![P%,(DMP`&$`^NA83V``_JQZ`2!O`"Q"J``(0B@`$4(H`!`O
  2735. + M"B`&($LB;P`L<@)A`/M`0>\!0'`080#Z)EA/(@LD+P`L+&PJ%$ZN_,HH`&8\
  2736. + M8"IZ`")O`"S2_`$80>\!/'`!80#Z($J`9@1X9V`2(B\`+"QL*A1.KOS$*`!*
  2737. + MA&?2(B\`+"QL*A1.KOR^<'30@+B`9PI(;`CH3KKOREA/2H5G(B\*(`8@2R)O
  2738. + M`"QR`&$`^L!![P%,(DMP`&$`^C183V``_?@@+P%`(&\!1$ZZ/AI![P%(0^\!
  2739. + M/&$`^BH@2TZZ0TY@`/W6(&\!.$ZZ0T(@;P`L3KI#.F$`^))![`D"3KHC5BE`
  2740. + M"`AF"$'L"0@I2`@(0>P)#DZZ(T`I0`@<9@8I;`@("!Q![`D83KHC+"E`""!F
  2741. + M"$'L"1XI2`@@0>P)(DZZ(Q8I0`@D9@A![`DH*4@()$'L"3!.NB,`*4`4S&8(
  2742. + M0>P).BE(%,P@+P%,(&\!4")L%,A.NE&^<`!.ND:T3-]L_-[\`2Q.=2`O``1(
  2743. + MYP,`+@!*K!309P0@!V!@?``@!P*````!)&<"?`@(!P`'9P0`1@`%"`<`!&<$
  2744. + M",8``@@'``%G!`C&```(!P`#9P0(Q@`!"`<``&<$",8`!B`'<DG`@7)`L(%F
  2745. + M!`!&`$((!P`)9P0(Q@`%(`8*0``/3-\`P$YU("\`!$CG!@`L`$JL%-!G""`&
  2746. + M`D`/_V!>>@`*1@`/"`8``V<$>DGEC2`&<@7`@5N`9@0(Q0`'"`8``F<$",4`
  2747. + M!`@&``!G!`C%``$@!G)"P(%G!`C%``8(!@`!9P0(Q0`#"`8`!F<$",4```@&
  2748. + M``5G!`C%``D@!4S?`&!.=0``2.<#`$ZZ\7HN`'P`8`HO!DZZ[^)83U*&O(=M
  2749. + M\DS?`,!.=2`O``0O!RX`8=1.NN]63KKV6"!L%+1.NNX4+P=.NL.J6$\N'TYU
  2750. + M("\`!"\'+A]@U```("\`!"(O``@@;P`,44](YP,D+`$N`"I(3KKUU"`'3KKP
  2751. + MV$J`9QHB0"!I`"`O2``4(`8@:0`$(DTD;P`43I)@`G#_3-\DP%!/3G4``)[\
  2752. + M``Q(YR\V*F\`-'X#SJ\`.'P!(&P4L"9H`+@J/````^Q.NO5^2H=G"G`"OH!G
  2753. + M!'(`8`)R`2]!`"AP`;Z`9PA5AV<$<`!@`G`!+T``+"!-0^P)0$ZZ.Z)*@&8&
  2754. + M>/]@``%4</\@;!2P(4``N"(-+&PJ%'3^3J[_K"X`(&P4L"%+`+A*@&9X+&PJ
  2755. + M%$ZN_WQ.NB&,+``@+!&D<BY&`;"!9P1*@&8*?@$J/````^Y@%B`&58!F#`@O
  2756. + M``@`.F<$<`%@`G``+@!*AV<L?``(+P`(`#IG'`@O``\`.F<&>`)@``#6("\`
  2757. + M/$ZZ_88H`&```,AX_V```,(I1BFL</]@``%"0J<L;"H4<@(D#TZN_QQ/[P`$
  2758. + M)$!*@&<,(@<D"DZN_YI*@&86(`IG""0*<@).KO\63KHAYG#_8``!""@J`'0D
  2759. + M"G("3J[_%B('3J[_IG!0Z8C`KP`X#(````4`9@QP$2E`*:QP_V```-I*KP`H
  2760. + M9P8(!``#9@Q*KP`L9Q((!``"9PQP#2E`*:QP_V```+8(+P`)`#IG(B(-)#P`
  2761. + M``/N3J[_XDJ`9P@B`$ZN_]Q@"DZZ(6IP_V```(P(+P`(`#IG!"`%8`8@/```
  2762. + M`^TD`"(-+&PJ%$ZN_^(J`&8(3KHA/G#_8&`(+P`)`#IF!$J&9@0L!&`"?/]^
  2763. + M`$JO`"AG`GX!2J\`+&<$",<``0@O``,`.V<$",<``R\'(`4B!DZZ&SY83RX`
  2764. + M;!QP_R!L%+`A0`"X(@4L;"H43J[_W"!L%+`A2P"X(`=,WVSTWOP`#$YU(&\`
  2765. + M!"\O``PO+P`,+PAA`/VH3^\`#$YU(&\`!$CG.`!P_\`H``-R`!(`</_`*``"
  2766. + M=``4`'#_P"@``78`%@!P_\`0>``8`.&$B(/AA(B"X82(@2`$3-\`'$YU2.<C
  2767. + M-$OL%49![`ED1>P)5"3(0>P):"3(0JP)8$*:?@`L+!5.1^P<D&`\("L`!"(`
  2768. + MY8$@3='K``A#Z`?J1>P)5"6)&`!*@&<&<`$I0`E@2H=G!DJK``1F""`31(`I
  2769. + M0`E<4H?6_``0OH9MP'X`+"P52F`Z<``B!P:!```%V!`U&`!(P.F`($TB``:!
  2770. + M```'4M'U&``&@```!TXD-0@`Y8)#Z`?J1>P)5"6)*`!2A[Z&;<),WRS$3G4@
  2771. + M;P`$(F\`")[\"BA(YSLV+T@`*"])`"P@"&8(3>P);"].`"AP.B!O`"BP$&8$
  2772. + M4J\`*"!O`"AP.DZZ/"I*@&9.<`HB`"!O`"@@"$H89OQ3B)'`THA2@7!!LH!E
  2773. + M!G#_8``"3$'L"7A#[P`Q$MAF_$'O`#%#[`F$3KH\5$'O`#$B;P`H3KH\2$'O
  2774. + M`#$O2``H0J<O+P`L3KK^6E!/+@!2@&8&</]@``(((`=![P!R(CP```G:3KH>
  2775. + M`"P`(`=.NNM$2H!F!G`LO(!D!G#_8``!X$'O`(IA`/XX+@!![P".80#^+BIO
  2776. + M`"PJ@$'O`))A`/X@*T``!$'O`)9A`/X4*T``"$'O`)IA`/X(*T``#"(5:S!T
  2777. + M,K*";BHF+0`(;R1X"K:$;AXH+0`$:Q@,A````7)N$$J`:PRP@FX(MH=G"DJ'
  2778. + M9P9P_V```6K2@>6!("T`""0`U(+4@-2"("T`!"8`Y8/6@-:"UJT`#-:!UH=P
  2779. + M+-:`O(-D!G#_8``!.$?O`)Y\`"1-8!`@2V$`_8@E0``06(M2AEB*O*T`!&WJ
  2780. + M?`!@(!`;(@8&@0``!=@;@!@`<@`2`+*M``AM!G#_8```]E*&O*T`!&W:?`!!
  2781. + M[0=*)$@O2``D8$H@2V$`_3HD@$OK``40*P`$<@`2`"5!``1G"E.!9P9P_V``
  2782. + M`+Q'[0`!$!5R`!(`)4$`"&T**F\`++*M``QO!G#_8```G%*&U/P`$+RM``AM
  2783. + ML'P`8`X@!@:````'ZAN;"`!2AKRM``QM["`&!H````?J0C4(`'P`VOP('F`>
  2784. + M($MA`/R^*H!%ZP`$($IA`/RR*T``!$?J``12AE"-(&\`++R0;=I\`"1O`"0J
  2785. + M;P`L8"A*AV8&0JH`#&`8$!M(@$C`)4``#'(!L(%G"$J`9P1P_V`.4H;4_``0
  2786. + MO*T`"&W2<`!,WVS<WOP**$YU(&\`!%E/+PTJ2&`"4HT0%1]```1G)DB`2,!!
  2787. + M[`_I"#```@@`9A80+P`$<BRP`6<,<BVP`6<&<BNP`6;0(`TJ7UA/3G4@;P`$
  2788. + M(F\`""`O``PB+P`064](YP<4+`$N`"9)*D@@#6<2$!5(@$C`0>P/Z0@P``((
  2789. + M`&8$<`!@2GH`8"(0+P`42(!(P"(%Y8'2A=*!TH`J`7`PFH"ZAF\$<`!@)E*-
  2790. + M$!4?0``49Q!(@$C`0>P/Z0@P``((`&;&NH=L!'``8`0FA2`-3-\HX%A/3G4@
  2791. + M;P`$(F\`"%E/2.<`%"9)0^\`"'``<AAA`/]L*D!*@&8$<`!@:B`O``@B`.F!
  2792. + MDH`@`>F`D('I@":`<#JP%69.0>T``4/O``AP`'([80#_."I`2H!F!'``8#8@
  2793. + M+P`((@#I@9*`Y8'3DW`ZL!5F($'M``%#[P`(<`!R.V$`_PHJ0$J`9@1P`&`(
  2794. + M("\`"-&3(`U,WR@`6$].=2!O``0B;P`(64](YP$4*DDO2``,$!!R+;`!9@A^
  2795. + M`5*O``Q@,$B`2,!![`_I"#```@@`9AAR*R!O``RR&%?`1`!(@$C`+T@`#$J`
  2796. + M9P1^`&`$<`!@'"!O``PB36$`_Q0F0$J`9@1P`&`(2H=G`D25(`M,WRB`6$].
  2797. + M=2!O``0B;P`(GOP`#$CG`"0J22](`!!P2K`09BA"E4/H``%![0`$+T@`#"!)
  2798. + M(F\`#'`!(CP```%M80#^/"]``!!@``"T<$VP$&9\<`(J@$/H``%![0`,+T@`
  2799. + M#"!)(F\`#'`!<@QA`/X0(D!*@&8&<`!@``#`1>D``7`NL!%G!G``8```L$'M
  2800. + M``@B2"!*<`%R!6$`_>0B0$J`9@9P`&```)1%Z0`!<"ZP$6<&<`!@``"$0>T`
  2801. + M!")(($IP`'(&80#]N"]``!!@,!`02(!(P$/L#^D(,0`""`!G&G`!*H!#[0`$
  2802. + M<``B/````6UA`/V,+T``$&`$<`!@/"`O`!!F!'``8#)P+R!O`!"P$&8<0^@`
  2803. + M`4'M`!`O2``,($DB;P`,80#]VB]``!!@""M\```<(``0("\`$$S?)`#>_``,
  2804. + M3G4@+P`$(B\`""!O``PO;P`0``2>_``D2.<_%"I(*@`N`20'=@/$@R]``#@O
  2805. + M00`\2H)F#"`'<F1.NC4<2H%F$B`'<F3EB4ZZ-0Y*@6<$<`!@`G`!+``@%4J`
  2806. + M9PQ3@&=(4X!G9F```7X@+0`$(@!3@20!U(+4@28"Z8.6@B0#Z8*4@^^"+@7>
  2807. + M@B]'`$!*AF<``51R/+"!;0`!3`:'``%1@"]'`$!@``$^("T`!"(`TH'2@"0!
  2808. + MZ8*4@2("Z8&2@N^!VH$O10!`8``!'"@%?@`J+0`,4X4@!M"`T(;I@$?L"8;7
  2809. + MP"]``"!@&B`;(@#2@=*`)`'I@I2!(@+I@9*"[X'8@5*'OH5MXBXO`#PO1``D
  2810. + M(BT`#'0"LH)N!B8'4X-@`B8'(`-R9$ZZ-#`B`-*!2H!J`E:`Y(`O0``L(`,O
  2811. + M00`P<F1.NC04(`%J`E:`Y(!V"=:M``PO0``T(`,O00`H<@Q.NC/V4H$@`>>`
  2812. + MD('0@)"!T(!5@'(*3KHSX$?O`"C0F]"O`#30FY";4H!R!TZZ,\HN`6H"7H<L
  2813. + M+0`$G(=J`EZ&>@$H+0`(8!PN!EZ'(BT`#.6!0>P)@M'O`""^L!@`;`@L!U*%
  2814. + MNH1MX"`&T(#0AB(`Z8&2@"`!Z8"0@>^`(B\`)-*`+T$`0"`O`$#0K0`0T*\`
  2815. + M2$S?*/S>_``D3G4@;P`$(F\`""`O``R>_`!82.<_-BI(+$U'[P`T)L`FR";)
  2816. + M+TX`,$J`9QP@"$H89OQ3B)'`+`@B"-.O`#AP,[*`91Q\,F`880#ZJBP`G(TO
  2817. + M0``X<@.\@6P&</]@``-Z+T8`+"!O`#A*$&8&</]@``-H0^\`=&$`^^8O0``X
  2818. + M9@9P_V```U0F;P`\0>P)[B)+80#WL"X`9P)"DR!O`#A*$&<``KXJ2"](`'QA
  2819. + M`/I((@"2C2]``#@O00!X=@.R@VP&</]@``,4(&\`.!`09R!R++`!9QIR.[`!
  2820. + M9Q1#[P!P80#[?B]``#AF%'#_8``"["`\___Q\-"O`'0O0`!P(&\`.!`0<BRP
  2821. + M`6<(<CNP`68``5A#Z``!($E#[P!<80#[NBI`2H!F!G#_8``"L$7M``%P++`5
  2822. + M9P9P_V```J`@2D/O`$AA`/N4+T``.&8&</]@``**(&\`.$H09P9P_V```GP@
  2823. + M2W`"(4``""%\````B``$("\`<$2`3>@'2BS`<`$LP%*&+,8@+P!T1(!-Z`=:
  2824. + M+,!"GD*>UOP`$$7H!=AZ`"P\```'LB!*+R\`="](`"P@!2(&0>\`8&$`_&8N
  2825. + M`"ZO`'0@!2(&0>\`3&$`_%183R@`2^H``D7K``B^@&\:($L@A'`!(F\`*!*`
  2826. + M)DHA1P`$)$U"*0`!8!@@2R"'(F\`*$(1)DHA1``$)$T3?``!``$@!G(#P(%F
  2827. + M#"`&<F1.NC%$2H%F$B`&<F3EB4ZZ,39*@6<$<`!@`G`!(@#E@4'L">8@,!@`
  2828. + M(@#2@=*`)@'I@Y:!)`/I@I2#[X+:@E*&#(8```?U;P#_0F```1P@;P`X2A!G
  2829. + M!G#_8``!9DJ'9P9P_V```5QX`'P`>@!"KP!$?@`J2V!P2JT'3F<^("\`1"('
  2830. + MZ8$D+P!P!H$```=*)C,8`-:"+T,`1$J&9PJP@V<&</]@``$<1((K0@=*("\`
  2831. + M+%*`*T`'4GP!8"8@!2(O`'0J+0=*VH%*A&<*L(5G!G#_8```[D2!*T$'2D*M
  2832. + M!U)X`5*'VOP`$+ZK``AMBDJ&9P1*A&8&</]@``#(?`!^`"I+*"\`1&`Z<``B
  2833. + M!P:!```%V!`S&`!(P.F`($O1P$/H!THO20!`2H9G"DJI``QF!"`$8`(@!=&M
  2834. + M`!`L*0`$4H=8C;ZK``1MP&`@<`!R`2=!``@G0``$)"\`=$2"3>L'2BS"+,`L
  2835. + MP"]``'@J;P`\+B\`+"`'4H`K0``,+"\`>&<(T(92@"M```QR,["!8P1P_V`P
  2836. + MVOP'ZB`'($TB;P`P3KHQ;"!-T<=+Z``!0A!*AF<0(`8@32)O`'Q.NC%20C5H
  2837. + M`'``3-]L_-[\`%A.=2!O``0O#2I(0>P)2")-80#T4$J`9PQ![`E((DUP`6$`
  2838. + M_`PJ7TYU+PU![`GZ3KH2"BI`2H!F!BI?8```7'`!*4`HHDH59AY"K!5&0JP5
  2839. + M2D*L')!"K!R80>P)2$/L'3`2V&;\8"P@34/L%49A`//T2H!G'G`ZL!5G$"!-
  2840. + M0^P51G``80#[JDJ`9PA![!5&80#_=BI?8`#S#G`!*4`HHD/L%4:1R&$`\[Q*
  2841. + M@&<(0>P51F$`_U1@`/+N(&\`!"`O``@B;P`,GOP`$$CG`Q0J24CO`0$`$"!O
  2842. + M`!0O4``82JPHHF8$80#_1$JL%4IG"B`O`!BPK!56;"!^`$?L%49@$%*'UOP`
  2843. + M$+ZL%4YM!'X`8#)*JP=.9NI@*GX!1^P52BPL%4I@#B`O`!BPJP`0;0A2AUB+
  2844. + MOH9M[D/L%4;3QWX`'BD%U^F'0>P<D-''+PTO2``@(!!![P`<0^P51F$``,(@
  2845. + M;P`@(B@`!"M!`"#E@4'L'3`B;P`@T>D`"$/L"50CB!@`*T@`*%A/3-\HP-[\
  2846. + M`!!.=2!O``1#[!34<`!A`/\J0>P4U"`(3G4@;P`$("\`"")O``Q(YP$4+@`F
  2847. + M22I(2JPHIF8.<`$I0"BF0>P>]&$`_CHO"R`'($U#[![T80``0EA/2H=G!D'L
  2848. + M"@)@!$'L)MXG2``H3-\H@$YU(&\`!$/L%0!P`&&N0>P5`"`(3G4@;P`$("\`
  2849. + M"")O``PO;P`0``2>_``,2.</-"X`)F\`+"I(?`!Z`"@1(`3G@"])`"#3P$7I
  2850. + M"!Y@0"]*`"0@%;"2;38@;P`DL)!F*$J$9@8@*``$;AKGA"(H``0B;P`@!H0`
  2851. + M``@:LK%(`&X$<`!@`G`!*@`L*``$8`93A%&*;+H@%2(\``%1@$ZZ+.PH`"`5
  2852. + M(CP``5&`3KHLWM*'DH8L`6`(!H8``5&`4X1*AFOT8`@$A@`!48!2A`R&``%1
  2853. + M@&SP(`8B/```#A!.NBRL)T``""`&(CP```X03KHLG"`!+T$`''(\3KHLD"=`
  2854. + M``0@+P`<<CQ.NBR")H%*A6<"4I,@!%B`<@=.NBQP)T$`&&P$7JL`&"P\```'
  2855. + MLDJ$:T`@!G(#P(%F#"`&<F1.NBQ,2H%F$B`&<F3EB4ZZ+#Y*@6<$<`!@`G`!
  2856. + M*@`B`.6!1>P)YB`R&`"X@&U`4H:8@&#`4X8@!G(#P(%F#"`&<F1.NBP*2H%F
  2857. + M$B`&<F3EB4ZZ*_Q*@6<$<`!@`G`!*@#E@$'L">;8L`@`2H1KQ@2&```';"=&
  2858. + M`!0G1``<(`70@-"%Z8!%[`F&U<!"JP`08`XB*P`0Y8&8LA@`4JL`$"(K`!#E
  2859. + M@;BR&`!LYE*$)T0`#$*K`"`G1P`D3-\L\-[\``Q.=2!O``0O#2I(("T`&"(`
  2860. + MTH'2@$'L"@;1P2`M`!`B`-*!TH!#[`H;T\$@/```!VS0K0`4+P`O%2\M``0O
  2861. + M+0`(+RT`#"\)+PA(;`I`2&P5+$ZZ,C1/[P`D0>P5+"`(*E].=2!O``0O#6$`
  2862. + M_3@@0"I?8)0@;P`$(F\`""`O``PO!RX`(!&PAVT4(@=.NBL"T9`@$2('3KHJ
  2863. + M^"*!8"I*@&HF4Y#?D6P@(!%$@"('3KHJX"(0DH!3@2"!(!%$@"('3KHJSIZ!
  2864. + M(H<N'TYU(&\`!")O``A(YP$4)DDJ2"XM`!2>JP`49BPN+0`0GJL`$&8B+BT`
  2865. + M#)ZK``QF&"XM``B>JP`(9@XN+0`$GJL`!&8$+A6>DR`'3-\H@$YU(&\`!")O
  2866. + M``@@+P`,+V\`$``$GOP`<$CG/S0N`"IO`)@O20`L0I4O2``H0^\`7'`*(MA1
  2867. + MR/_\("\`7'(^L(%L!$J`:@Y![P!@0^\`7'`\80#_%D'O`&1#[P!@<#QA`/\(
  2868. + M0>\`:$/O`&1P&&$`_OI![P!P0^\`;'`,80#^[&!,("\`<%.O`'`&@```!VLB
  2869. + M`'0#PH)F"G)D3KHIWDJ!9AH@/```!VS0KP!P<F3EB4ZZ*<A*@6<$<`!@`G`!
  2870. + M(@#E@4'L">8@,!@`T:\`:"`O`&AOKBP\```';-RO`'`@!G(#P(%F#"`&<F1.
  2871. + MNBF.2H%F$B`&<F3EB4ZZ*8!*@6<$<`!@`G`!)"\`;.6")@#6@]:`Z8-![`F&
  2872. + MT<,L,"@`("\`:+"&;QI'[P!HG9M2DPR;````#&V>0J\`;%*O`'!@E"`O`%Q"
  2873. + MKP!<>@!R`2]!`(@O0``D4H4@+P"(T(`O0`"(("\`B&[N("\`B&H$<`!@!'`!
  2874. + MZZ`O0`"(2&\`,"\'2&\`D"!O`#A.D$'O`#Q#[P!H80#^+$_O``PH`&<N(`53
  2875. + MA4J`:@9P_V```1!*A6H&4Z\`B&#$<`'KH"P`2H1O!IVO`(A@M-VO`(A@KB`O
  2876. + M`'QK``#$(B\`4+*`9P``ND'Z^>(B;P`LL\AF!D'L%49@!$'L'O1\`"9(+T@`
  2877. + MD&```(@@*P=.L*\`?&9V>@`D;P"08&0@*@=.L*\`?&=4(`7I@"(O`(@@;P"0
  2878. + M!H````=*TK`(`)*K!THO00",2&\`,"\'2&\`E"!O`#A.D$'O`#Q#[P!H80#]
  2879. + M;$_O``Q*@&82("\`4+"O`'QF""]O`(P`B&`F4H74_``0(&\`D+JH``AMDE*&
  2880. + MUOP`$"!O`)"\J``(;0#_<'#_8"0@+P`DT:\`B"\O`"@O!TAO`)`@;P`X3I!P
  2881. + M`2J`3^\`#"`O`(A,WRS\WOP`<$YU(&\`!")O``@@+P`,GOP`#$CG!S0N`"I(
  2882. + M+TD`&`RM`````0`@;P9P`2M``"!(;P`<(`<@36$`_1Y83RP`2J\`'&8&("T`
  2883. + M(&H&(`9@``#&0?KXKB)O`!BSR&8&0>P51F`$0>P>]'P`)D@O2``@8```EB`K
  2884. + M!TZPK0`@9@``A'H`)&\`(&!P("T`("(J!TZR@&=>(`7I@"(5(&\`(`:````'
  2885. + M2M*P"`"2JP=**H%*K0`@5\!$`$B`2,`K0``@2&\`'"`'($TB;P`<80#\C%A/
  2886. + M2J\`'&9`(!60J@=*T*L'2BJ`2JT`(%?`1`!(@$C`*T``(%*%U/P`$"!O`""Z
  2887. + MJ``(;892AM;\`!`@;P`@O*@`"&T`_V)P_TS?+.#>_``,3G4@;P`$+PU#^O?:
  2888. + M<``J7V``_N!*K"BB9@1A`/<L3G4``)[\``Q(UP$#</_>_``,3G513TC7`P!0
  2889. + M3TYU2.<P`B(02B@`#6<$<`!@'"0))@`L;"H43J[_UB(`4H!F"$ZZ"MAP_V`"
  2890. + M(`%,WT`,3G513TCG/S8N`"I))D@L$R]&`"@O2``L2BL`#6<&<`!@``",2BL`
  2891. + M#&=F)DW7QWH`8%@D36`"4HJURV0&<`JP$F;TM\IF!"@*8`9!Z@`!*`B8C2(O
  2892. + M`"@D#28$+&PJ%$ZN_]`L`%*`9@A.N@IB</]@/MJ&MH9F-DOJ``&>AG``3KK<
  2893. + M/$ZZW&Q*@&8B2H=FI&`<(@8D#28'+&PJ%$ZN_]`J`%*`9@A.N@HF</]@`B`%
  2894. + M3-]L_%!/3G593TCG/P(N`"P0+T$`'$HH``UG!'``8%)3@28!(@8D!RQL*A1.
  2895. + MKO^^*@!.KO]\*`!2A6<$2H1G#B`$3KH(X"E`*:QP_V`D(@9T`"8"3J[_OBP`
  2896. + M4H!G!$J$9PX@!$ZZ"+XI0"FL</]@`B`&3-]`_%A/3G6>_`$`2.<_!BX`*D@L
  2897. + M%2HM``@@+0`$9PHB`"QL*A1.KO^F&"T`#4B$2,0@34ZZ)W!*A&<$<`!@1"(&
  2898. + M0>\`("0(+&PJ%'9`Y8M.KOYH*`!*AV8*(@9.KO_<2H!G&DJ$9Q)P_[J`9PPB
  2899. + M`B0%3J[_1DJ`9P1P`&`&3KH)+'#_3-]@_-[\`0!.=2`O``1(YR`"(@`L;"H4
  2900. + M=`!.KO\T3J[_?'0N1@*P@E?!1`%(@4C!(`%,WT`$3G4@+P`$(&\`"")O``R>
  2901. + M_``02.<W%BX`)DDJ2'P`8;A*@&9\(@<L;"H4=`%.KOY62H!G;"('0>P*:"0(
  2902. + M=@1.KO_068!F4B(')#P``"<03J[_-$J`9T(B!T'O`"`D"'803J[_UG()L(%O
  2903. + M+G";L"\`(&8F0>\`)2(()`M.KOS0*@!![P`FT<`B""0-3J[\T%*`9P92A6<"
  2904. + M?`$B!W0`3J[^5B`&3-]H[-[\`!!.=2`O``0B+P`(GOP"$$CG/P8N`'#_+T`"
  2905. + M*"]!`"0B!RQL*A1T`'8!3J[_OB]``"`B!TZN_[XL`$ZN_WPJ`"]``BQF``#"
  2906. + M*"\`)"(')`1V_TZN_CBP@F8``*Z\@FP``)XJ!)J&*`4@!'(!2$$L>``$3J[_
  2907. + M.BI`2H!F:G("2$%.KO\HXH@J``R%```"`&T0(`5R`4A!3J[_.BI`2H!F1GI`
  2908. + MYXU+[P`H,#P!_W(`0>\`*!#!4<C__&`LN(5O!"`%8`(@!"8`3KK:#B(')`TL
  2909. + M;"H43J[_T+"#9PI.KO]\+T`"+&`&F(-*A&[00>\`*+'-9PPB32`%+'@`!$ZN
  2910. + M_RXJ+P(L9@1"KP(H+"\`(+RO`"1L#B(')`8L;"H4=O].KO^^+"\"*&<*(`5.
  2911. + MN@8F*4`IK"`&3-]@_-[\`A!.=9[\`0A(YS<6+@`F22I(+!5*+0`-9@`!&"`'
  2912. + M!(````0`9R`$@```!`!G2E.`9UA3@&=<4X!G7E.`9V93@&=L8```[DHM``QG
  2913. + M)B`&0>\!)$/O`2!A`/W62H!G%"`O`20W0``"("\!(#:`<`!@``#*<!E@``"^
  2914. + M(@8L;"H43J[_*":`<`!@``"R)H9P`&```*IP`&```*0@!B(380#^-F```)@K
  2915. + M4P`(<`!@``".*A-*K0`$9@XB%2QL*A1.KOZ,*T``!"`M``1G8B0`(@4L;"H4
  2916. + M3J[^7$J`9E(B!D'O`"`D"'9`Y8M.KOYH2H!G/B(%3J[_IB(M``1.KO^F(@9.
  2917. + MKO_<(@)T`$ZN_T8;?``!``TJ@BM"``1![P`@(@@L;"H43J[_N$J`9P0@`F`.
  2918. + M3KH%Y&`&<!8I0"FL</],WVCLWOP!"$YU("\`!"(O``@O;P`,``1(YP\&*B\`
  2919. + M'"P!+@!P#DZZ)18J0$J`9@IP#"E`*:QP_V!.0]4BQT*9(L9"+0`-(@<L;"H4
  2920. + M3J[_*!M```Q(>OYT2'K[VDAZ^V1(>OJL2'KZ=DAZ^F@@!2!-0_KZ4$ZZT=Q/
  2921. + M[P`8*`!L!B!-3KHC3B`$3-]@\$YU("\`!"(O``@O;P`,``0O;P`0``@O;P`4
  2922. + M``PO;P`8`!!(YPT`*"\`%"HO`!`N`'``2H%F!'!`Y8@`0``!+P`@!W+_80#_
  2923. + M1EA/2H!F0'``2H1F!'!`Y8@`0``"+P`@!7+_80#_*%A/4X!F(G``2J\`'&8$
  2924. + M<$#EB`!```(O`"`O`!QR_V$`_P983U6`9Q!![`IN+T@`$$S?`+!.^L[@3-\`
  2925. + ML$YU```@;P`$(F\`""]O``P`!"`O`!`O;P`4``A(YP<T+@`D;P`@)DDJ2"PK
  2926. + M`'0DKP`<0JH`$G`!-4``#D)J`!`E?````@``,C5```PE:P"``#8@*P!\9A`B
  2927. + M*P`$;PHE?```"```%F`$)4``%B53``1!ZP"$3KK2?B5``"(E0``:)4``*B`K
  2928. + M``1:@&<^58!G4%F`9T!5@&9F(`UG'$AX`/](;"BL+PU.NM+`3^\`#"H`;P8E
  2929. + M10`68`@E?````0``%B5\``"@```(8$HE?```$```"&!`)7P``$````A\`&`T
  2930. + M2I-F$$HK``AF"B5\```@```(8"`E?```@```"&`6("L`!&\&<$#AB&`&(#P`
  2931. + M`(``)4``"$J'9P)\`"`&3KK?7(&J``A,WRS@3G4@;P`$(F\`"%E/2.<C%BI(
  2932. + M?@`O20`80J<L;"H4<@(D#TZN_QQ/[P`$)D!*@&=0(@UT_DZN_ZPN`&=$(@<D
  2933. + M"TZN_YI*@&<X(@=.KO\N2H!7QD0&2(9(QDJ`9P8B`$ZN_Z8@!^6`+R\`&"!`
  2934. + M+R@`#")"(`8@36$`_GQ03WP`8`Y\_TZN_WQ.N@(`*4`IK$J'9P8B!TZN_Z8@
  2935. + M"V<()`MR`DZN_Q8@!DS?:,183TYU```@+P`$64\O!RX`3KK54DAO``1(>`@`
  2936. + M+P=.NM]63^\`#$J`9P1P`&`$("\`!"X?6$].=0``("\`!"!O``@B+P`,64](
  2937. + MYP,T+`$N`"I(3KK5$"`'3KK0%"9`2H!G1`@K``$``V<V""L``P`#9Q8@:P`8
  2938. + M+T@`%"!K``1P`'("(F\`%$Z1(&L`%"](`!0@!B!K``0B321O`!1.DF`(<`TI
  2939. + M0"FL</],WRS`6$].=2`O``0@;P`((B\`#$CG`P1,WR#`8(`@;P`$44\O#2I(
  2940. + M0>\`!$ZZS]A*@&H$</]@#B`-9P8@+P`$*H`@+P`$*E]03TYU```@;P`$GOP`
  2941. + M0$CG.Q8J2$ZZU%X@#6=22A5G3B(-0>\`("0(+&PJ%'9`>`!.KOQV+@!M-DZN
  2942. + M_WPL`%*`3KHA#"9`2H!G)+Z&9Q0F!E*#(@TD"TZN_'9*@&\0(`)@#B!"(DL2
  2943. + MV&;\(`M@`G``3-]HW-[\`$!.=2`O``0@;P`((B\`#%E/2.<#-"P!+@`J2$ZZ
  2944. + MT^`@!TZZSN0F0$J`9R8(*P````-G&"!K`!`O2``4(`8@:P`$(DTD;P`43I)@
  2945. + M"'`-*4`IK'#_3-\LP%A/3G4@+P`$(&\`""(O``Q(YP,$3-\@P&">```@+P`$
  2946. + M*4`1I$J`9P``AG)GD(%G``""58!G``"`<@F0@6=\4X!G>%.`9W13@&=P4X!G
  2947. + M;%.`9VA3@&=H4X!G:')1D(%G9E.`9V93@&=F4X!G9E.`9V93@&=F58!G9E.`
  2948. + M9V93@&=F4X!G9E6`9V93@&=F4X!G9E.`9V93@&=F4X!G9E6`9V93@&=F4X!G
  2949. + M9E.`9V9@:'``8&9P#&!B<`M@7G`68%IP!V!6<`A@4G`08$YP$6!*<`)@1G`"
  2950. + M8$)P%F`^<`=@.G`68#9P)&`R<!9@+G`68"IP'F`F<!)@(G`E8!YP)F`:<!-@
  2951. + M%G`68!)P'&`.<`U@"G`-8`9P#6`"</].=2\.+&PJ%$ZN_WQA`/[Z*4`IK"Q?
  2952. + M3G4@;P`$2.<`!BI((DTL>``$3J[_!"!-3-]@`$[Z'<@@+P`$2.<!!"X`*FPI
  2953. + MN&`.("T`#+"'9@0@#6`(*E5*E6;N<`!,WR"`3G5(YR`"0>PIN$ZZ*[(@+!2P
  2954. + M(BP4O"0`LX("@@!___\I0BFT4H(I0BFP+P$O`$AL#@!(;"G$3KK"PD_O`!`L
  2955. + M>``$3J[]9BE`*>AG$$'L*<1P`$ZZ*\8I0"GD9@I(;`X.3KK)<EA/3-]`!$YU
  2956. + M2.<`!B`L*>AG"B!`+'@`!$ZN_6!*K"GD9S@L>``$3J[_?&`,(DUP'"QX``1.
  2957. + MKO\N(&PIY"QX``1.KOZ,*D!*@&;B(&PIY$ZZ*QXL>``$3J[_=DS?8`!.=0``
  2958. + M(&\`!"`O``@B+P`,(F\`$"]O`!0`!"]O`!@`"%E/2.</-B@O`"PJ+P`H+`$N
  2959. + M`"I)+T@`("QX``1.KOUF)D!*@&<P($L@!$ZN_7(D0$J`9R(@#6<()4T`*"5%
  2960. + M`"0@;P`@(`<B2B(&3J[^1$H`9@0@"F`6(`IG!B!*3J[];"`+9P8@2TZZ*HAP
  2961. + M`$S?;/!83TYU(&\`!$CG``8J2"`-9Q@B32QX``1.KOX^(&T`#DZZ*EX@34ZN
  2962. + M_6Q,WV``3G4@#Y!\`!RPK!&@90`:<)[\`!!(YR<4+B\`-"IO`#`O;P`L`"0O
  2963. + M30`@8``%C@@'``1G,A`O`!E(@$C`1^P/Z=?`"!,``&<>"!,``&<.$"\`&4B`
  2964. + M2,!R(-"!8!(0+P`92(!(P&`($"\`&4B`2,`L`!`&2(!(P'(JD(%G``$(<A60
  2965. + M@6<0<AR0@6<``EA3@&=*8``$TB!O`"`0$&<`!4X(!P``9PH0$'(OL`%G``4^
  2966. + M"`<``F<`!0)P+K`09@`$^K'-9P`%*`@'``!G``3L<"^P*/__9@`$XF``!1((
  2967. + M!P`!9DP@;P`D$!@?0``8+T@`)`@'``1G+DB`2,!'[`_IU\`($P``9QX($P``
  2968. + M9PX0+P`82(!(P'(@T(%@$A`O`!A(@$C`8`@0+P`82(!(P"P`"`<`!&<X(&\`
  2969. + M(!`02(!(P$?L#^G7P`@3``!G(@@3``!G$"!O`"`0$$B`2,!R(-"!8!8@;P`@
  2970. + M$!!(@$C`8`H@;P`@$!!(@$C`$@9(@4C!L(%G``0X8``$:`@'``)G('`N(&\`
  2971. + M(+`09A:QS6<`!%((!P``9PIP+[`H__]G``1"(&\`)!P88"X(!P``9PX@;P`@
  2972. + M$!!R+[`!9P`$)G`_O`!F"B!O`"!*$&<`!!8@;P`D'!A2KP`@+T@`)'`_O`!G
  2973. + MR'`JO`!GPDH&9@9P`&```_0(!P`!9@YP7+P`9@@@;P`D$!!@`A`&2(!(P!]`
  2974. + M`!@(!P`$9RY(@$C`2^P/Z=O`"!4``&<>"!4``&<.$"\`&$B`2,!R(-"!8!(0
  2975. + M+P`82(!(P&`($"\`&$B`2,`J;P`D4XT?0``88'9P6[P`9TP(!P`$9S`@;P`@
  2976. + M$!!(@$C`1^P/Z=?`"!,``&<:"!,``&<,$!!(@$C`<B#0@6`2$!!(@$C`8`H@
  2977. + M;P`@$!!(@$C`$B\`&$B!2,&P@68@(`<"0/_[+P`O+P`D+PUA`/U`3^\`#$J`
  2978. + M9@9P`&```QQ2KP`@(&\`($H09H)@``,*(&\`(!`09P`#``@'``)G''`NL!!F
  2979. + M%K'-9P`"[@@'``!G"G`OL"C__V<``MX@;P`D$!!R(;`!9PIR7K`!9P1P`&`"
  2980. + M<`$J`&<$4J\`)"!O`"0<&"](`"0?1@`?"`<``684<%R\`&8.(&\`)!(8'T$`
  2981. + M'R](`"0(!P`$9S(0+P`?2(!(P$?L#^G7P`@3``!G'@@3``!G#A`O`!](@$C`
  2982. + M<B#0@6`2$"\`'TB`2,!@"!`O`!](@$C`'T``&A]``!Y*!F<``D@@;P`D$!@?
  2983. + M0``8+T@`)`@'``1G+DB`2,!'[`_IU\`($P``9QX($P``9PX0+P`82(!(P'(@
  2984. + MT(%@$A`O`!A(@$C`8`@0+P`82(!(P"P`"`<``&<(<"^\`&<``>YP+;P`9GAP
  2985. + M7;`09W(2&!]!`!XO2``D"`<``680=%RR`F8*%!@?0@`>+T@`)!(O`!YG``&Z
  2986. + M"`<`!&<N2(%(P4?L#^G7P0@3``!G'@@3``!G#A`O`!Y(@$C`<B#0@6`2$"\`
  2987. + M'DB`2,!@"!`O`!Y(@$C`(&\`)!P8'T``'B](`"0(!P`$9S@@;P`@$!!(@$C`
  2988. + M1^P/Z=?`"!,``&<B"!,``&<0(F\`(!`12(!(P'(@T(%@%B)O`"`0$4B`2,!@
  2989. + M"B!O`"`0$$B`2,`2+P`:2(%(P;"!;50(!P`$9S@@;P`@$!!(@$C`1^P/Z=?`
  2990. + M"!,``&<B"!,``&<0(&\`(!`02(!(P'(@T(%@%B!O`"`0$$B`2,!@"B!O`"`0
  2991. + M$$B`2,`2+P`>2(%(P;"!;S)P7;P`9@#^#DJ%9@``AF```+9*!F<``+`@;P`D
  2992. + M'!@O2``D"`<``68*<%R\`&8$4J\`)'!=O`!FVDJ%9U9@``"("`<`!&<X(&\`
  2993. + M(!`02(!(P$?L#^G7P`@3``!G(@@3``!G$"!O`"`0$$B`2,!R(-"!8!8@;P`@
  2994. + M$!!(@$C`8`H@;P`@$!!(@$C`$@9(@4C!LH!F-%*O`"`@;P`D$!@?0``9+T@`
  2995. + M)$H`9@#Z8B!O`"`0$&8$<`!@$@@'``-G"G`OL!!F!'``8`)P`4S?*.3>_``0
  2996. + M3G4@#U%`L*P1H&4`%'XO#2IO``@@34H89OQ3B)'-(`A2@"\`3KH`$")`$MUF
  2997. + M_%A/*E].=0``(`^0?``,L*P1H&4`%$@O#2`O``@O`$ZZ%T183RI`2H!F$DAL
  2998. + M#AA"ITAX``).N@R^3^\`#"`-*E].=2`/D'P`#+"L$:!E`!0.2.<!%"XO`!0F
  2999. + M;P`0(`MF"B]'`!!,WRB`8)Y*AV8,+PM.NA6&6$]P`&`D+P<O"TZZ%/!03R9`
  3000. + M2H!F$DAL#C)"ITAX``).N@Q>3^\`#"`+3-\H@$YU(`^0?``@L*P1H&4`$ZR>
  3001. + M_``42.<!%#XO`"8J;"GL8!`P%;!'9@8@+0`"8&(J;0`&(`UF['``,`<O`$ZZ
  3002. + MQ;0J0$AX``I.NO\>4$\F0"!`,(<@#68@<``P!R\`2&P.3$AO`!1.NAE82&\`
  3003. + M&$ZZ_L1/[P`08`@O%4ZZ_KA83R=```(G;"GL``8I2RGL("L``DS?*(#>_``4
  3004. + M3G4@#U%`L*P1H&4`$Q9(YP`T*F\`$"9L*>Q@("!K``(0$+`59A(B31`8L!EF
  3005. + M"DH`9O9F!"`+8&XF:P`&(`MFW"9L*?!@'"!K``(0$+`59@XB31`8L!EF!DH`
  3006. + M9O9G1B9K``8@"V;@+PU.NL4")D!(>``*3KK^6B1`+HU.NOX>4$\E0``"(`MG
  3007. + M$C2K``A+["GL)54`!BJ*(!U@#"5L*?``!BE**?!P`$S?+`!.=2`/D'P`(+"L
  3008. + M$:!E`!)JGOP`%$CG`10^+P`F*FPI]&`0,!6P1V8&("T``F!B*FT`!B`-9NQP
  3009. + M`#`'+P!.NL7V*D!(>``*3KK]W%!/)D`@0#"'(`UF('``,`<O`$AL#E!(;P`4
  3010. + M3KH8%DAO`!A.NOV"3^\`$&`(+Q5.NOUV6$\G0``")VPI]``&*4LI]"`K``),
  3011. + MWRB`WOP`%$YU(`]10+"L$:!E`!'42.<`-"IO`!`F;"GT8"`@:P`"$!"P%682
  3012. + M(DT0&+`99@I*`&;V9@0@"V!N)FL`!B`+9MPF;"GX8!P@:P`"$!"P%68.(DT0
  3013. + M&+`99@9*`&;V9T8F:P`&(`MFX"\-3KK%1"9`2'@`"DZZ_1@D0"Z-3KK\W%!/
  3014. + M)4```B`+9Q(TJP`(2^PI]"55``8JBB`=8`PE;"GX``8I2BGX<`!,WRP`3G4@
  3015. + M#Y!\`!BPK!&@90`1*"`O``0@;P`,(F\`"$*G+R\`&"\O`!@O""\)+P!.N@$Z
  3016. + M3^\`&$YU(`^0?``8L*P1H&4`$/0@+P`$(&\`#")O``A(>``!+R\`&"\O`!@O
  3017. + M""\)+P!.N@$$3^\`&$YU``"_[!&@90`0PDCG`00N+P`0*F\`#&`0$!5(@$C`
  3018. + ML(=F!"`-8`A2C4H59NQP`$S?((!.=;_L$:!E`!"02.<#%"XO`!PF;P`8*F\`
  3019. + M%'P`8`@7M6@`:`!2AKR';?1,WRC`3G4@#Y!\``RPK!&@90`07$CG`10J;P`0
  3020. + M+BPJ")ZL*@3EAR\'3KK#?B9`(BPJ!.6!($W1P2Z'+P`O"&&8("PJ""(`Y8$@
  3021. + M3='!(BPJ!.6!(DW3P2(L#EB2@.6!+H$O"2\(80#_<B(L*@32K`Y8DJPJ".6!
  3022. + MV\$NAR\-+PMA`/]8("P.6$OL*@0B'=*`DI5/[P`<*L`I02H$3-\H@$YU(`^0
  3023. + M?``DL*P1H&4`#\*>_``02.<_-"IO`$@D;P!$0JP.5$JL#EAF5'`!*4`.6$*L
  3024. + M*?PI0"H$*4`J""!O`$`2$'0ML@)F#'0"*4(J`%*O`$!@*G0KL@)F"D*L*@!2
  3025. + MKP!`8!I(;`YD3KH4QEA/2H!G!D*L*@!@!G`!*4`J`"XO`#A*K"G\9PH@;"G\
  3026. + M2A!F``$P<`&PK"H`9EP@+"H((BPJ!+*`9Q*PK`Y89PPO+P`\80#^MEA/8`PB
  3027. + M+`Y8L(%G!"E!*@0B+`Y8Y8$F;P`\U\%@!E*L#EA8BR`L#EBPAVP.(E-P+;`1
  3028. + M9NI**0`!9^0@+`Y8*4`J""`L#EB^@&=0Y8!(;`YT(&\`0"\P"`!.N@].4$]*
  3029. + M@&8X4JP.6"`L*@@B+"H$LH!G$K"L#EAG#"\O`#QA`/XV6$]@#+*`9@@@+`Y8
  3030. + M*4`J!"`'*4`.6"E`*@@@+`Y8L(=F%B`L*@0B+"H(LH!G!"E`#EAP_V``!$0B
  3031. + M+`Y8Y8$@;P`\)G`8`!03=BVT`V8*(G`8`$HI``%F'$JL*@!F!G#_8``$&%*L
  3032. + M#E@I<!@`#E1P`6``!`A2BR`*9PBV$V8$<`%@`G``(DO3P"E)*?P@"F<``L8B
  3033. + M+`Y8Y8$@;P`\('`8`'`ML!!F``*PL"@``6<(2J\`3&<``J(F;"G\0J\`+'P`
  3034. + M0J\`*&`"4HL0$V<&<CVP`6;T+TH`,'H`8&(@"Y"L*?PO`"\L*?P@;P`X+Q!.
  3035. + MN@X*3^\`#$J`9CPN"YZL*?P@;P`P+Q!.N@VF6$^^@&82(&\`,"@%<`$O0``L
  3036. + M+T@`*&`D2J\`*&8,(&\`,"@%+T@`*&`"?`%P$-&O`#!2A2!O`#!*D&:62H9G
  3037. + M1$JO`"QF/DJL#EQG("(L#ECE@2!O`#PO,!@`+Q!(;`YX2&P1-$ZZ$Z!/[P`0
  3038. + M+RPI_$ZZ#3+1K"G\4JP.6%A/<#]@``+P+B\`.$JO`"AG``$F4JP.6$H39W@@
  3039. + M;P`H2J@`!&<,0^L``2E)#E1@``#02JP.7&=((BP.6.6!(F\`/"1Q&/QP+;`J
  3040. + M``%F%B\0+Q%(;`Z62&P1-$ZZ$RY/[P`08!P0$DB`2,`O$"\`+Q%(;`[$2&P1
  3041. + M-$ZZ$Q!/[P`4+RPI_$ZZ#*+1K"G\6$]P/V```F1P`2!O`"BPJ``$9F`B+`Y8
  3042. + MLH=L$E*L#ECE@2!O`#PI<!@`#E1@1DJL#EQG'.6!(&\`/"\P&/PO$$AL#O)(
  3043. + M;!$T3KH2M$_O`!`O+"G\3KH,1EA/T:PI_'`Z(&\`0+`09@9P.F```?YP/V``
  3044. + M`?@O+"G\3KH,(EA/T:PI_"`-9P(JA"!O`"@@*``(9PXB*``,($`@@7``8``!
  3045. + MS"!O`"@@*``,8``!P$JO`$QG,"(L#ECE@2!O`#P@<!@`<"VP*``!9QH@;"G\
  3046. + M$!!(@$C`+P`O+P!$80#ZZE!/2H!F9$JL#EQG3"(L#ECE@2!O`#PD<!@`<"VP
  3047. + M*@`!9A@O+"G\+Q!(;`\82&P1-$ZZ$?!/[P`08!X0$DB`2,`O+"G\+P`O$$AL
  3048. + M#SA(;!$T3KH1T$_O`!1![`]84JP.6"E(*?QP/V```29+["G\(%40&"J('T``
  3049. + M)TB`2,`O`"\O`$0JR&$`^F)03R1`(&PI_$H09@12K`Y8(`IG"A`O`"=R.K`!
  3050. + M9CA*K`Y<9R`0+P`G2(!(P"\`(&\`0"\02&P/6DAL$31.NA%<3^\`$!`O`"=(
  3051. + M@$C`*4`.8'`_8```LG`ZL"H``68``*"P*@`"9AX@;"G\$!!G"BE(#E12K`Y8
  3052. + M8`1"K`Y4D\DI22G\8'H@;"G\2A!G"BE(#E12K`Y88&0@+`Y8L(=F2DJL#EQG
  3053. + M(!`O`"=(@$C`+P`@;P!`+Q!(;`]T2&P1-$ZZ$-Q/[P`0$"\`)TB`2,`I0`Y@
  3054. + M<#H@;P!`L!!F!A]``"=@&G`_'T``)V`24JP.6"(`Y8$@;P`\*7`8``Y40JPI
  3055. + M_!`O`"=(@$C`3-\L_-[\`!!.=2`/D'P`&+"L$:!E``H,("\`!"!O``PB;P`(
  3056. + M0J="IT*G+P@O"2\`80#Z(D_O`!A.=2`/44"PK!&@90`)WDCG`!0@;P`0(F\`
  3057. + M#"`I``@O0``,+T@`$$S?*`!@```"(`]10+"L$:!E``FR2.<!!#XO``XJ;P`0
  3058. + M<``P!R\`80``[%A/&H!*K!309P``B@@'``=G!'!H8`)P+1M```$(!P`&9P1P
  3059. + M<V`"<"T;0``""`<`!6<$<'!@`G`M&T```P@'``1G!'!A8`)P+1M```0(!P`#
  3060. + M9P1P+6`"<'(;0``%"`<``F<$<"U@`G!W&T``!@@'``%G!'`M8`)P91M```<(
  3061. + M!P``9P1P+6`"<&0;0``(&WP`(``)8%`P!P)``<!R`#(`2&T``2\!80``KC`'
  3062. + M`D``.$C`YX!![0`$+H@O`&$``)@P!P)```=(P.V`0>T`!RZ(+P!A``""<``P
  3063. + M!RZ-+P!A``"^3^\`%$S?((!.=;_L$:!E``BJ("\`!`*```#P``R```!@`&8$
  3064. + M<&)@2@R````@`&8$<&-@/@R```!``&8$<&1@,@R```"``&8$<"U@)@R````0
  3065. + M`&8$<'!@&@R```"@`&8$<&Q@#@R```#``&8$<'-@`G`_3G6_[!&@90`(0$CG
  3066. + M`00^+P`.*F\`$`@'``AG!'!R8`)P+1J`"`<`!V<$<'=@`G`M&T```0@'``9G
  3067. + M!'!X8`)P+1M```),WR"`3G6_[!&@90`'^$CG`00^+P`.*F\`$`@'``MG$G!X
  3068. + ML"T``V<$<E-@`G)S&T$``P@'``IG%G!XL"T`!F<(&WP`4P`&8`8;?`!S``8(
  3069. + M!P`)9Q9P>+`M``EG"!M\`%0`"6`&&WP`=``)3-\@@$YUO^P1H&4`!XXO!RXO
  3070. + M``AO$KZL#?IN#.6'0>P-7B`P>`!@!D'L#YP@""X?3G4@#Y!\`"BPK!&@90`'
  3071. + M7$CG`Q0L+P`8+B\`%"9O`"`J;P`<+RP1[$AL#[)(;!$T3KH-JBZO`$@O+P!$
  3072. + M+R\`1"\O`$0O+P!$+R\`1"\O`$0O"R\-2&P1-$ZZ#8)/[P`P2H9G&"\&80#_
  3073. + M;BZ`2&P/N$AL$31.N@UF3^\`#`@L``$13V="4JP10"`L$4"PK!%(;B`@;!$X
  3074. + M4JP1.!"\``H(+``&$4]G+DAL$31.NA#R6$]@(E.L$4!(;!$T2'@`"DZZ#BY0
  3075. + M3V`.2&P1-$AX``I.N@X>4$](;!$T3KH0Q%A/2H=G""\'3KH,(%A/3-\HP$YU
  3076. + M```@#Y!\``RPK!&@90`&;$CG#Q0J;P`<?O]\`"\-3KH&:EA/*@!X`"9O`"!@
  3077. + M,B\%+PTO$TZZ!J!/[P`,2H!F'"\33KH&1EA/L(5F!"`$8!X@!U*`9@0N!&`"
  3078. + M?`%2A%B+2I-FRDJ&9P1P_F`"(`=,WRCP3G4@#Y!\`!"PK!&@90`%^DCG`10N
  3079. + M+P`8)F\`%"IO`!`O+!'L2&P/P$AL$31.N@Q,3^\`#%*'9@Y(;`_&2&P1-$ZZ
  3080. + M##A@#$AL#\Y(;!$T3KH,*E!/+PLO#4AL#]A(;!$T3KH,&$_O`!!,WRB`3G4`
  3081. + M`%E/0?D`````+HAG""!Y_____$Z06$].=5E/0?D`````+HAG""!Y_____$Z0
  3082. + M6$].=4CG`P0J;P`0($U*&&;\4XB1S2X(8`H@!D'L$1).N@S6?``<'4J&9NY!
  3083. + M[!$23KH/<B`'3-\@P$YUGOP`$$CG!Q1^`$OO`"Q@``":<"6P+P`49@``@"!O
  3084. + M`"A2KP`H$!!R`!(`'T``%7!DDH!G.G`,DH!G#E>!9P9;@6<&8$0F76`T+!U'
  3085. + M[P`>>@<@!G(/P(%!^@!XT<`6D%.+Z(93A4J%:NA"+P`?8`H@'4'O`!=.N@(:
  3086. + M1^\`%R\+3KK_2%A/WH!@(E*'<``0+P`50>P1$DZZ#"9@$%*'<``0+P`40>P1
  3087. + M$DZZ#!0@;P`H4J\`*!`0'T``%&8`_UA![!$23KH.IB`'3-\HX-[\`!!.=3`Q
  3088. + M,C,T-38W.#E!0D-$148`````2.<#%RIL*@Q@%"95<!30K0`$(DTL>``$3J[_
  3089. + M+BI+(`UFZ$*L*@Q@3"IL*AAPG-"L$:`F0"`M``0I0"H8*6T`"!&@+BT`&$J`
  3090. + M9AX@;!'$#&@`)``491(@3RP(0>T`#"QX``1.KOTD+D8B2R`'+'@`!$ZN_RY*
  3091. + MK"H89JY,W^C`3G4@;P`$(F\`""!0(E$0&+`99@1*`&;VD"%(@$C`3G4@;P`$
  3092. + M("\`"$/Z_^!R!$[Z""H@;P`$(F\`""`O``Q*@&\*$A`0T1+!4X!F]DYU(&\`
  3093. + M!")O``AP`'(`$!@2&0P``&%M"@P``'IN!`0``"`,`0!A;0H,`0!Z;@0$`0`@
  3094. + MD(%F!$H!9M1.=0``("\`""!O``1.5?_T(D]R"DZZ`G`&00`P$L%*@&;P(`D0
  3095. + MX;_)9OI"$)"/3EU.=0``("\`""!O``1.5?_T(D\B``)!``<&00`P$L'FB&;P
  3096. + M(`D0X;_)9OI"$)"/3EU.=0``,#$R,S0U-C<X.6%B8V1E9B`O``@@;P`$44\B
  3097. + M3S(``D$`#Q+[$-SHB&;R(`D0X;_)9OI"$)")4$].=0``("\`""!O``0O"$J`
  3098. + M3E7_]")/;`80_``M1(!R"DZZ`<@&00`P$L%*@&;P$.&_R6;Z0A`@"$Y=D)].
  3099. + M=0``(&\`!")O``A(YS`@)$AR`"`!)@$,$``K9P@,$``M9@1V`5)($!@$```P
  3100. + M;1H,```);A0D`>6!TH+2@4H#9@32@&#BDH!@WB*!(`B0BE.`3-\$#$YU(&\`
  3101. + M!"\-*D@(+0`#`!MF,"`L$5A.N@4.*T``!"M``!!F"G`,*4`IK'#_8!8K;!%8
  3102. + M`!1P\\&M`!A"K0`,0JT`"'``*E].=0``(&\`!$CG(!0J2"9-8"!P`!`30>P/
  3103. + MZ0@P``$(`&<*<@`2`'0@DH)@!'(`$@`6P4H39MP@#4S?*`1.=0``GOP`4$CG
  3104. + M,39#^@"$<``L>``$3J[]V"I`2H!F!G`43KK!BGX`(&P1T!XH__\@!T/O`!Q@
  3105. + M`A+84X!D^D(W>!Q![P`<*4@1:$/L$7!'[!&$+$V1R)7*<``B`'1]U()V*$ZN
  3106. + M_J1P%$ZZP41,WVR,WOP`4$YU*BH@4W1A8VL@3W9E<F9L;W<@*BH``$58250`
  3107. + M`&EN='5I=&EO;BYL:6)R87)Y`$J`:@``'D2`2H%J```,1(%A```@1(%.=6$`
  3108. + M`!A$@$2!3G5*@6H```Q$@6$```9$@$YU+P)(030!9@``(DA`2$%(0C0`9P``
  3109. + M!H3!,`)(0#0`A,$P`DA",@(D'TYU+P-V$`Q!`(!D```&X9E10PQ!"`!D```&
  3110. + MZ9E90PQ!(`!D```&Y9E50TI!:P``!N.94T,T`.:H2$)"0N:J2$.`P38`,`(T
  3111. + M`TA!Q,&0@F0```930]"!<@`R`TA#Y[A(0,%!)A\D'TYU``!(YW``)`!G($J!
  3112. + M9@1"@&`8)@#&P4A"Q,%(0D)"UH)(0<#!2$!"0-"#3-\`#DYU```@+!',!$`!
  3113. + M]"Y`3OK^8```(&\`!"`(2AAF_%-(D<`@"$YU```@;P`$("\`"")\`````$H0
  3114. + M9PJP&&;X0^C__V#R(`E.=2!O``0@+P`(L!!G"$H89OAP`$YU(`A.=2!O``0B
  3115. + M;P`(("\`#$J`9Q!3@!(8LAEF#$H!9P13@&KR<`!.=6X$</].=7`!3G4``"!O
  3116. + M``0B;P`($ABR&68(2@%F]G``3G5N!'#_3G5P`4YU(F\`""!O``0@"$H89OQ3
  3117. + MB!#99OQ.=0``(F\`""!O``0@+P`,(@A@!!#99PA3@&3X8`9"&%.`9/H@`4YU
  3118. + M(F\`""!O``0@+P`,(@A*@&\6L<EE#-/`T<`1(5.`9OI@!A#94X!F^B`!3G4@
  3119. + M;P`$("\`"$CG`Q0N`"I(9A(@#68$<`!@:"!-3KH`;G``8%X@#68*(`=,WRC`
  3120. + M3OH!R"9-58LP/'__P%-(P.6`+``($P`/9PP,:X``__YF!"PK__(@!TZZ`:`F
  3121. + M0$J`9@1P`&`>O(=C!"`'8`(@!B!-(DM@`A+84X!D^B!-3KH`#B`+3-\HP$YU
  3122. + M(&\`!"`(9@).=5F`2.<\,B(L*@QF#BE\````%BFL3-],/$YU(D&P@6\2)`'4
  3123. + MJ0`$!H(````4L()L`F`((BD``&?48.`F`0:#````$+"#;<9G$B1#0H(T*@`"
  3124. + M:[KEBM:"6(-@Z"1`-"H``&JJ"*H`!P``0H,V*@`"`D-__^6+2FH``FM`1_(X
  3125. + M!$IK``!K-D*$."L``@)$?__EC-B#6(3DC%B#2FL``FH$`$2``#5$``)K$BH$
  3126. + MY8PT,D@$`D*``(I"-85(!$*$."H``&=,Y8Q$A$?R2/Q*:P``:SY"A#@K``+E
  3127. + MC$*%.BH``@)%?__EC=B%6(18@^2,2FH``FH$`$2``#=$``)K$BH$Y8PT,T@$
  3128. + M`D*``(I"-X5(!->I``@F*0`$MJP/Y&X,MJD`"&8Z2JD``&<T("PJ#"!`LH!F
  3129. + M#"EI```J#&`0(&@``+*H``!F]B%I`````"`I``0&@````!0L>``$3J[_+DS?
  3130. + M3#Q.=2`O``1*@&8,*7P````6*:QP`$YU2.<^,E:``H#____\#(```?_\;@``
  3131. + MN+"L#^1N``"P)BPJ#&<``*@B0["I``AN,B(L*A"RJ0`,9BA%Z0`02E)K$$*$
  3132. + M."H``@)$?__EC+"$;QI"A#@J``)K".6,1?)(!&#<)BD``&=F(D-@O@CJ``<`
  3133. + M`$?R"`1"A;"$9SPL!)R`689F!"`$8##DCDIJ``)J!`!&@``J`.2--T8``C=%
  3134. + M```U10`">@1*1FL.-#)(!`)"@`",0C6&2`0F*0`(EH"6A2-#``@@"EB`3-],
  3135. + M?$YU*@"PK`_D:@0@+`_D*``&@````!0B+"H0+'@`!$ZN_SI*@&8**7P````,
  3136. + M*:Q@S")`1>D`$"-L*@P``"E)*@PC1``$(VPJ$``,)@26A6<H68-G)"-#``A'
  3137. + M\E@$-7R`````Y(TU10`"-T4``.2+`$.``#=#``)@%$*I``@U?(````#DC`!$
  3138. + M@``U1``"(`I8@$S?3'Q.=2!O``0@+P`((B\`#")O`!!93TCG#S8L`2X`*D@O
  3139. + M20`@<`&^@&,``+(F3=?&(`=5@&8D+PLO#2!-(DLL;P`H3I903TJ`;P``DB`&
  3140. + M($TB2TZZ]Z1@``"$(`?BB"(&3KKZ]B)-T\`@!B!-3KKWBB1->@!X`6`J+PTO
  3141. + M"R!+(DTL;P`H3I903TJ`:A)2A=7&M<MG"B`&($LB2DZZ]US7QE*$N(=ETK7-
  3142. + M9PH@!B!-(DI.NO=&)F\`("`%(@8@32)+80#_4B!*T<8@!Y"%4X`B!B)+3-]L
  3143. + M\%B/8`#_.DS?;/!83TYU3OK<:D[ZW&(@;P`$64\O"R`(9R0F0&`"4HMP`!`3
  3144. + M0>P/Z0@P``,(`&;N($M#[P`$3KKX#B`O``0F7UA/3G4``"`O``1(YP$$+@`J
  3145. + M;!&88`@@;0`$3I`J52`-9O1+[!#P<`;`K0`858!F&"`M``20K0`09PXB+0`<
  3146. + M(&T`$,%!3KK;."!-*E`@#6;6(`=,WR"`3OJZ*"`O``0@;P`(0]!2F2!14ID0
  3147. + M@$YU44\@;P`,0I<O2``$2&\`%"\O`!1!^O_>0^\`"$ZZ"3(@;P`,0A!03R`7
  3148. + M4$].=0``("\`!"!O``@O#2(`*DA2E4/M``@@$5*1&X$(#"`9#(````(`;11!
  3149. + M[0`,(FT`!'(!P4%.N@*@0JT`""I?3G6>_`(,+PTJ;P(40J\`#$*O``0O30`(
  3150. + M2&\"'"\O`AQ!^O^J0^\`#$ZZ"+I03R`O``QG$$'O`!`B;P`(<@'!04ZZ`E8(
  3151. + M+0`%`!MF"`@M``0`&V<$</]@!"`O``0J7][\`@Q.=2\-(@`J2$/54ID@$5*1
  3152. + M&X$(""`9#(````(`;1)![0`(0^P1$G(!3KH"#$*M``0J7TYUGOP""$*O``1"
  3153. + METAO`A`O+P(00?K_ND/O``A.N@@R4$\@+P`$9Q!![P`(0^P1$G(!P4%.N@'.
  3154. + M<##`K!$J9P1P_V`"(!?>_`((3G4@;P`$(F\`"$CG`10F22I(8!`@!R!+3KH`
  3155. + M)%*`9@1P_V`*?@`>'4J'9NAP`$S?*(!.=0``("\`!"!O``A93TCG`P0N`"I(
  3156. + M?``?0``/<D'2@<*M`!AF#`CM``4`&W#_8``!0'`SP*T`&%6`9U!P3$8`P*T`
  3157. + M&')`TH&P@68,".T``0`;0JT`#&`T""T`!0`;9P9P_V```0QP;D8`P*T`&')N
  3158. + M1@&P@68,".T``0`;0JT`#&`*<``K0``,8```YB`M``RPK0`4;#(@;0`$4JT`
  3159. + M!"`'$(!2K0`,""T`!@`;9PYR"KZ!9@@@34ZZ`@`L`$J&9P``JB`&8```J@@M
  3160. + M``(`&V<N0JT`#"`M`!Q![P`/<@%.NMBT+`!2@&8(".T`!0`;8'(@!E.`9VP(
  3161. + M[0`$`!M@9$JM`!1F("!-3KKU9$J`9PH([0`%`!MP_V!8<``K0``,*VT`$``$
  3162. + M("T`#+"M`!1M""!-3KH!ABP`".T``0`;(&T`!%*M``0@!Q"`4JT`#`@M``8`
  3163. + M&V<.<@J^@68(($U.N@%:+`!*AF<$(`9@!G(`$@<@`4S?(,!83TYU(&\`!"`O
  3164. + M``@B+P`,(F\`$%E/2.</$"P!+@`F22](`!0@!B('3KKVLBH`>`!*AV<$2H9F
  3165. + M!G``8```_'`PP*L`&&8*<$'0@,"K`!AF#`CK``4`&W``8```WG`SP*L`&%6`
  3166. + M9U!P3$8`P*L`&')`TH&P@68,".L``0`;0JL`#&`T""L`!0`;9P9P`&```*IP
  3167. + M;D8`P*L`&')N1@&P@68,".L``0`;0JL`#&`*0JL`#'``8```A$JK`!1F3`@K
  3168. + M``(`&V9$($M.NO0P2H!G.@CK``4`&W``8&`@;P`4$!@B:P`$$H!2JP`$4JL`
  3169. + M#%.%4H0O2``4<@JP`68.""L`!@`;9P8@2TZZ`#X@*P`,L*L`%&P$2H5NPDJ%
  3170. + M;Q8@2TZZ`"8@*P`<(@4@;P`43KK6]-B`(`0B!TZZ]11,WPCP6$].=2!O``1(
  3171. + MYP$$*D@@#6<``*!P0="`P*T`&&8L(&T`$$/M``0BR$*90BT`('``(L`(+0`'
  3172. + M`!MG!@BM````&PBM``0`&V```(I*K0`49T0@+0`,:@9R`"M!``P@+0`,9R@B
  3173. + M+0`<(&T`$,%!3KK6=BX`4H!F"`CM``4`&V`,OJT`#&<&".T`!``;*VT`$``$
  3174. + M0JT`#'`PP*T`&&82""T`!P`;9P9P_,&M`!AP`&`D</]@('X`2^P0\$JM`!AG
  3175. + M#"!-80#_1DJ`9P)^_RI5(`UFZ"`'3-\@@$YU(&\`!")O``@O;P`,``0O;P`0
  3176. + M``B>_``T2.<O-B9O`&`J;P!<2.\#```L0B\`.T(O`#I"+P`Y0B\`.!]\`"``
  3177. + M-T*O`%1P_R]``%!"+P`V?@!\`$7O`#Q@2G``(&\`+!`0<B"0@6<B5X!G)E&`
  3178. + M9Q)5@&<&5X!G(F`R'WP``0`[8!X??``!`#I@%A]\``$`.6`.'WP``0`X8`8?
  3179. + M?``P`#=2KP`L(&\`+$H09JYP`;`O`#MF!A]\`"``-W(J(&\`++(09AXL;P`P
  3180. + M(E98EB(1+T$`5&P(1*\`5!]``#M2KP`L8`Q#[P!43KKQKM&O`"P@;P`L$!!R
  3181. + M+K`!9D92KP`L<"H@;P`LL!!F'")O`#`@45B1(!`O0`!0;`9P_R]``%!2KP`L
  3182. + M8!9#[P!03KKQ;"H`9@9"KP!08`3;KP`L'WP`(``W<``@;P`L$!!R3)"!9Q1R
  3183. + M')"!9P99@&<*8!(??``"`#9@!A]\``$`-E*O`"P@;P`L4H@B;P`L$!%R`!(`
  3184. + M'T``)"](`"9P4)*`9P`!$%&!9P`!''`+DH!G``'04X%G4%N!9TQ;@6<B4X%G
  3185. + M``$"4X%G``#J5X%G``&`58%G``#P5X%G``#J8``!N"1O`#!P`K`O`#9F#B!2
  3186. + M6)(B4"`3,H!@``)*(%)8DB)0(I-@``(^(F\`,"!16)$H$&H$?@%$A$J'9PQ%
  3187. + M[P`]'WP`+0`\8")*+P`Z9PQ%[P`]'WP`*P`\8!!*+P`Y9PQ%[P`]'WP`(``\
  3188. + M?`$@!"!*3KKOABH`("\`4&8&2H1G``'D("\`4&H&<@$O00!0*"\`4)B%;QP@
  3189. + M2M'$(`4B2DZZ\XAR,"!*8`(0P5.$9/HJ+P!0W(4@!5.`9@`!!!`2L"\`-V8`
  3190. + M`/I*KP!09@``\D(28```["`O`%!J!G`(+T``4!]\``$`-G`"L"\`-F80(F\`
  3191. + M,"!16)$@$'@`.`!@"B)O`#`@45B1*!`0+P`D<G6P`6<`_UIR;[`!9AY*+P`X
  3192. + M9PQ%[P`]'WP`,``\?`$@!"!*3KKN]F``_SY*+P`X9Q(??``P`#Q%[P`^'WP`
  3193. + M>``]?`(@!"!*3KKO$BH`""\`!0`D9@#_%$'O`#Q.NN_^8`#_"")O`#`@45B1
  3194. + M)%`@"F8$1?H`\B!*2AAF_%.(D<HJ""`O`%!K!+"%;P0O10!0+"\`4&`@?`$B
  3195. + M;P`P(%%8D2`0'T``/$(O`#U@!G``8```K$7O`#P@+P!4L(9L"'(`+T$`5&`$
  3196. + MG:\`5$HO`#MG'F`(<``0&B!+3I53AFST8`8@2W`@3I53KP!4;/1@:DJ'9@Q*
  3197. + M+P`Y9@9*+P`Z9T80$G(@L`%G#'0KL`)G!G0ML`)F,DJ&:RZR+P`W9A)@"G``
  3198. + M$"\`-R!+3I53KP!4;/!P`!`:($M.E5.&8`IP`!`O`#<@2TZ54Z\`5&SP8`AP
  3199. + M`!`:($M.E5.&;/0@+P`F3-]L]-[\`#1.=0``(&\`!")O``@O;P`,``0O;P`0
  3200. + M``B>_``,2.<`%"9)*D@O;P`<`!!@.'`EL"\`#&8F(&\`&+`09@92KP`88!@O
  3201. + M"R\-0^\`&$ZZ^Y103TJ`9P8O0``88`IP`!`O``P@2TZ5(&\`&!`8'T``#"](
  3202. + M`!A*`&:V3-\H`-[\``Q.=2!O``0@B%B00J@`!"%(``A.=0``(&\`!$CG``8J
  3203. + M2$JM``IG"B)-+'@`!$ZN_I@;?`#_``AP_RM``!1P`!`M``\L>``$3J[^L")-
  3204. + M<").KO\N3-]@`$YU```@;P`$("\`"$CG`Q8N`"I(</\L>``$3J[^MAP`2(9(
  3205. + MQB`&4H!F!'``8&!P(B(\``$``4ZN_SHF0$J`9@@@!DZN_K!@1$'K``H@S1='
  3206. + M``D7?``$``A"&!#&D\E.KO[:)T``$"`-9P@B2TZN_IY@&D'K`!@G2``40>L`
  3207. + M%"=(`!Q"JP`8%WP``@`@(`M,WVC`3G4O""\`3KD```*T4$].=0`````#[```
  3208. + M``H```````".X@``)2(``"4N```E*```)18``"4$```E$```)0H``"4<```D
  3209. + M_@````$````!````"@````````/R```#Z@``!,QA;&P`97-C87!E``!D:7)E
  3210. + M8W1O<GD`9G5L;"UT:6UE`&EN;V1E`&MI;&]B>71E<P!N=6UE<FEC+75I9"UG
  3211. + M:60`;F\M9W)O=7```&AI9&4M8V]N=')O;"UC:&%R<P``<F5V97)S90!S:7IE
  3212. + M``!W:61T:`!A;&UO<W0M86QL``!I9VYO<F4M8F%C:W5P<P``8VQA<W-I9GD`
  3213. + M`&9I;&4M='EP90!I9VYO<F4``&1E<F5F97)E;F-E`&QI=&5R86P`<75O=&4M
  3214. + M;F%M90``<F5C=7)S:79E`&9O<FUA=```<V]R=```=&%B<VEZ90!T:6UE``!H
  3215. + M96QP``!V97)S:6]N`&%M:6=A`````````````````````&$````$````````
  3216. + M``````!B````#```````````````9````!8````````2$`````$````@````
  3217. + M``````````!I````)@``````````````:P```#```````````````&X```!`
  3218. + M``````````````!'````2@``````````````<0```%X``````````````'(`
  3219. + M``!F``````````````!S````;`````$`````````=P```'(`````````````
  3220. + M`$$```!^``````````````!"````C@``````````````1@```)@`````````
  3221. + M`````$8```"B`````0````````!)````J@``````````````3````+8`````
  3222. + M`````````$X```"^``````````````!1````R@``````````````4@```-0`
  3223. + M```!``````````P```#<`````0`````````*````X@````$`````````5```
  3224. + M`.H````!``````````L```#P````````$G`````!````]@```````!)T````
  3225. + M`0```/X```````````````T`````````````````````=F5R8F]S90!L;VYG
  3226. + M``!C;VUM87,``&AO<FEZ;VYT86P``&%C<F]S<P``=F5R=&EC86P``'-I;F=L
  3227. + M92UC;VQU;6X````"U````MP```+B```"Z@```O8```+^```#"```````````
  3228. + M``````````0````#`````P````(````!;F]N90``=&EM90``<VEZ90``97AT
  3229. + M96YS:6]N`````U(```-8```#7@```V0```````````````,````$`````F%T
  3230. + M:6UE`&%C8V5S<P``=7-E`&-T:6UE`'-T871U<P`````#D@```Y@```.@```#
  3231. + MI````ZH``````````@````(````"`````0````$E<PH``````````````%!/
  3232. + M4TE83%E?0T]24D5#5`!#3TQ534Y3`%1!0E-)6D4`86)C9&9G:6ML;6YP<7)S
  3233. + M='5W.GA!0D-&1TDZ3$Y14E-4.E58,0!I;G9A;&ED(&QI;F4@=VED=&@Z("5S
  3234. + M```J(0``+BHA`&EN=F%L:60@=&%B('-I>F4Z("5S``!S;W)T('1Y<&4`=&EM
  3235. + M92!T>7!E`&9O<FUA="!T>7!E`"5S```E<P``)7,Z"@``)7,Z"@``=&]T86P@
  3236. + M)74*`"5S```E<P``)39U(```)2IU(```)7,@)3-U(``E+3AU(``E+3@N.',@
  3237. + M`"4M.'4@`"4M."XX<R``)3-U+"`E,W4@`"4X;'4@`"5S(``@+3X@``!<7```
  3238. + M7&X``%QB``!<<@``7'0``%QF``!<(```7"(``%PE,#-O`"4V=2```"4J=2``
  3239. + M`%5S86=E.B`E<R!;+6%B8V1G:6ML;6YP<7)S='5X04)#1D=,3E%24U58,5T@
  3240. + M6RUW(&-O;'-=(%LM5"!C;VQS72!;+4D@<&%T=&5R;ET*("`@("`@(%LM+6%L
  3241. + M;%T@6RTM97-C87!E72!;+2UD:7)E8W1O<GE=(%LM+6EN;V1E72!;+2UK:6QO
  3242. + M8GET97-=(%LM+6QI=&5R86Q="B`@("`@("!;+2UN=6UE<FEC+75I9"UG:61=
  3243. + M(%LM+6AI9&4M8V]N=')O;"UC:&%R<UT@6RTM<F5V97)S95T@6RTM<VEZ95T*
  3244. + M("`@("`@(%LM+7=I9'1H/6-O;'-=(%LM+71A8G-I>F4]8V]L<UT@6RTM86QM
  3245. + M;W-T+6%L;%T@6RTM:6=N;W)E+6)A8VMU<'-="@`@("`@("`@6RTM8VQA<W-I
  3246. + M9GE=(%LM+69I;&4M='EP95T@6RTM:6=N;W)E/7!A='1E<FY=(%LM+61E<F5F
  3247. + M97)E;F-E70H@("`@("`@6RTM<75O=&4M;F%M95T@6RTM<F5C=7)S:79E72!;
  3248. + M+2US;W)T/7MN;VYE+'1I;64L<VEZ92QE>'1E;G-I;VY]70H@("`@("`@6RTM
  3249. + M9F]R;6%T/7ML;VYG+'9E<F)O<V4L8V]M;6%S+&%C<F]S<RQV97)T:6-A;"QS
  3250. + M:6YG;&4M8V]L=6UN?5T*("`@("`@(%LM+71I;64]>V%T:6UE+&%C8V5S<RQU
  3251. + M<V4L8W1I;64L<W1A='5S?5T@6RTM;F\M9W)O=7!="B`@("`@("!;+2UH96QP
  3252. + M72!;+2UV97)S:6]N72!;<&%T:"XN+ET*``!'3E4@9FEL975T:6QS(#,N-@``
  3253. + M``>,``!/:P``````%```````````````````!Z1C;VYS;VQE.@``)7,Z(```
  3254. + M:6YT=6ET:6]N+FQI8G)A<GD```!T:6UE<BYD979I8V4`````_____V9I9F\N
  3255. + M;&EB<F%R>0``````````````````"`0``0``````````"`8`````````````
  3256. + M``!`*",I86QL;V-A+F,),2XQ````````````````=7-E<@`````(1`````!W
  3257. + M:&5E;```````"%(```A8``````A*1F%I;&5D('1O(&-R96%T92!T:6UE<@``
  3258. + M=7-E<B!I;G1E<G)U<'0```````!.;R!M96UO<GD```!A`$9A:6QE9"!T;R!C
  3259. + M<F5A=&4@=&EM97(``$Y)3#H``$Y)3#H``$Y)3#H``"H`3DE,.@``26YV86QI
  3260. + M9"!W:6QD8V%R9"`E<P!%<G)O<B!E>'!A;F1I;F<@87)G=6UE;G1S`%5315(`
  3261. + M`'5S97(``%5315).04U%``!(3TU%``!S.@``4TA%3$P`8FEN.G-H``!(3U-4
  3262. + M3D%-10``86UI9V$`3DE,.@````!'350`("`@`"`@(`````E,```)4```````
  3263. + M````("`@`"`@(`!S.FQO8V%L=&EM90!S.GIO;F5I;F9O```O`````!\````<
  3264. + M````'P```!X````?````'@```!\````?````'@```!\````>````'P```!\`
  3265. + M```=````'P```!X````?````'@```!\````?````'@```!\````>````'P``
  3266. + M`6T```%N<&]S:7AR=6QE<P``54Y)6%1:```@("``4W5N36]N5'5E5V5D5&AU
  3267. + M1G)I4V%T2F%N1F5B36%R07!R36%Y2G5N2G5L075G4V5P3V-T3F]V1&5C`"4N
  3268. + M,W,@)2XS<R4S9"`E,#(N,F0Z)3`R+C)D.B4P,BXR9"`E9`H```";,"!Q``!&
  3269. + M86EL960@=&\@:6YI=&EA;&ES92!)+T\``&%M:6=A('-P96-I9FEC(&5R<F]R
  3270. + M``````J(56YK;F]W;B!E<G)O<@!N;W0@;W=N97(`;F\@<W5C:"!F:6QE(&]R
  3271. + M(&1I<F5C=&]R>0!N;R!S=6-H('!R;V-E<W,`:6YT97)R=7!T960@<WES=&5M
  3272. + M(&-A;&P`:2]O(&5R<F]R`&YO('-U8V@@9&5V:6-E(&]R(&%D9')E<W,`87)G
  3273. + M=6UE;G0@;&ES="!T;V\@;&]N9P``97AE8R!F;W)M870@97)R;W(`8F%D(&9I
  3274. + M;&4@;G5M8F5R`&YO(&-H:6QD('!R;V-E<W,``&YO(&UO<F4@<')O8V5S<V5S
  3275. + M`&YO="!E;F]U9V@@;65M;W)Y`'!E<FUI<W-I;VX@9&5N:65D`&)A9"!A9&1R
  3276. + M97-S`&)L;V-K(&1E=FEC92!R97%U:7)E9`!M;W5N="!D979I8V5S(&)U<WD`
  3277. + M`&9I;&4@97AI<W1S`&-R;W-S+61E=FEC92!L:6YK`&YO('-U8V@@9&5V:6-E
  3278. + M``!N;W0@82!D:7)E8W1O<GD`:7,@82!D:7)E8W1O<GD``&EN=F%L:60@87)G
  3279. + M=6UE;G0``&9I;&4@=&%B;&4@;W9E<F9L;W<`=&]O(&UA;GD@;W!E;B!F:6QE
  3280. + M<P!N;W0@82!T>7!E=W)I=&5R``!T97AT(&9I;&4@8G5S>0``9FEL92!T;V\@
  3281. + M8FEG``!N;R!S<&%C92!L969T(&]N(&1E=FEC90!I;&QE9V%L('-E96L``')E
  3282. + M860M;VYL>2!F:6QE('-Y<W1E;0!T;V\@;6%N>2!L:6YK<P``8G)O:V5N('!I
  3283. + M<&4`;6%T:"!A<F=U;65N=`!R97-U;'0@=&]O(&QA<F=E``!)+T\@<W1R96%M
  3284. + M(&5M<'1Y``!F:6QE(&YA;64@=&]O(&QO;F<``&1I<F5C=&]R>2!N;W0@96UP
  3285. + M='D`=&]O(&UA;GD@<V]F="!L:6YK<R`H;&]O<#\I````"J(```JP```*N@``
  3286. + M"M0```KD```*_```"P8```L@```+.```"TH```M:```+;```"WX```N0```+
  3287. + MH@``"ZX```O$```+V```"^0```OV```,!@``#!8```PF```,.```#$P```Q@
  3288. + M```,<@``#((```R0```,J```#+8```S,```,W```#.@```SV```-"```#1H`
  3289. + M``TN```-0@```"8``&1O;W(N)6QX+B5L>```3F\@;65M;W)Y`'9I<G1U86P@
  3290. + M;65M;W)Y(&5X:&%U<W1E9```=FER='5A;"!M96UO<GD@97AH875S=&5D```E
  3291. + M=0``)74``````````````````0```#]03U-)6$Q97T-/4E)%0U0`+2T``"5S
  3292. + M.B!O<'1I;VX@8"5S)R!I<R!A;6)I9W5O=7,*`"5S.B!O<'1I;VX@8"TM)7,G
  3293. + M(&1O97-N)W0@86QL;W<@86X@87)G=6UE;G0*```E<SH@;W!T:6]N(&`E8R5S
  3294. + M)R!D;V5S;B=T(&%L;&]W(&%N(&%R9W5M96YT"@``)7,Z(&]P=&EO;B!@)7,G
  3295. + M(')E<75I<F5S(&%N(&%R9W5M96YT"@`E<SH@=6YR96-O9VYI>F5D(&]P=&EO
  3296. + M;B!@+2TE<R<*`"5S.B!U;G)E8V]G;FEZ960@;W!T:6]N(&`E8R5S)PH````E
  3297. + M<SH@:6QL96=A;"!O<'1I;VX@+2T@)6,*`"5S.B!O<'1I;VX@<F5Q=6ER97,@
  3298. + M86X@87)G=6UE;G0@+2T@)6,*``!5;FMN;W=N('-Y<W1E;2!E<G)O<@``)7,Z
  3299. + M(```.B`E<P`````E<SH@``!I;G9A;&ED`&%M8FEG=6]U<P`@)7,@8"5S)PH`
  3300. + M`````$```"`@("`@("`@("@H*"@H("`@("`@("`@("`@("`@("`@2!`0$!`0
  3301. + M$!`0$!`0$!`0$(2$A(2$A(2$A(00$!`0$!`0@8&!@8&!`0$!`0$!`0$!`0$!
  3302. + M`0$!`0$!`0$0$!`0$!""@H*"@H("`@("`@("`@("`@("`@("`@("`A`0$!`@
  3303. + M````````````````````````````````````````````````````````````
  3304. + M````````````````````````````````````````````````````````````
  3305. + M``````````````````````````````````````````````````````````^@
  3306. + M```1$@``````````````````````````````````````````$30`````````
  3307. + M````````````````````````````````````````````````````````````
  3308. + M``````````````````````(`__\````.``X```````````````#__P````0`
  3309. + M!````````'T6```17/__````!``$````````?2P``````````````&0```/"
  3310. + M```#O@```[H```.V```#L@```WH```-V```#<@```VX```,N```#*@```R8`
  3311. + M``,B```#'@```QH```,6```"M````J0```*4```"A````G0```)D```"5```
  3312. + M`D0```(T```")````A0```($```!]````>0```'4```!Q````;0```&D```!
  3313. + ME````80```%T```!9````50```%$```!-````20```$4```!!````JP```*<
  3314. + M```!/```!YX```>X```(&```"`P```AD```(7@``"%H```A*```)6```"50`
  3315. + M``WV```-\@``#>X```WJ```-Y@``#>(```W>```-V@``#=8```W2```-S@``
  3316. + M#<H```W&```-P@``#;X```VZ```-M@``#;(```VN```-J@``#:8```VB```-
  3317. + MG@``#9H```V6```-D@``#8X```V*```-A@``#8(```U^```->@``#78```UR
  3318. + M```-;@``#6H```UF```-8@``#5X```J>```1$@``$/```!&````#[`````(`
  3319. + 3```````1D```$7P````````#\EX`
  3320. + `
  3321. + end
  3322. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/rmdir.uue emacs-18.59/amiga/amiga-extra/amiga/c/rmdir.uue
  3323. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/rmdir.uue    Thu Jan  1 00:00:00 1970
  3324. --- emacs-18.59/amiga/amiga-extra/amiga/c/rmdir.uue    Tue Jul 12 10:35:52 1994
  3325. ***************
  3326. *** 0 ****
  3327. --- 1,404 ----
  3328. + begin 666 rmdir
  3329. + M```#\P`````````"``````````$```\'```"=````^D```\'2.=^_B1()`!)
  3330. + M^0`````L>``$+P)(YP#@)FX!%"(K`*QG#.6)($$B*``TY8E@!B(/DJL`.G0`
  3331. + M(#P```L$LJP(2&0((BP(2-"!=`$F02(\``$``4ZN_SI*@&8(3-\'!&```D`@
  3332. + M0"1`(D`@/````CZ9_``````@W%.`9OH@'&<.($G1W-70((HD25.`8/`H2=G\
  3333. + M`````"E\```+!`E$3-\'`"E."2!*`DS?``1([(``"2AG2"`,!(``````!H``
  3334. + M``L$T*P(2"(`!(````"`#&X`)``4;1@I0`E`*4$)/)*L"$A![`DX((%.KOTD
  3335. + M8`(N0"`L"$@O0``$T:P)1"(/DHL&@0```(`I00C\0JP))'``(CP``#``3J[^
  3336. + MSB9N`11#^@&(<`!.KOW8*4`*_&8&<&1@``#F*6L`F`D<2JL`K&<``'X@:P"L
  3337. + MT<C1R")H`!#3R=/)(`)R`!(9*4D)+-"!7H`"0/_\*4`)-$CG0$`B/``!``%.
  3338. + MKO\Z3-\"`DJ`9@AP%"\`9P`!!"!`*4`),"`"4X#4@1&R```@`E."4<C_]A&\
  3339. + M`"`@`E."$;P`(B`"$;$@`"`!4<K_^!"\`"(O"&!*0>L`7$ZN_H!!ZP!<3J[^
  3340. + MC"E`"20O`"1`("H`)&<8+&P*_"!`(B@``$ZN_Z`I0`D<(@!.KO^"(&P))"\(
  3341. + M2&P(^"!H`"0I:``$"2Q.NB:X3KH-TG``8`0@+P`$)&P)*"4`+'@`!`QN`"0`
  3342. + M%&T22JP).&<,0>P).%FL"4!.KOTD+DH@+`D49P0@0$Z03KHFD$ZZ)J1*K`DD
  3343. + M9R`L;`K\(BP)'&<$3J[_IBQX``1.KO]\(FP))$ZN_H9@$BQX``0@+`DT9P@B
  3344. + M;`DP3J[_+B)L"OQ.KOYB("P)1"),D_P`````3J[_+B`?3-]_?DYU9&]S+FQI
  3345. + M8G)A<GD````@#Y!\`!2PK`C\90`J!$CG!Q0N+P`8*F\`''P`*54)2$*L"4R7
  3346. + MRV`:(`5*@&<4<G"0@6<"8`AP`2E`"4Q@!&$``1`O"TAL`!1(;`!4+PTO!TZZ
  3347. + M'5)/[P`4*@!2@&;*2JP)5&<:+RP`IDAL`%9(;`B03KHO9$*73KHNS$_O``Q*
  3348. + MK`E09P1A``#*("P%V+"'9F)A``"^8%PB+`78Y8$O-1@`3KH<PB(L!=CE@2ZU
  3349. + M&`!.NA@X6$]*@&<@(BP%V.6!+S48`$AL`%HO+`JD0J=.NB1.3^\`$'P!8!9*
  3350. + MK`E,9Q`B+`78Y8$O-1@`80``'%A/4JP%V"`L!=BPAVV<+T8`&$S?*.!.^BY`
  3351. + M(`]10+"L"/QE`"D`2.<`%"IO``Q(>``O+PU.NBD24$\F0$J`9@1@'%.+M\UC
  3352. + M!G`OL!-G]$(K``$O#4ZZ%Z983TJ`9]!,WR@`3G4@#Y!\``RPK`C\90`HM"\L
  3353. + M"4A(;`!>2&P(D$ZZ+FI(>``!3KHMT$_O`!!.=4CG(#(@;P`80^\`'$7Z`!PF
  3354. + M;P`4)`LL>0````1.KOWV(`N0@DS?3`1.=1;`3G4``"!O``0B;P`(64](YS,V
  3355. + M*DA^`"!L"H0L*`#@+TD`($J&9B!*K`DD9AI![`#$(@@L;`K\)#P```/M3J[_
  3356. + MXBP`9P)^`4J&9S8B!D'L`,XD"$'L"2PF""QL"OQ.KOZ>(@8D#28O`"!.KOZ>
  3357. + M(@9T"DZN_LA*AV=8(@9.KO_<8%`@;`J$)F@`N#!\__^WR&=`0^P`U'`E+'@`
  3358. + M!$ZN_=@D0$J`9RPI;`DL`+@I30"\+PH@2RQ*0^P`L)7*)F\`)$ZN_;1,WP0`
  3359. + M(DHL>``$3J[^8DS?;,Q83TYU(&\`!$/O``AA`/\J3G4@;P`$0^\`"&$`_QQP
  3360. + M%$ZZ+*I.=0``2.<`!G`(<@`L>``$3J[_.BI`2H!F!'``8"Y"K0`$2'@`*'``
  3361. + M+P!![`#H<@&3R<%!3KH9[E!/*H!F#")-<`A.KO\N<`!@`B`-3-]@`$YU(&\`
  3362. + M!$CG``8J2"`-9Q@@36$``!X@54ZZ&C(B37`(+'@`!$ZN_RY,WV``3G4@;P`$
  3363. + M2.<`!BI(2JT`!&<4(E4L>``$3J[^(")53J[^)D*M``1,WV``3G4@;P`$(%`B
  3364. + M:``.<``0*0`/<@'AH2`!3G4@;P`$("\`""(O``Q(YP,&+`$N`"I(8:I*AV8$
  3365. + M2H9G'B)5(T<`("-&`"0S?``)`!PL>``$3J[^,G`!*T``!$S?8,!.=2!O``1(
  3366. + MYP`&*DA*K0`$9QPB52QX``1.KOXL2D!G#B)53J[^)D*M``1P`6`"<`!,WV``
  3367. + M3G4O#B`L"I`B`$A!0D'2@"`L"H2S@"E`"5Q"K`E@0^P`_'``+'@`!$ZN_=@I
  3368. + M0`E8</].KOZV2(!(P"E``/A*K`E89PA*@&L$<`%@`G``*4`)9"Q?3G4O#B`L
  3369. + M`/AK""QX``1.KOZP("P)6&<*(D`L>``$3J[^8BQ?3G4@+P`$44](YP,`+@!.
  3370. + MN@4`(`=.N@&02H!G*")`(&D`'')`Y8G"D2](``P@`2!I``0B;P`,3I$L`"`'
  3371. + M3KH!2"`&8`)P_TS?`,!03TYU("\`!"\'+A]@K@``(&\`!"`O``@B;P`,+V\`
  3372. + M$``$+V\`%``(+V\`&``,+V\`'``0+V\`(``4+V\`)``844](YP<4+@!([P,`
  3373. + M`!1\`"IL"6A@%DJM``1F"C!\``$K2``$8`Q2AMK\`"2\K`EL;>0@+`ELO(!F
  3374. + M>'(*TZP);"`L"6PB`.>!TH#E@2`!3KHGQ"I`2H!F#'`,*4`*I'#_8```CG#V
  3375. + MT*P);"(`YX'2@.6!(&P):")-8`(2V%.!9/H@+`EH9P8@0$ZZ)AXI30EH>O;:
  3376. + MK`EL(`7G@-"%Y8#;P)?+*TL`!%*%VOP`)+JL"6QM\"`&YX#0AN6`(&P):"&O
  3377. + M`!0(!"&'"``AKP`8"`A+[P`@(9T(#"&="!`AG0@42^\`+"&="!@AG0@<(9T(
  3378. + M("`&3-\HX%!/3G4@+P`$(@!K%K*L"6QL$"`!YX#0@>6`(&P):$*P"`1.=2`O
  3379. + M``1(YP$$+@!K'KZL"6QL&"`'YX#0A^6`*FP):-O`2JT`!&<$(`U@"'`)*4`*
  3380. + MI'``3-\@@$YU("P);$YU```@+P`$64\N@$'L`1`@"%A/3G4@;P`$64\NB$'L
  3381. + M`1`@"%A/3G4@+`$03G4``%E/2JP!0F8,0>\``RE(`4)A[F`60>\``R)L`4*S
  3382. + MR&0$<`%@`G#_*4`)<%A/3G593TCG`10N+P`42JP)<&8"8<`J;`%&8"X@+`EP
  3383. + M;PQ![P`/(FT`!+/(8A!*@&H<0>\`#R)M``2SR&00)E4O#4ZZ)+)83RI+(`UF
  3384. + MSBE-`49*AV8$<`!@(E"'+P=.NB8"($`@K`%&0^\`$R%)``1#Z``(6$\I0`%&
  3385. + M(`E,WRB`6$].=0``("\`!%E/+H`@+`J`9PX@0$ZZ_(I*@&<$<@%@`G(`(`%8
  3386. + M3TYU("\`!"!L"H!R`$[Z_#!.NOMD*4`*@&8*2&P!3$ZZ^T!83R!L"H!.NOOT
  3387. + M@:P)=$YU(&P*@$[Z^Y`([``,"79.=2`O``0(```,5L!$`$B`2,!.=0CL``T)
  3388. + M=DYU("\`!`@```U6P$0`2(!(P$YU3KH41G``(&P*W!`H``]R`>&A@ZP)=$YU
  3389. + M3OH4F"`O``193TCG`18O0``0?@!@+B`M`!1.NA/N)D!*@&<42JL`%&8.?@%P
  3390. + M`2=``!0G;0`8`!@B37`<+'@`!$ZN_RX@;`K<+'@`!$ZN_HPJ0$J`9L`@!TS?
  3391. + M:(!83TYU("\`!$CG#P0N`'`![Z`L`'`)OH!F!G``3KH*'"`L"GC`AF<&C:P*
  3392. + M?&!Z*@9&A<NL"GQ*AVMF<""^@&Q@(`?G@$'L"7@J<`@`,'P``;O(9BP@!U6`
  3393. + M9Q13@&<0<@V0@6<\68!G.%&`9S1@"DAL`61.NOG\6$]P`$ZZ";Y@("`-9QP@
  3394. + M!^>`*`9![`EXB+`(!(FL"G@@!TZ51H3)K`IX("P*?,"&9HI,WR#P3G4@+P`$
  3395. + M+PXB+`ET@H!P`"QX``1.KO[.+%].=2`O``0O#B(`("P)=("!+'@`!$ZN_L(L
  3396. + M7TYU("\`!$CG`P`N`'P`80#^$$J`9PA\`7`.80#_#"`'80#^8DJ`9PA\`7`"
  3397. + M80#^^B`'80#^:DJ`9PA\`7`#80#^Z"`'80#^ADJ`9PA\`7`480#^UB`&3-\`
  3398. + MP$YU("\`!"\'*4`)!'`(+A]@`/Z\<`!A`/]@8)!@]DCG`11^`$OL"7@V?``!
  3399. + M*HM"K0`$4H=0C7`@OH!M\$*L"GQ"K`IX0JP)=&$`_=1A`/WJ80#]HDS?*(!@
  3400. + M`/WX80#]N&``_@@``$AL`7A.NOC86$].=2`O``0O#4ZZ(R@J0$J`9@)AXB`-
  3401. + M*E].=2!O``0@+P`(+PM.NB$<)D!*@&8"8<8@"R9?3G4@;P`$+PTJ2"`-9@1+
  3402. + M[`&"($U*&&;\4XB1S2`(4H!.NB+<($!*@&8$<`!@"")($MUF_"`(*E].=5E/
  3403. + M2.<#-'X`?``@;`J$)F@`T&`L2BL`"&8D,#P%`,!K``YF&E*'(&L`"B`(2AAF
  3404. + M_%.(D<`@"-R`W*L`%%2&)E-*DV;0(`=2@.6`T(9A`/]**4`*G.6'($`B0-/'
  3405. + M1>D`!"]``!1F"D'L`70I2`J<8%8@;`J$*F@`T&!"2BT`"&8Z,#P%`,!M``YF
  3406. + M,"9M``HN+0`4(&\`%"#*+T@`%&`"%-M*$V;Z%/P`/29M`!!@`A3;(`=3ATJ`
  3407. + M9O9"&BI52I5FNB!O`!1"D$S?+,!83TYU(&\`!"`O``@O#2I(*H!"K0`$Y8!A
  3408. + M`/ZT*T``""I?3G4@;P`$(F\`""`O``Q(YR(T)DDJ2$J`9PH@2V$`_L(D0&`"
  3409. + M)$L@"F<^(A4D+0`$M(%M(BP!W(9T$-*"O(%M`B(&*H$@`>6`(&T`"$ZZ'YHK
  3410. + M0``(9Q)'[0`$(A-2F^6!(%LABA@`<`%,WRQ$3G4@;P`$(F\`""`O``QADDJ`
  3411. + M9@1A`/X:3G4@;P`$(F\`"$CG`!0F22I(("T`!-"K``2PE6\2T(`J@.6`(&T`
  3412. + M"&$`_AHK0``((BT`!.6!(&T`"-'!("L`!"(`Y8$B:P`(8`(0V5.!9/K1K0`$
  3413. + M(&L`"$S?*`!.^A^*(&\`!")O``@O;P`,``0@+P`0(B\`%%E/2.<"-"P!*DDD
  3414. + M2"](`!!*@&=$4X!G"E.`9P``MF```/13AF<B("\`&"(-D($@;P`00C`(`"!!
  3415. + M(F\`$&`"$MA3@&3Z8```SD'L`80B;P`0$MAF_&```+XF;P`88&YP7+`59F9*
  3416. + M+0`!9V!4C7`!O(!F!A3\`&%@5"`&58!F1A`M__](@$C`<B.0@6<N58!G*E6`
  3417. + M9R93@&<B4X!G'E.`9QIR%9"!9Q1R')"!9PY5@&<*<A^0@6<$58!F!!3\`"<4
  3418. + M[?__8`@4[?__8`(4W;O+98Y@0"9O`!A@-G`JL!5F+DHM``%G*%2-$"W__TB`
  3419. + M2,!R99"!9PQR"9"!9@P4_``*8`X4_``;8`@4[?__8`(4W;O+9<9"$DS?+$!8
  3420. + M3TYUGOP!+$CG/S8J;P%8(&P)(`QH`"4`%&0*2'@`%$ZZ\A983T*L"&AP`2E`
  3421. + M"&0I0`B*<`(I0`B&*4`(K"E\````A`BHD\DL>``$3J[^VBE`"H1.NO4H*4`*
  3422. + MB&8*2&P!ADZZ]0183R!L"HA.NO6X*4`*C"QL"H@@5BQH`!0I3@J80>\!,$ZN
  3423. + M_[XI;P$P"I!.NO8@3KK[K"!L"H0@*`"L9Q#E@")`(BD`-.6!*4$*E&`&*6@`
  3424. + MA`J42A5F``#H0>P!GB((+&P*_"0\```#[DZN_^(L`$'L`:0B"$ZN_^(N`$'L
  3425. + M`:HB"$ZN_^(J`$J&9PA*AV<$2H5F(DJ&9P8B!DZN_]Q*AV<&(@=.KO_<2H5G
  3426. + M!B(%3J[_W&$`^W)P`2\`+P4O`"\'(@;!04ZZ"A0@;`DD("@`'$'O`5AA`/R>
  3427. + M3^\`$'P`?@!@4")L"20@:0`D(#!X`&<^(@!#[P`P)`DL;`K\=D#EBTZN_FY*
  3428. + M@&<F(FP))"!I`"31QR`H``1G""(")`!.KOR.0>\!2$/O`#!P`6$`_-A2AE"'
  3429. + M(&P))+RH`!QMIF```LPL;`K\3J[_RB@`3J[_Q"H`?@`@;`J$+"@`X&8H?@%!
  3430. + M[`&P(@@D/````^U.KO_B+`!F$D'L`;(B"$ZN_^(L`&8$80#ZI"\'+P9P`"\`
  3431. + M+P4B!,%!3KH)1D'O`5AP`6$`^]8@/```!1IA`/J.($`Q?`0``!(O0``\<$#E
  3432. + MB&$`^GI/[P`0?D#ECR]``3A@`E*-$!5(@$C`0>P'10@P``,(`&;L$!5G``(6
  3433. + M<B*P`68P4HTF36`0<"JP%68(2BT``6<"4HU2C1`59P9R(K`!9N8D31`5<B*P
  3434. + M`68"4HU\`F!4<">P%68@4HTF36`"4HT0%6<&<B>P`6;T)$UP)[`59@)2C7P!
  3435. + M8"XF36`0<%RP%68(2BT``6<"4HU2C1`59Q)R(+`!9PQR"K`!9P9R";`!9MHD
  3436. + M37P`($LJ"IJ+(`52@"](`"AA`/FV)D!*KP%,9B`@!2!+(F\`*$ZZ&I)",U@`
  3437. + M0>\!2")+<`!A`/M@8`#_)MJ%<A#:@;J';Q0@;P$X3KH;/"`%80#Y=BX%+T`!
  3438. + M."\*(`8@2R)O`"QR`6$`^ZY83R(+)"\!."8'+&P*_$ZN_+@J`&P00A(O+P`H
  3439. + M2&P!N$ZZ\@I03TJ%9B(O"B`&($LB;P`L<@!A`/MT0>\!3")+<`!A`/KH6$]@
  3440. + M`/ZL>@$@;P`L0J@`"$(H`!%"*``0+PH@!B!+(F\`+'("80#[0$'O`4!P$&$`
  3441. + M^B983R(+)"\`+"QL"OQ.KOS**`!F/&`J>@`B;P`LTOP!&$'O`3QP`6$`^B!*
  3442. + M@&8$>&=@$B(O`"PL;`K\3J[\Q"@`2H1GTB(O`"PL;`K\3J[\OG!TT("X@&<*
  3443. + M2&P!S$ZZ\5983TJ%9R(O"B`&($LB;P`L<@!A`/K`0>\!3")+<`!A`/HT6$]@
  3444. + M`/WX("\!0"!O`41.NA5V0>\!2$/O`3QA`/HJ($M.NAH"8`#]UB!O`3A.NAGV
  3445. + M(&\`+$ZZ&>YA`/B20>P!YDZZ"'HI0`$09@A![`'L*4@!$$'L`?).N@AD*4`!
  3446. + M)&8&*6P!$`$D0>P!_$ZZ"%`I0`$H9@A![`("*4@!*$'L`@9.N@@Z*4`!+&8(
  3447. + M0>P"#"E(`2Q![`(43KH()"E`"J!F"$'L`AXI2`J@("\!3"!O`5`B;`J<3KHG
  3448. + M1G``3KH=,$S?;/S>_`$L3G5(YP,`3KKS_BX`?`!@"B\&3KKR9EA/4H:\AVWR
  3449. + M3-\`P$YU("\`!"\'+@!AU$ZZ\=I.NO=0(&P*B$ZZ\)@O!TZZ[/I83RX?3G4@
  3450. + M+P`$+P<N'V#4``">_``,2-<!`W#_WOP`#$YU44](UP,`4$].=4CG,`(B$$HH
  3451. + M``UG!'``8!PD"28`+&P*_$ZN_]8B`%*`9@A.N@C0</]@`B`!3-]`#$YU44](
  3452. + MYS\V+@`J229(+!,O1@`H+T@`+$HK``UG!G``8```C$HK``QG9B9-U\=Z`&!8
  3453. + M)$U@`E**M<MD!G`*L!)F]+?*9@0H"F`&0>H``2@(F(TB+P`H)`TF!"QL"OQ.
  3454. + MKO_0+`!2@&8(3KH(6G#_8#[:AK:&9C9+Z@`!GH9P`$ZZ]8!.NO6P2H!F(DJ'
  3455. + M9J1@'"(&)`TF!RQL"OQ.KO_0*@!2@&8(3KH('G#_8`(@!4S?;/Q03TYU64](
  3456. + MYS\"+@`L$"]!`!Q**``-9P1P`&!24X$F`2(&)`<L;`K\3J[_OBH`3J[_?"@`
  3457. + M4H5G!$J$9PX@!$ZZ!M@I0`JD</]@)"(&=``F`DZN_[XL`%*`9P1*A&<.(`1.
  3458. + MN@:V*4`*I'#_8`(@!DS?0/Q83TYUGOP!`$CG/P8N`"I(+!4J+0`(("T`!&<*
  3459. + M(@`L;`K\3J[_IA@M``U(A$C$($U.NA=H2H1G!'``8$0B!D'O`"`D""QL"OQV
  3460. + M0.6+3J[^:"@`2H=F"B(&3J[_W$J`9QI*A&<2</^Z@&<,(@(D!4ZN_T9*@&<$
  3461. + M<`!@!DZZ!R1P_TS?8/S>_`$`3G4@+P`$2.<@`B(`+&P*_'0`3J[_-$ZN_WQT
  3462. + M+D8"L()7P40!2(%(P2`!3-]`!$YU("\`!"!O``@B;P`,GOP`$$CG-Q8N`"9)
  3463. + M*DA\`&&X2H!F?"('+&P*_'0!3J[^5DJ`9VPB!T'L`B0D"'8$3J[_T%F`9E(B
  3464. + M!R0\```G$$ZN_S1*@&="(@=![P`@)`AV$$ZN_]9R";"!;RYPF[`O`"!F)D'O
  3465. + M`"4B""0+3J[\T"H`0>\`)M'`(@@D#4ZN_-!2@&<&4H5G`GP!(@=T`$ZN_E8@
  3466. + M!DS?:.S>_``03G4@+P`$(B\`")[\`A!(YS\&+@!P_R]``B@O00`D(@<L;`K\
  3467. + M=`!V`4ZN_[XO0``@(@=.KO^^+`!.KO]\*@`O0`(L9@``PB@O`"0B!R0$=O].
  3468. + MKOXXL()F``"NO()L``">*@2:AB@%(`1R`4A!+'@`!$ZN_SHJ0$J`9FIR`DA!
  3469. + M3J[_*.*(*@`,A0```@!M$"`%<@%(04ZN_SHJ0$J`9D9Z0.>-2^\`*#`\`?]R
  3470. + M`$'O`"@0P5'(__Q@++B%;P0@!6`"(`0F`$ZZ\U(B!R0-+&P*_$ZN_]"P@V<*
  3471. + M3J[_?"]``BQ@!IB#2H1NT$'O`"BQS6<,(DT@!2QX``1.KO\N*B\"+&8$0J\"
  3472. + M*"PO`""\KP`D;`XB!R0&+&P*_';_3J[_OBPO`BAG"B`%3KH$'BE`"J0@!DS?
  3473. + M8/S>_`(03G6>_`$(2.<W%BX`)DDJ2"P52BT`#68``1@@!P2````$`&<@!(``
  3474. + M``0`9TI3@&=84X!G7%.`9UY3@&=F4X!G;&```.Y*+0`,9R8@!D'O`21#[P$@
  3475. + M80#]UDJ`9Q0@+P$D-T```B`O`2`V@'``8```RG`98```OB(&+&P*_$ZN_R@F
  3476. + M@'``8```LB:&<`!@``"J<`!@``"D(`8B$V$`_C9@``"8*U,`"'``8```CBH3
  3477. + M2JT`!&8.(A4L;`K\3J[^C"M```0@+0`$9V(D`"(%+&P*_$ZN_EQ*@&92(@9!
  3478. + M[P`@)`AV0.6+3J[^:$J`9SXB!4ZN_Z8B+0`$3J[_IB(&3J[_W"("=`!.KO]&
  3479. + M&WP``0`-*H(K0@`$0>\`("((+&P*_$ZN_[A*@&<$(`)@#DZZ`]Q@!G`6*4`*
  3480. + MI'#_3-]H[-[\`0A.=2`O``0B+P`(+V\`#``$2.</!BHO`!PL`2X`<`Y.NA4.
  3481. + M*D!*@&8*<`PI0`JD</]@3D/5(L="F2+&0BT`#2('+&P*_$ZN_R@;0``,2'K^
  3482. + M=$AZ^]I(>OMD2'KZK$AZ^G9(>OIH(`4@34/Z^E!.NNRL3^\`&"@`;`8@34ZZ
  3483. + M$T8@!$S?8/!.=2`O``0B+P`(+V\`#``$+V\`$``(+V\`%``,+V\`&``02.<-
  3484. + M`"@O`!0J+P`0+@!P`$J!9@1P0.6(`$```2\`(`=R_V$`_T983TJ`9D!P`$J$
  3485. + M9@1P0.6(`$```B\`(`5R_V$`_RA83U.`9B)P`$JO`!QF!'!`Y8@`0``"+P`@
  3486. + M+P`<<O]A`/\&6$]5@&<00>P"*B](`!!,WP"P3OKIL$S?`+!.=0``(&\`!$CG
  3487. + M(Q8J2'X`0J<L;`K\<@(D#TZN_QQ/[P`$)D!*@&=2(@UT_DZN_ZPN`&=&(@<D
  3488. + M"TZN_YI*@&<Z(BL`!%[`1`!(@$C`+``B!TZN_Z9R`DZN_Q9*AF<4(@U.KO^X
  3489. + M2H!G!'``8#).N@(T8"IP%"E`"J1@(DZN_WQ.N@$H*4`*I$J'9P8B!TZN_Z8@
  3490. + M"V<()`MR`DZN_Q9P_TS?:,1.=2`O``0@;P`((B\`#%E/2.<#-"P!+@`J2$ZZ
  3491. + M[[P@!TZZ[$PF0$J`9T0(*P`!``-G-@@K``,``V<6(&L`&"](`!0@:P`$<`!R
  3492. + M`B)O`!1.D2!K`!0O2``4(`8@:P`$(DTD;P`43I)@"'`-*4`*I'#_3-\LP%A/
  3493. + M3G4@+P`$(&\`""(O``Q(YP,$3-\@P&"`(&\`!)[\`$!(YSL6*DA.NN\Z(`UG
  3494. + M4DH59TXB#4'O`"`D""QL"OQV0'@`3J[\=BX`;39.KO]\+`!2@$ZZ$IPF0$J`
  3495. + M9R2^AF<4)@92@R(-)`M.KOQV2H!O$"`"8`X@0B)+$MAF_"`+8`)P`$S?:-S>
  3496. + M_`!`3G4@+P`$*4`)`$J`9P``AG)GD(%G``""58!G``"`<@F0@6=\4X!G>%.`
  3497. + M9W13@&=P4X!G;%.`9VA3@&=H4X!G:')1D(%G9E.`9V93@&=F4X!G9E.`9V93
  3498. + M@&=F58!G9E.`9V93@&=F4X!G9E6`9V93@&=F4X!G9E.`9V93@&=F4X!G9E6`
  3499. + M9V93@&=F4X!G9E.`9V9@:'``8&9P#&!B<`M@7G`68%IP!V!6<`A@4G`08$YP
  3500. + M$6!*<`)@1G`"8$)P%F`^<`=@.G`68#9P)&`R<!9@+G`68"IP'F`F<!)@(G`E
  3501. + M8!YP)F`:<!-@%G`68!)P'&`.<`U@"G`-8`9P#6`"</].=2\.+&P*_$ZN_WQA
  3502. + M`/[Z*4`*I"Q?3G4@;P`$2.<`!BI((DTL>``$3J[_!"!-3-]@`$[Z#\@@+P`$
  3503. + M2.<!!"X`*FP*L&`.("T`#+"'9@0@#6`(*E5*E6;N<`!,WR"`3G5(YR`"0>P*
  3504. + ML$ZZ'(8@+`J$(BP*D"0`LX("@@!___\I0@JL4H(I0@JH+P$O`$AL!;Q(;`J\
  3505. + M3KKE8D_O`!`L>``$3J[]9BE`"N!G$$'L"KQP`$ZZ')HI0`K<9@I(;`7*3KKF
  3506. + M2EA/3-]`!$YU2.<`!B`L"N!G"B!`+'@`!$ZN_6!*K`K<9S@L>``$3J[_?&`,
  3507. + M(DUP'"QX``1.KO\N(&P*W"QX``1.KOZ,*D!*@&;B(&P*W$ZZ&_(L>``$3J[_
  3508. + M=DS?8`!.=0``(&\`!"`O``@B+P`,(F\`$"]O`!0`!"]O`!@`"%E/2.</-B@O
  3509. + M`"PJ+P`H+`$N`"I)+T@`("QX``1.KOUF)D!*@&<P($L@!$ZN_7(D0$J`9R(@
  3510. + M#6<()4T`*"5%`"0@;P`@(`<B2B(&3J[^1$H`9@0@"F`6(`IG!B!*3J[];"`+
  3511. + M9P8@2TZZ&UQP`$S?;/!83TYU(&\`!$CG``8J2"`-9Q@B32QX``1.KOX^(&T`
  3512. + M#DZZ&S(@34ZN_6Q,WV``3G4@#UE`L*P(_&4`#*)(YP$$*F\`#"!-2AAF_%.(
  3513. + MD<TN"%.'8`H@1U.'(`A"-0@`2H=O"'`OL#5X`&?J3-\@@$YU(`^0?``8L*P(
  3514. + M_&4`#&`@+P`$(&\`#")O``A"IR\O`!@O+P`8+P@O"2\`3KH!.D_O`!A.=2`/
  3515. + MD'P`&+"L"/QE``PL("\`!"!O``PB;P`(2'@``2\O`!@O+P`8+P@O"2\`3KH!
  3516. + M!$_O`!A.=0``O^P(_&4`"_I(YP$$+B\`$"IO``Q@$!`52(!(P+"'9@0@#6`(
  3517. + M4HU*%6;L<`!,WR"`3G6_[`C\90`+R$CG`Q0N+P`<)F\`&"IO`!1\`&`(%[5H
  3518. + M`&@`4H:\AVWT3-\HP$YU(`^0?``,L*P(_&4`"Y1(YP$4*F\`$"XL"O">K`KL
  3519. + MY8<O!TZZY_8F0"(L"NSE@2!-T<$NAR\`+PAAF"`L"O`B`.6!($W1P2(L"NSE
  3520. + M@2)-T\$B+`78DH#E@2Z!+PDO"&$`_W(B+`KLTJP%V)*L"O#E@=O!+H<O#2\+
  3521. + M80#_6"`L!=A+[`KL(AW2@)*53^\`'"K`*4$*[$S?*(!.=2`/D'P`)+"L"/QE
  3522. + M``KZGOP`$$CG/S0J;P!()&\`1$*L!=1*K`789E1P`2E`!=A"K`KD*4`*["E`
  3523. + M"O`@;P!`$A!T+;("9@QT`BE""NA2KP!`8"IT*[("9@I"K`KH4J\`0&`:2&P%
  3524. + MY$ZZ#\Y83TJ`9P9"K`KH8`9P`2E`"N@N+P`X2JP*Y&<*(&P*Y$H09@`!,'`!
  3525. + ML*P*Z&9<("P*\"(L"NRR@&<2L*P%V&<,+R\`/&$`_K983V`,(BP%V+"!9P0I
  3526. + M00KL(BP%V.6!)F\`/-?!8`92K`786(L@+`78L(=L#B)3<"VP$6;J2BD``6?D
  3527. + M("P%V"E`"O`@+`78OH!G4.6`2&P%]"!O`$`O,`@`3KH*;E!/2H!F.%*L!=@@
  3528. + M+`KP(BP*[+*`9Q*PK`789PPO+P`\80#^-EA/8`RR@&8(("P%V"E`"NP@!RE`
  3529. + M!=@I0`KP("P%V+"'9A8@+`KL(BP*\+*`9P0I0`78</]@``1$(BP%V.6!(&\`
  3530. + M/"9P&``4$W8MM`-F"B)P&`!**0`!9AQ*K`KH9@9P_V``!!A2K`78*7`8``74
  3531. + M<`%@``0(4HL@"F<(MA-F!'`!8`)P`")+T\`I20KD(`IG``+&(BP%V.6!(&\`
  3532. + M/"!P&`!P+;`09@`"L+`H``%G"$JO`$QG``*B)FP*Y$*O`"Q\`$*O`"A@`E*+
  3533. + M$!-G!G(]L`%F]"]*`#!Z`&!B(`N0K`KD+P`O+`KD(&\`."\03KH)*D_O``Q*
  3534. + M@&8\+@N>K`KD(&\`,"\03KH(WEA/OH!F$B!O`#`H!7`!+T``+"](`"A@)$JO
  3535. + M`"AF#"!O`#`H!2](`"A@`GP!<!#1KP`P4H4@;P`P2I!FEDJ&9T1*KP`L9CY*
  3536. + MK`7<9R`B+`78Y8$@;P`\+S`8`"\02&P%^$AL")!.N@XL3^\`$"\L"N1.N@AJ
  3537. + MT:P*Y%*L!=A83W`_8``"\"XO`#A*KP`H9P`!)E*L!=A*$V=X(&\`*$JH``1G
  3538. + M#$/K``$I20748```T$JL!=QG2"(L!=CE@2)O`#PD<1C\<"VP*@`!9A8O$"\1
  3539. + M2&P&%DAL")!.N@VZ3^\`$&`<$!)(@$C`+Q`O`"\12&P&1$AL")!.N@V<3^\`
  3540. + M%"\L"N1.N@?:T:P*Y%A/<#]@``)D<`$@;P`HL*@`!&9@(BP%V+*';!)2K`78
  3541. + MY8$@;P`\*7`8``748$9*K`7<9QSE@2!O`#PO,!C\+Q!(;`9R2&P(D$ZZ#4!/
  3542. + M[P`0+RP*Y$ZZ!WY83]&L"N1P.B!O`$"P$&8&<#I@``'^<#]@``'X+RP*Y$ZZ
  3543. + M!UI83]&L"N0@#6<"*H0@;P`H("@`"&<.(B@`#"!`((%P`&```<P@;P`H("@`
  3544. + M#&```<!*KP!,9S`B+`78Y8$@;P`\('`8`'`ML"@``6<:(&P*Y!`02(!(P"\`
  3545. + M+R\`1&$`^NI03TJ`9F1*K`7<9TPB+`78Y8$@;P`\)'`8`'`ML"H``688+RP*
  3546. + MY"\02&P&F$AL")!.N@Q\3^\`$&`>$!)(@$C`+RP*Y"\`+Q!(;`:X2&P(D$ZZ
  3547. + M#%Q/[P`40>P&V%*L!=@I2`KD<#]@``$F2^P*Y"!5$!@JB!]``"=(@$C`+P`O
  3548. + M+P!$*LAA`/IB4$\D0"!L"N1*$&8$4JP%V"`*9PH0+P`G<CJP`68X2JP%W&<@
  3549. + M$"\`)TB`2,`O`"!O`$`O$$AL!MI(;`B03KH+Z$_O`!`0+P`G2(!(P"E`!>!P
  3550. + M/V```+)P.K`J``%F``"@L"H``F8>(&P*Y!`09PHI2`744JP%V&`$0JP%U)/)
  3551. + M*4D*Y&!Z(&P*Y$H09PHI2`744JP%V&!D("P%V+"'9DI*K`7<9R`0+P`G2(!(
  3552. + MP"\`(&\`0"\02&P&]$AL")!.N@MH3^\`$!`O`"=(@$C`*4`%X'`Z(&\`0+`0
  3553. + M9@8?0``G8!IP/Q]``"=@$E*L!=@B`.6!(&\`/"EP&``%U$*L"N00+P`G2(!(
  3554. + MP$S?+/S>_``03G4@#Y!\`!BPK`C\90`%1"`O``0@;P`,(F\`"$*G0J="IR\(
  3555. + M+PDO`&$`^B)/[P`83G6_[`C\90`%&B\'+B\`"&\2OJP%MFX,Y8=![`4:(#!X
  3556. + M`&`&0>P''"`(+A].=2`/D'P`*+"L"/QE``3H2.<#%"PO`!@N+P`4)F\`("IO
  3557. + M`!PO+`E(2&P',DAL")!.N@J*+J\`2"\O`$0O+P!$+R\`1"\O`$0O+P!$+R\`
  3558. + M1"\++PU(;`B03KH*8D_O`#!*AF<8+P9A`/]N+H!(;`<X2&P(D$ZZ"D9/[P`,
  3559. + M""P``0BK9T)2K`B<("P(G+"L"*1N("!L")12K`B4$+P`"@@L``8(JV<N2&P(
  3560. + MD$ZZ#2)83V`B4ZP(G$AL")!(>``*3KH*7E!/8`Y(;`B02'@`"DZZ"DY03TAL
  3561. + M")!.N@ST6$]*AV<(+P=.N@E$6$],WRC`3G4``%E/0?D`````+HAG""!Y____
  3562. + M_$Z06$].=5E/0?D`````+HAG""!Y_____$Z06$].=4CG`Q<J;`KT8!0F57`4
  3563. + MT*T`!")-+'@`!$ZN_RXJ2R`-9NA"K`KT8$PJ;`L`<)S0K`C\)D`@+0`$*4`+
  3564. + M`"EM``@(_"XM`!A*@&8>(&P)(`QH`"0`%&42($\L"$'M``PL>``$3J[])"Y&
  3565. + M(DL@!RQX``1.KO\N2JP+`&:N3-_HP$YU(&\`!")O``@@4")1$!BP&68$2@!F
  3566. + M]I`A2(!(P$YU(&\`!"`O``A#^O_@<@1.^@>"(&\`!")O``@@+P`,2H!O"A(0
  3567. + M$-$2P5.`9O9.=2`O``@@;P`$3E7_]")/<@I.N@(T!D$`,!+!2H!F\"`)$.&_
  3568. + MR6;Z0A"0CTY=3G4``"`O``@@;P`$3E7_]")/(@`"00`'!D$`,!+!YHAF\"`)
  3569. + M$.&_R6;Z0A"0CTY=3G4``#`Q,C,T-38W.#EA8F-D968@+P`((&\`!%%/(D\R
  3570. + M``)!``\2^Q#<Z(AF\B`)$.&_R6;Z0A"0B5!/3G4``"!O``0B;P`(2.<P("1(
  3571. + M<@`@`28!#!``*V<(#!``+68$=@%22!`8!```,&T:#```"6X4)`'E@=*"TH%*
  3572. + M`V8$TH!@XI*`8-XB@2`(D(I3@$S?!`Q.=2!O``0O#2I(""T``P`;9C`@+`BT
  3573. + M3KH$WBM```0K0``09@IP#"E`"J1P_V`6*VP(M``4<//!K0`80JT`#$*M``AP
  3574. + M`"I?3G4``"!O``1(YR`4*D@F36`@<``0$T'L!T4(,``!"`!G"G(`$@!T()*"
  3575. + M8`1R`!(`%L%*$V;<(`U,WR@$3G4``)[\`%!(YS$V0_H`A'``+'@`!$ZN_=@J
  3576. + M0$J`9@9P%$ZZZ:Y^`"!L"2P>*/__(`=#[P`<8`(2V%.`9/I"-W@<0>\`'"E(
  3577. + M",1#[`C,1^P(X"Q-D<B5RG``(@!T?=2"=BA.KOZD<!1.NNEH3-]LC-[\`%!.
  3578. + M=2HJ(%-T86-K($]V97)F;&]W("HJ``!%6$E4``!I;G1U:71I;VXN;&EB<F%R
  3579. + M>0!*@&H``!Y$@$J!:@``#$2!80``($2!3G5A```81(!$@4YU2H%J```,1(%A
  3580. + M```&1(!.=2\"2$$T`68``")(0$A!2$(T`&<```:$P3`"2$`T`(3!,`)(0C("
  3581. + M)!].=2\#=A`,00"`9```!N&944,,00@`9```!NF964,,02``9```!N6954-*
  3582. + M06L```;CF5-#-`#FJ$A"0D+FJDA#@,$V`#`"-`-(0<3!D()D```&4T/0@7(`
  3583. + M,@-(0^>X2$#!028?)!].=0``2.=P`"0`9R!*@68$0H!@&"8`QL%(0L3!2$)"
  3584. + M0M:"2$'`P4A`0D#0@TS?``Y.=0``("P)*`1``?0N0$[Z_F```"!O``0@"$H8
  3585. + M9OQ32)'`(`A.=0``(&\`!"`O``@B?`````!*$&<*L!AF^$/H__]@\B`)3G4@
  3586. + M;P`$(F\`""`O``Q*@&<04X`2&+(99@Q*`6<$4X!J\G``3G5N!'#_3G5P`4YU
  3587. + M```@;P`$(F\`"!(8LAEF"$H!9O9P`$YU;@1P_TYU<`%.=2)O``@@;P`$("\`
  3588. + M#"((8`00V6<(4X!D^&`&0AA3@&3Z(`%.=2)O``@@;P`$("\`#"((2H!O%K')
  3589. + M90S3P-'`$2%3@&;Z8`80V5.`9OH@`4YU(&\`!"`O``A(YP,4+@`J2&82(`UF
  3590. + M!'``8&@@34ZZ`&YP`&!>(`UF"B`'3-\HP$[Z`<@F356+,#Q__\!32,#E@"P`
  3591. + M"!,`#V<,#&N``/_^9@0L*__R(`=.N@&@)D!*@&8$<`!@'KR'8P0@!V`"(`8@
  3592. + M32)+8`(2V%.`9/H@34ZZ``X@"TS?*,!.=2!O``0@"&8"3G59@$CG/#(B+`KT
  3593. + M9@XI?````!8*I$S?3#Q.=2)!L(%O$B0!U*D`!`:"````%+"";`)@""(I``!G
  3594. + MU&#@)@$&@P```!"P@VW&9Q(D0T*"-"H``FNZY8K6@EB#8.@D0#0J``!JJ@BJ
  3595. + M``<``$*#-BH``@)#?__EBTIJ``)K0$?R.`1*:P``:S9"A#@K``("1'__Y8S8
  3596. + M@UB$Y(Q8@TIK``)J!`!$@``U1``":Q(J!.6,-#)(!`)"@`"*0C6%2`1"A#@J
  3597. + M``!G3.6,1(1'\DC\2FL``&L^0H0X*P`"Y8Q"A3HJ``("17__Y8W8A5B$6(/D
  3598. + MC$IJ``)J!`!$@``W1``":Q(J!.6,-#-(!`)"@`"*0C>%2`37J0`()BD`!+:L
  3599. + M!T!N#+:I``AF.DJI``!G-"`L"O0@0+*`9@PI:0``"O1@$"!H``"RJ```9O8A
  3600. + M:0`````@*0`$!H`````4+'@`!$ZN_RY,WTP\3G4@+P`$2H!F#"E\````%@JD
  3601. + M<`!.=4CG/C)6@`*`_____`R```'__&X``+BPK`=`;@``L"8L"O1G``"H(D.P
  3602. + MJ0`(;C(B+`KXLJD`#&8H1>D`$$I2:Q!"A#@J``("1'__Y8RPA&\:0H0X*@`"
  3603. + M:PCEC$7R2`1@W"8I``!G9B)#8+X(Z@`'``!'\@@$0H6PA&<\+`2<@%F&9@0@
  3604. + M!&`PY(Y*:@`":@0`1H``*@#DC3=&``(W10``-44``GH$2D9K#C0R2`0"0H``
  3605. + MC$(UAD@$)BD`"):`EH4C0P`((`I8@$S?3'Q.=2H`L*P'0&H$("P'0"@`!H``
  3606. + M```4(BP*^"QX``1.KO\Z2H!F"BE\````#`JD8,PB0$7I`!`C;`KT```I20KT
  3607. + M(T0`!"-L"O@`#"8$EH5G*%F#9R0C0P`(1_)8!#5\@````.2--44``C=%``#D
  3608. + MBP!#@``W0P`"8!1"J0`(-7R`````Y(P`1(``-40``B`*6(!,WTQ\3G4@;P`$
  3609. + M("\`""(O``PB;P`064](YP\V+`$N`"I(+TD`('`!OH!C``"R)DW7QB`'58!F
  3610. + M)"\++PT@32)++&\`*$Z64$]*@&\``)(@!B!-(DM.NOA,8```A"`'XH@B!DZZ
  3611. + M^R8B3=/`(`8@34ZZ^#(D37H`>`%@*B\-+PL@2R)-+&\`*$Z64$]*@&H24H75
  3612. + MQK7+9PH@!B!+(DI.NO@$U\92A+B'9=*US6<*(`8@32)*3KKW[B9O`"`@!2(&
  3613. + M($TB2V$`_U(@2M'&(`>0A5.`(@8B2TS?;/!8CV``_SI,WVSP6$].=4[ZZMI.
  3614. + M^NK2("\`!$CG`00N`"IL"/1@""!M``1.D"I5(`UF]$OL"$QP!L"M`!A5@&88
  3615. + M("T`!)"M`!!G#B(M`!P@;0`0P4%.NNH0($TJ4"`-9M8@!TS?((!.^N*T("\`
  3616. + M!"!O``@O#2(`*DA2E4/M``@@$5*1&X$(#"`9#(````(`;11![0`,(FT`!'(!
  3617. + MP4%.N@'P0JT`""I?3G6>_`(,+PTJ;P(40J\`#$*O``0O30`(2&\"'"\O`AQ!
  3618. + M^O^J0^\`#$ZZ"`I03R`O``QG$$'O`!`B;P`(<@'!04ZZ`:8(+0`%`!MF"`@M
  3619. + M``0`&V<$</]@!"`O``0J7][\`@Q.=2`O``0@;P`(64](YP,$+@`J2'P`'T``
  3620. + M#W)!TH'"K0`89@P([0`%`!MP_V```4!P,\"M`!A5@&=0<$Q&`,"M`!AR0-*!
  3621. + ML(%F#`CM``$`&T*M``Q@-`@M``4`&V<&</]@``$,<&Y&`,"M`!AR;D8!L(%F
  3622. + M#`CM``$`&T*M``Q@"G``*T``#&```.8@+0`,L*T`%&PR(&T`!%*M``0@!Q"`
  3623. + M4JT`#`@M``8`&V<.<@J^@68(($U.N@(`+`!*AF<``*H@!F```*H(+0`"`!MG
  3624. + M+D*M``P@+0`<0>\`#W(!3KKH@"P`4H!F"`CM``4`&V!R(`93@&=L".T`!``;
  3625. + M8&1*K0`49B`@34ZZ]L!*@&<*".T`!0`;</]@6'``*T``#"MM`!``!"`M``RP
  3626. + MK0`4;0@@34ZZ`88L``CM``$`&R!M``12K0`$(`<0@%*M``P(+0`&`!MG#G(*
  3627. + MOH%F""!-3KH!6BP`2H9G!"`&8`9R`!('(`%,WR#`6$].=2!O``0@+P`((B\`
  3628. + M#")O`!!93TCG#Q`L`2X`)DDO2``4(`8B!TZZ^`XJ`'@`2H=G!$J&9@9P`&``
  3629. + M`/QP,,"K`!AF"G!!T(#`JP`89@P(ZP`%`!MP`&```-YP,\"K`!A5@&=0<$Q&
  3630. + M`,"K`!AR0-*!L(%F#`CK``$`&T*K``Q@-`@K``4`&V<&<`!@``"J<&Y&`,"K
  3631. + M`!AR;D8!L(%F#`CK``$`&T*K``Q@"D*K``QP`&```(1*JP`49DP(*P`"`!MF
  3632. + M1"!+3KKUC$J`9SH(ZP`%`!MP`&!@(&\`%!`8(FL`!!*`4JL`!%*K``Q3A5*$
  3633. + M+T@`%'(*L`%F#@@K``8`&V<&($M.N@`^("L`#+"K`!1L!$J%;L)*A6\6($M.
  3634. + MN@`F("L`'"(%(&\`%$ZZYL#8@"`$(@=.NO9P3-\(\%A/3G4@;P`$2.<!!"I(
  3635. + M(`UG``"@<$'0@,"M`!AF+"!M`!!#[0`$(LA"F4(M`"!P`"+`""T`!P`;9P8(
  3636. + MK0```!L(K0`$`!M@``"*2JT`%&=$("T`#&H&<@`K00`,("T`#&<H(BT`'"!M
  3637. + M`!#!04ZZYD(N`%*`9@@([0`%`!M@#+ZM``QG!@CM``0`&RMM`!``!$*M``QP
  3638. + M,,"M`!AF$@@M``<`&V<&</S!K0`8<`!@)'#_8"!^`$OL"$Q*K0`89PP@36$`
  3639. + M_T9*@&<"?O\J52`-9N@@!TS?((!.=2!O``0B;P`(+V\`#``$+V\`$``(GOP`
  3640. + M-$CG+S8F;P!@*F\`7$CO`P``+$(O`#M"+P`Z0B\`.4(O`#@??``@`#="KP!4
  3641. + M</\O0`!00B\`-GX`?`!%[P`\8$IP`"!O`"P0$'(@D(%G(E>`9R91@&<258!G
  3642. + M!E>`9R)@,A]\``$`.V`>'WP``0`Z8!8??``!`#E@#A]\``$`.&`&'WP`,``W
  3643. + M4J\`+"!O`"Q*$&:N<`&P+P`[9@8??``@`#=R*B!O`"RR$&8>+&\`,")66)8B
  3644. + M$2]!`%1L"$2O`%0?0``[4J\`+&`,0^\`5$ZZ\PK1KP`L(&\`+!`0<BZP`69&
  3645. + M4J\`+'`J(&\`++`09APB;P`P(%%8D2`0+T``4&P&</\O0`!04J\`+&`60^\`
  3646. + M4$ZZ\L@J`&8&0J\`4&`$VZ\`+!]\`"``-W``(&\`+!`0<DR0@6<4<AR0@6<&
  3647. + M68!G"F`2'WP``@`V8`8??``!`#92KP`L(&\`+%*((F\`+!`1<@`2`!]``"0O
  3648. + M2``F<%"2@&<``1!1@6<``1QP"Y*`9P`!T%.!9U!;@6=,6X%G(E.!9P`!`E.!
  3649. + M9P``ZE>!9P`!@%6!9P``\%>!9P``ZF```;@D;P`P<`*P+P`V9@X@4EB2(E`@
  3650. + M$S*`8``"2B!26)(B4"*38``"/B)O`#`@45B1*!!J!'X!1(1*AV<,1>\`/1]\
  3651. + M`"T`/&`B2B\`.F<,1>\`/1]\`"L`/&`02B\`.6<,1>\`/1]\`"``/'P!(`0@
  3652. + M2DZZ\1XJ`"`O`%!F!DJ$9P`!Y"`O`%!J!G(!+T$`4"@O`%"8A6\<($K1Q"`%
  3653. + M(DI.NO2T<C`@2F`"$,%3A&3Z*B\`4-R%(`53@&8``000$K`O`#=F``#Z2J\`
  3654. + M4&8``/)"$F```.P@+P!0:@9P""]``%`??``!`#9P`K`O`#9F$")O`#`@45B1
  3655. + M(!!X`#@`8`HB;P`P(%%8D2@0$"\`)')UL`%G`/]:<F^P`68>2B\`.&<,1>\`
  3656. + M/1]\`#``/'P!(`0@2DZZ\(Y@`/\^2B\`.&<2'WP`,``\1>\`/A]\`'@`/7P"
  3657. + M(`0@2DZZ\*HJ``@O``4`)&8`_Q1![P`\3KKQ6F``_P@B;P`P(%%8D210(`IF
  3658. + M!$7Z`/(@2DH89OQ3B)'**@@@+P!0:P2PA6\$+T4`4"PO`%!@('P!(F\`,"!1
  3659. + M6)$@$!]``#Q"+P`]8`9P`&```*Q%[P`\("\`5+"&;`AR`"]!`%1@!)VO`%1*
  3660. + M+P`[9QY@"'``$!H@2TZ54X9L]&`&($MP($Z54Z\`5&ST8&I*AV8,2B\`.68&
  3661. + M2B\`.F=&$!)R(+`!9PQT*[`"9P9T+;`"9C)*AFLNLB\`-V828`IP`!`O`#<@
  3662. + M2TZ54Z\`5&SP<``0&B!+3I53AF`*<``0+P`W($M.E5.O`%1L\&`(<``0&B!+
  3663. + M3I53AFST("\`)DS?;/3>_``T3G4``"!O``0B;P`(+V\`#``$+V\`$``(GOP`
  3664. + M#$CG`!0F22I(+V\`'``08#AP);`O``QF)B!O`!BP$&8&4J\`&&`8+PLO#4/O
  3665. + M`!A.NON44$]*@&<&+T``&&`*<``0+P`,($M.E2!O`!@0&!]```PO2``82@!F
  3666. + MMDS?*`#>_``,3G4@;P`$((A8D$*H``0A2``(3G4``"!O``1(YP`&*DA*K0`*
  3667. + M9PHB32QX``1.KOZ8&WP`_P`(</\K0``4<``0+0`/+'@`!$ZN_K`B37`B3J[_
  3668. + M+DS?8`!.=0``(&\`!"`O``A(YP,6+@`J2'#_+'@`!$ZN_K8<`$B&2,8@!E*`
  3669. + M9@1P`&!@<"(B/``!``%.KO\Z)D!*@&8((`9.KOZP8$1!ZP`*(,T71P`)%WP`
  3670. + M!``(0A@0QI/)3J[^VB=``!`@#6<((DM.KOZ>8!I!ZP`8)T@`%$'K`!0G2``<
  3671. + M0JL`&!=\``(`("`+3-]HP$YU+P@O`$ZY```"M%!/3G4``````^P````!````
  3672. + M````/!(````!`````0````H````````#\@```^H```)T<&%T:```:&5L<```
  3673. + M=F5R<VEO;@``````````````"4P````!````!@````````E0`````0````P`
  3674. + M```````)5`````$`````````````````````<``E<PH`)7,``%5S86=E.B`E
  3675. + M<R!;+7!=(%LM+7!A=&A=(%LM+6AE;'!=(%LM+79E<G-I;VY=(&1I<BXN+@H`
  3676. + M`$=.52!F:6QE=71I;',@,RXV`````)0``$]K```````4````````````````
  3677. + M````K&-O;G-O;&4Z```E<SH@``!I;G1U:71I;VXN;&EB<F%R>0```'1I;65R
  3678. + M+F1E=FEC90````#_____9FEF;RYL:6)R87)Y```````````````````!#``!
  3679. + M```````````!#@```````````````$`H(REA;&QO8V$N8PDQ+C$`````````
  3680. + M``````!&86EL960@=&\@8W)E871E('1I;65R``!U<V5R(&EN=&5R<G5P=```
  3681. + M`````$YO(&UE;6]R>0```&$`1F%I;&5D('1O(&-R96%T92!T:6UE<@``3DE,
  3682. + M.@``3DE,.@``3DE,.@``*@!.24PZ``!);G9A;&ED('=I;&1C87)D("5S`$5R
  3683. + M<F]R(&5X<&%N9&EN9R!A<F=U;65N=',`55-%4@``=7-E<@``55-%4DY!344`
  3684. + M`$A/344``',Z``!32$5,3`!B:6XZ<V@``$A/4U1.04U%``!A;6EG80";,"!Q
  3685. + M``!&86EL960@=&\@:6YI=&EA;&ES92!)+T\``&%M:6=A('-P96-I9FEC(&5R
  3686. + M<F]R``````)$56YK;F]W;B!E<G)O<@!N;W0@;W=N97(`;F\@<W5C:"!F:6QE
  3687. + M(&]R(&1I<F5C=&]R>0!N;R!S=6-H('!R;V-E<W,`:6YT97)R=7!T960@<WES
  3688. + M=&5M(&-A;&P`:2]O(&5R<F]R`&YO('-U8V@@9&5V:6-E(&]R(&%D9')E<W,`
  3689. + M87)G=6UE;G0@;&ES="!T;V\@;&]N9P``97AE8R!F;W)M870@97)R;W(`8F%D
  3690. + M(&9I;&4@;G5M8F5R`&YO(&-H:6QD('!R;V-E<W,``&YO(&UO<F4@<')O8V5S
  3691. + M<V5S`&YO="!E;F]U9V@@;65M;W)Y`'!E<FUI<W-I;VX@9&5N:65D`&)A9"!A
  3692. + M9&1R97-S`&)L;V-K(&1E=FEC92!R97%U:7)E9`!M;W5N="!D979I8V5S(&)U
  3693. + M<WD``&9I;&4@97AI<W1S`&-R;W-S+61E=FEC92!L:6YK`&YO('-U8V@@9&5V
  3694. + M:6-E``!N;W0@82!D:7)E8W1O<GD`:7,@82!D:7)E8W1O<GD``&EN=F%L:60@
  3695. + M87)G=6UE;G0``&9I;&4@=&%B;&4@;W9E<F9L;W<`=&]O(&UA;GD@;W!E;B!F
  3696. + M:6QE<P!N;W0@82!T>7!E=W)I=&5R``!T97AT(&9I;&4@8G5S>0``9FEL92!T
  3697. + M;V\@8FEG``!N;R!S<&%C92!L969T(&]N(&1E=FEC90!I;&QE9V%L('-E96L`
  3698. + M`')E860M;VYL>2!F:6QE('-Y<W1E;0!T;V\@;6%N>2!L:6YK<P``8G)O:V5N
  3699. + M('!I<&4`;6%T:"!A<F=U;65N=`!R97-U;'0@=&]O(&QA<F=E``!)+T\@<W1R
  3700. + M96%M(&5M<'1Y``!F:6QE(&YA;64@=&]O(&QO;F<``&1I<F5C=&]R>2!N;W0@
  3701. + M96UP='D`=&]O(&UA;GD@<V]F="!L:6YK<R`H;&]O<#\I`````EX```)L```"
  3702. + M=@```I````*@```"N````L(```+<```"]````P8```,6```#*````SH```-,
  3703. + M```#7@```VH```.````#E````Z````.R```#P@```](```/B```#]```!`@`
  3704. + M``0<```$+@``!#X```1,```$9```!'(```2(```$F```!*0```2R```$Q```
  3705. + M!-8```3J```$_@```"8``&1O;W(N)6QX+B5L>```3F\@;65M;W)Y````````
  3706. + M`````````0```#]03U-)6$Q97T-/4E)%0U0`+2T``"5S.B!O<'1I;VX@8"5S
  3707. + M)R!I<R!A;6)I9W5O=7,*`"5S.B!O<'1I;VX@8"TM)7,G(&1O97-N)W0@86QL
  3708. + M;W<@86X@87)G=6UE;G0*```E<SH@;W!T:6]N(&`E8R5S)R!D;V5S;B=T(&%L
  3709. + M;&]W(&%N(&%R9W5M96YT"@``)7,Z(&]P=&EO;B!@)7,G(')E<75I<F5S(&%N
  3710. + M(&%R9W5M96YT"@`E<SH@=6YR96-O9VYI>F5D(&]P=&EO;B!@+2TE<R<*`"5S
  3711. + M.B!U;G)E8V]G;FEZ960@;W!T:6]N(&`E8R5S)PH````E<SH@:6QL96=A;"!O
  3712. + M<'1I;VX@+2T@)6,*`"5S.B!O<'1I;VX@<F5Q=6ER97,@86X@87)G=6UE;G0@
  3713. + M+2T@)6,*``!5;FMN;W=N('-Y<W1E;2!E<G)O<@``)7,Z(```.B`E<P``````
  3714. + M`$```"`@("`@("`@("@H*"@H("`@("`@("`@("`@("`@("`@2!`0$!`0$!`0
  3715. + M$!`0$!`0$(2$A(2$A(2$A(00$!`0$!`0@8&!@8&!`0$!`0$!`0$!`0$!`0$!
  3716. + M`0$!`0$0$!`0$!""@H*"@H("`@("`@("`@("`@("`@("`@("`A`0$!`@````
  3717. + M````````````````````````````````````````````````````````````
  3718. + M````````````````````````````````````````````````````````````
  3719. + M``````````````````````````````````````````````````````^@```(
  3720. + M;@``````````````````````````````````````````")``````````````
  3721. + M````````````````````````````````````````````````````````````
  3722. + M``````````````````(`__\````.``X```````````````#__P````0`!```
  3723. + M`````"NB```(N/__````!``$````````*[@``````````````#4````T````
  3724. + M)````!0````\````+````!P```"F````P````2````$4```%L@``!:X```6J
  3725. + M```%I@``!:(```6>```%F@``!98```62```%C@``!8H```6&```%@@``!7X`
  3726. + M``5Z```%=@``!7(```5N```%:@``!68```5B```%7@``!5H```56```%4@``
  3727. + M!4X```5*```%1@``!4(```4^```%.@``!38```4R```%+@``!2H```4F```%
  3728. + M(@``!1X```4:```"6@``"&X```A,```(W````^P````"````````".P```C8
  3729. + (`````````_(:
  3730. + `
  3731. + end
  3732. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/sort.uue emacs-18.59/amiga/amiga-extra/amiga/c/sort.uue
  3733. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/c/sort.uue    Thu Jan  1 00:00:00 1970
  3734. --- emacs-18.59/amiga/amiga-extra/amiga/c/sort.uue    Tue Jul 12 10:36:08 1994
  3735. ***************
  3736. *** 0 ****
  3737. --- 1,650 ----
  3738. + begin 666 sort
  3739. + M```#\P`````````"``````````$``!F=```"L@```^D``!F=2.=^_B1()`!)
  3740. + M^0`````L>``$+P)(YP#@)FX!%"(K`*QG#.6)($$B*``TY8E@!B(/DJL`.G0`
  3741. + M(#P``!T<LJP)(&0((BP)(-"!=`$F02(\``$``4ZN_SI*@&8(3-\'!&```D`@
  3742. + M0"1`(D`@/````G:9_``````@W%.`9OH@'&<.($G1W-70((HD25.`8/`H2=G\
  3743. + M`````"E\```='`HD3-\'`"E."@!*`DS?``1([(``"@AG2"`,!(``````!H``
  3744. + M`!T<T*P)("(`!(````"`#&X`)``4;1@I0`H@*4$*')*L"2!![`H8((%.KOTD
  3745. + M8`(N0"`L"2`O0``$T:P*)"(/DHL&@0```(`I00G<0JP*!'``(CP``#``3J[^
  3746. + MSB9N`11#^@&(<`!.KOW8*4`=%&8&<&1@``#F*6L`F`G\2JL`K&<``'X@:P"L
  3747. + MT<C1R")H`!#3R=/)(`)R`!(9*4D*#-"!7H`"0/_\*4`*%$CG0$`B/``!``%.
  3748. + MKO\Z3-\"`DJ`9@AP%"\`9P`!!"!`*4`*$"`"4X#4@1&R```@`E."4<C_]A&\
  3749. + M`"`@`E."$;P`(B`"$;$@`"`!4<K_^!"\`"(O"&!*0>L`7$ZN_H!!ZP!<3J[^
  3750. + MC"E`"@0O`"1`("H`)&<8+&P=%"!`(B@``$ZN_Z`I0`G\(@!.KO^"(&P*!"\(
  3751. + M2&P)V"!H`"0I:``$"@Q.NDPD3KHVGG``8`0@+P`$)&P*""4`+'@`!`QN`"0`
  3752. + M%&T22JP*&&<,0>P*&%FL"B!.KOTD+DH@+`GT9P0@0$Z03KI+_$ZZ32Q*K`H$
  3753. + M9R`L;!T4(BP)_&<$3J[_IBQX``1.KO]\(FP*!$ZN_H9@$BQX``0@+`H49P@B
  3754. + M;`H03J[_+B)L'11.KOYB("P*)"),D_P`````3J[_+B`?3-]_?DYU9&]S+FQI
  3755. + M8G)A<GD````@#UE`L*P)W&4`408O#2IL&WI@#"\53KHO2%A/*FT`!"`-9O`J
  3756. + M7TYU(`^0?``,L*P)W&4`4-PO#2`O``@O`$ZZ4TA83RI`2H!F'$AL`)QP`"\`
  3757. + M+P!.NBA"8:9(>``"3KI5?$_O`!`@#2I?3G4@#Y!\``RPK`G<90!0F$CG`10N
  3758. + M+P`4)F\`$"`+9@HO1P`03-\H@&"42H=F#"\+3KI1@%A/<`!@,"\'+PM.NE#J
  3759. + M4$\F0$J`9AY(;`"V<``O`"\`3KHGV&$`_SQ(>``"3KI5$$_O`!`@"TS?*(!.
  3760. + M=2`/D'P`$+"L"=QE`%`J2.<`%"IO``P@34/L`-`0&+`99@9*`&;V9Q`O+P`0
  3761. + M+PU.NERF4$\@0&`$0>P))"9((`AF("\-2&P`TB\L',Q"ITZZ)VYA`/[22'@`
  3762. + M`DZZ5*9/[P`40>P))+'+9@9P`2E`&T(@"TS?*`!.=2`/D'P`#+"L"=QE`$^R
  3763. + M+PTJ;P`(+PU.NEG.6$]![`DDL<UG-$'L"4:QS6<L+PU.NEJ*6$]*@&<F2&P`
  3764. + MUB\L',Q"ITZZ)P)A`/YF2'@``DZZ5#I/[P`08`9PS\&M`!@J7TYU(`^0?``0
  3765. + ML*P)W&4`3U`O!BPO`!`@+P`,(&\`%")O``@O""\&+P`O"4ZZ5JI/[P`0L(9G
  3766. + M'DAL`.HO+!S,0J=.NB:D80#^"$AX``).NE/<3^\`$"P?3G4@#Y!\`!2PK`G<
  3767. + M90!.^DCG`10@;!LP(`A*&&;\4XB1P"X((`AR$-"!+P!A`/WR*D!(>``(80#]
  3768. + MZ%!/)D!*AV<J<"\@;!LPL#!X_V<>3KHG8%*L"B@O+`HH+P`O+!LP2&P`]B\-
  3769. + M3KI3U&`<3KHG0E*L"B@O+`HH+P`O+!LP2&P!""\-3KI3MD_O`!0FC2=L&WH`
  3770. + M!"E+&WH@#4S?*(!.=2`/44"PK`G<90!.7DCG`#0F;P`02^P;=F`6(&T`!")+
  3771. + M)%`0&;`:9@9*`&;V9P@J2$JM``1FY"9M``0@"V<:+Q-.NBQV+I-.ND\L*VL`
  3772. + M!``$+HM.ND\@6$],WRP`3G6_[`G<90!.!$CG(P1^`'P`<""^@&<&<@F^@68*
  3773. + M<@%![`XP(8%H`')_OH%B%D'L"!T(,``">`!G"G0!0^P*,".":`"^@6(,=%=!
  3774. + M[`@=Q#!X`&8*=`%![!(P(8)H`+Z!8@QT!T'L"!W$,'@`9A2^@&<0=`F^@F<*
  3775. + M=`%![!8P(8)H`+Z!8B9+[`@=V\<(%0`!9QH(%0`!9P@@!W(@D(%@`B`'0>P:
  3776. + M,!&`>`!@"B`'0>P:,!&`"`!2AUB&#(<```$`;0#_4$S?(,1.=2`/64"PK`G<
  3777. + M90!-."\-("\`#"IO``@K0``(+P!A`/P\*H!"K0`,0JT`!%A/*E].=2`/D'P`
  3778. + M$+"L"=QE`$T&2.<!%"9O`!0J;P`0(%4B2-/M``0@+0`,D\`O`"\)+PA.NDTZ
  3779. + M3^\`#"MM``P`!&!J("T`""(M``2R@&82T(`K0``(+P`O%6$`_!A03RJ`("T`
  3780. + M!"!5T<`B+0`(DH`O"R\!2'@``2\(3KI54$_O`!`N``@K``4`&V<>2&P!&B\L
  3781. + M',Q"ITZZ)`AA`/ML2'@``DZZ44!/[P`0WZT`!`@K``0`&V8<("T`!&>(+P!(
  3782. + M>``*+Q5.NDQB3^\`#$J`9P#_=`@K``0`&V=`2JT`!&<Z("T`!")5T\!R"K(I
  3783. + M__]G*B(M``BP@682TH$K00`(+P$O%6$`^W!03RJ`("T`!%*M``0@51&\``H(
  3784. + M`"`M``1,WRB`3G4@#UE`L*P)W&4`2^I(YP($+"\`%"(O`!`J;P`,*T$`".F!
  3785. + M+P%A`/KF*H!"K0`$*T8`#%A/3-\@0$YUO^P)W&4`2[1(YP,T*F\`'"!O`!@F
  3786. + M4"1+(F\`&-7I``0N%2PM``1*+!L\9UY@%%*+M\ID"!`3L"P;/&;RM\ID`E*+
  3787. + MM\ID4"`'4X=*@&;B8$92B[?*9!H0$W(`$@!(P2`!Y8!![`XP2K`(`&;D8`)2
  3788. + MB[?*9!80$W(`$@!(P2`!Y8!![`XP2K`(`&?DM\ID""`'4X=*@&:\2JT`"&<B
  3789. + M8`)2B[?*9!H0$W(`$@!(P2`!Y8!![`XP2K`(`&;D8`)2B[?*9`@@!E.&2H!F
  3790. + M\B`+3-\LP$YUO^P)W&4`2N)(YP,T*F\`'"!O`!@F4"1+(F\`&-7I``0N+0`,
  3791. + M+"T`$$HL&SQG:&`>4HNWRF0($!.P+!L\9O*WRF0,2H=F!DJM`!1G`E*+M\ID
  3792. + M4"`'4X=*@&;88$92B[?*9!H0$W(`$@!(P2`!Y8!![`XP2K`(`&;D8`)2B[?*
  3793. + M9!80$W(`$@!(P2`!Y8!![`XP2K`(`&?DM\ID""`'4X=*@&:\2JT`%&<B8`)2
  3794. + MB[?*9!H0$W(`$@!(P2`!Y8!![`XP2K`(`&;D8`)2B[?*9`@@!E.&2H!F\B`+
  3795. + M3-\LP$YU(`^0?``8L*P)W&4`2?Z>_``,2.<@-"IO`"0@;P`@)E`@2R)O`"#1
  3796. + MZ0`$(FP;<D*M``0O2``8+TD`$&```.1"$B`M``@B+0`$LH!F%-"`*T``".F`
  3797. + M+P`O%6$`^0Q03RJ`(BT`!.F!(E73P2*+(`J0BR-```0D;P`0(`IG``"(("H`
  3798. + M#&L<("T`!.F`)%75P"\O`!`O"F$`_HQ03R5```Q@$"0M``3I@B)5T\(C;P`4
  3799. + M``PD;P`0(!)K'"(M``3I@215U<$O+P`0+PIA`/V&4$\E0``(8$)*J@`(9QI@
  3800. + M`E*+$!-R`!(`2,$@`>6`0>P.,$JP"`!FZ"(M``3I@2)5T\$C2P`(8!(B+0`$
  3801. + MZ8$@5='!0J@`"$*H``Q2K0`$)F\`%%*+)&\`&+?*9"H@"B(+D($O`$AX``HO
  3802. + M`4ZZ2.)/[P`,)$`O0``49PPB+0`$LJT`#&T`_NX@+P`8D(L@;P`@(4``#$S?
  3803. + M+`3>_``,3G6_[`G<90!(FDCG`S0F;P`<*F\`&!`5?@`>`!`3?``<`'`NOH!F
  3804. + M``">O(!F``"84HT0%7X`'@!2BQ`3?``<`+R'9@X@!^6`0>P*,$JP"`!FWB`'
  3805. + MY8!![`HP)$C5P"`29Q(B!N6!2K`8`&<((`>0AF```)Y*DF<@8`A2C1`5?@`>
  3806. + M`'`POH!G\N6'0>P*,$JP>`!G>G`!8'@@!N6`0>P*,$JP"`!G:&`(4HL0$WP`
  3807. + M'`!P,+R`9_+EAD'L"C!*L&@`9TQP_V!*<"Z^@&8>4HT0%7X`'@!P,+Z`9_+E
  3808. + MAT'L"C!*L'@`9RAP`6`F<"Z\@&8>4HL0$WX`'@!P,+Z`9_+EAT'L"C!*L'@`
  3809. + M9P1P_V`"<`!,WRS`3G4@#U%`L*P)W&4`1X)(YR\4)F\`)"IO`"`0%7X`'@`0
  3810. + M$WP`'`!@"%*-$!5^`!X`(`?E@$'L#C!*L`@`9NI@"%*+$!-\`!P`(`;E@$'L
  3811. + M#C!*L`@`9NIP+;Z`9@`!)E*-$A5^`!X!O(!G(.6'0>P*,$JP>`!G#N6&2K!H
  3812. + M`&<&</]@``(><`!@``(84HL0$WP`'`!@"%*-$!5^`!X`<#"^@&?R8`A2BQ`3
  3813. + M?``<`'`PO(!G\F`04HT0%7X`'@!2BQ`3?``<`+R'9@X@!^6`0>P*,$JP"`!F
  3814. + MWG`NOH!F#B(&Y8%![`HP2K`8`&<2O(!F'B`'Y8!![`HP2K`(`&80+PLO#6$`
  3815. + M_>Q$@%!/8``!EB`'Y8!![`HP2K`(`&<@>@%@`E*%4HT0%7(`$@!(P2`!Y8!!
  3816. + M[`HP2K`(`&;F8`)Z`"`&Y8!![`HP2K`(`&<@>`%@`E*$4HL0$W(`$@!(P2`!
  3817. + MY8!![`HP2K`(`&;F8`)X`"`$D(5F``$N(`5G``$H(`:0AV```2!P+;R`9CIR
  3818. + M`!('2,$D`>6"0>P*,$JP*`!G&!(K``%T`!0!2,+E@DJP*`!G!G`!8```[G``
  3819. + M8```Z%*-$!5^`!X`<#"^@&?R8`A2BQ`3?``<`'`PO(!G\F`04HT0%7X`'@!2
  3820. + MBQ`3?``<`+R'9@X@!^6`0>P*,$JP"`!FWG`NOH!F#B(&Y8%![`HP2K`8`&<2
  3821. + MO(!F'B`'Y8!![`HP2K`(`&80+TT`("]+`"1,WRCT8`#\OB`'Y8!![`HP2K`(
  3822. + M`&<@>@%@`E*%4HT0%7(`$@!(P2`!Y8!![`HP2K`(`&;F8`)Z`"`&Y8!![`HP
  3823. + M2K`(`&<@>`%@`E*$4HL0$W(`$@!(P2`!Y8!![`HP2K`(`&;F8`)X`"`%D(1F
  3824. + M""`%9P0@!Y"&3-\H]$YU(`^0?``,L*P)W&4`1-Q93TCG#A0H+P`@)F\`''P`
  3825. + M>@Q@!%*+4X1*A&\6$!-R`!(`2,$@`>6`0>P.,$JP"`!FXG`#N(!M``"$2],0
  3826. + M'7(`$@!![!HP1^\`%!;P$``0'7(`$@`6\!``$!UR`!(`%O`0`$(;*`;8A6H"
  3827. + M4H3BA"`$YX!![P`40^P`,")Q"``2&+(99@1*`6;V;`0J!&`"+`0@!9"&<@&P
  3828. + M@6[*(`;G@$?L`##7P$'O`!0B4Q`8L!EF#$H`9O9F!B`K``1@`G``3-\H<%A/
  3829. + M3G4@#Y!\`""PK`G<90!$")[\`!1(YS\V?@!\`"]L&W(`,&```Y@F;0`8(&T`
  3830. + M'"1O`$`O2``J2H9F$DJJ``AG#")O`$1*J0`(9@``MB`M``QK("\-+PIA`/C6
  3831. + M+HTO+P!,+T``1&$`^,A/[P`,+T``-&`8(E+3Z@`$(&\`1"Q0W>@`!"])`#@O
  3832. + M3@`T(!5K'B\-+PIA`/?(*D`NKP`X+R\`3&$`][I/[P`,)$!@<"I2(&\`1"10
  3833. + M(&\`,$JH``AG7F`"4HV[[P`X9!H0%7(`$@!(P2`!Y8!![`XP2K`(`&;B8`)2
  3834. + MBK7O`#1D-!`2<@`2`$C!(`'E@$'L#C!*L`@`9N)@'"IJ``@@:@`,+&\`1"1N
  3835. + M``@B;@`,+T@`."])`#0J+P`X(@V:@2`O`#0D`"8*E(,H`DJ%:@)Z`$J$:@)X
  3836. + M`"!O`#!*J``@9UHF0"!O`#@0$&8$2A-G(A030A-"$"\#+P$?0``Q80#[)E!/
  3837. + M+@`@;P`X$*\`*1:"8`PO`R\!80#[#E!/+@!*AV<``BH@;P`P2J@`*&<((`=$
  3838. + M@&```C`@!V```BH@;P`P2J@`)&<T+P4O#6$`_7XN`"Z$+P-A`/UT3^\`#)Z`
  3839. + M9P`!["!O`#!*J``H9P@@!T2`8``!\B`'8``!["`+9P``I$JO`"IG``"<8```
  3840. + MA%*-N^\`.&06$!5R`!(`2,$@`>6`2K,(`&;F8`)2BK7O`#1D$A`2<@`2`$C!
  3841. + M(`'E@$JS"`!FYKOO`#AD1K7O`#1D0!`:<@`2`!`==``4`"!O`"H0,"``L#`0
  3842. + M`&<F$"K__W(`$@`0,!``2(!(P!(M__]T`!0!$C`@`$B!2,&2@&```0J[[P`X
  3843. + M9``!!+7O`#1E`/]R8```^"`+9WA@9E*-N^\`.&06$!5R`!(`2,$@`>6`2K,(
  3844. + M`&;F8`)2BK7O`#1D$A`2<@`2`$C!(`'E@$JS"`!FYKOO`#AD*K7O`#1D)!(=
  3845. + MLAI6P$0`2(!*`&<6$"K__TB`2,`2+?__2(%(P9*`8```BKOO`#AD``"$M>\`
  3846. + M-&6.8'I*KP`J9U`F;P`T8#X0&G(`$@`0'70`%``@;P`J$#`@`+`P$`!G)!`J
  3847. + M__]R`!(`$#`0`$B`2,`2+?__=``4`1(P(`!(@4C!DH!@+KOO`#AD*K7+9;A@
  3848. + M)+J$;`0@!6`"(`0@32)*<@!*@&<.$AB2&68$4X!F]DB!2,$N`4J'9Q8@;P`P
  3849. + M("@`*&<&(@=$@6`"(@<@`6`R+@6>A&<4(&\`,$JH`"AG!B`'1(!@'"`'8!@@
  3850. + M;P`P+V@`+``P4H8J;P`P(`UF`/QB<`!,WVS\WOP`%$YU(`^0?``,L*P)W&4`
  3851. + M0#A(YR\4)F\`)"IO`"!*K!MR9QXO"R\-80#\"E!/2H!F:$JL&SYF!DJL&SAG
  3852. + M!'``8%@N+0`$+"L`!+Z&;`0@!V`"(`8J`&<P(%4B4Q`1<@`2`!`0=``4`)2!
  3853. + M*`)F'B`%<@!*@&<.$AB2&68$4X!F]DB!2,$H`68$*`>8ADJL&S1G!B`$1(!@
  3854. + M`B`$3-\H]$YU(`^0?`!`L*P)W&4`/YR>_``T2.</!"IO`$QP`2]``!0O+`"4
  3855. + M2&\`/&$`\CP@+`"4(BP`F$ZZ/GY2@$AX`@`O`$AO`#AA`/-N+BP`F"Z'80#N
  3856. + M<"]``"PNC4AO`$QA`/(X+`!(;P!`2&\`5&$`]3)/[P`@2H9G``#R?`!Z`&`P
  3857. + M(&\`*-'%2&@`$"\(80#^V%!/*`!*K!L^9P1*A&H$2H1O"$*O`!1@``#"4H9P
  3858. + M$-J`("\`+%.`O(!MQB(O`"SI@2!O`"C1P9#\`!`@*``$L(=O'"P`4H9@`MZ'
  3859. + MO(=N^B\'+R\`'&$`[B!03R]``!@B+P`LZ8$@;P`HT<$@*/_T4H`O`"\H__`O
  3860. + M+P`@3KH^]B(O`#CI@2!O`#31P2]H__0`*"Z-2&\`1&$`\7!/[P`0+`!G,DAO
  3861. + M`"A(;P`\80#T9"ZO`#!(;P`@80#^'D_O``PJ`$JL&SYG!$J%:@1*A6\&0J\`
  3862. + M%&`&2H9F`/\2+PUA`.Y^+J\`/$ZZ/T`NKP`L3KH_."ZO`!Q.NC\P6$\@+P`4
  3863. + M3-\@\-[\`#1.=2`/D'P"M+"L"=QE`#X&GOP"I$CG+S8N+P+0*F\"U$*O`+1*
  3864. + MK!L^9Q0@+`"8+P`O0`"T80#L]EA/+T``N'H`?`!X`&```*!'[P'(U\8O+`"4
  3865. + M+PMA`/!\4$]@)"\280#M]EA/4X<L!2`&Y8`D;P+,U<!@""2J``12AEB*O(=M
  3866. + M]+J';!0D;P+,U<0O$B\+80#P<E!/2H!GQ"PO`"RZAV8*+Q-.NCY\6$]@-$7O
  3867. + M`,C5QB`L`)0B+`"83KH\9E*`2'@"`"\`+PIA`/%8+HHO"V$`\SI/[P`00>\`
  3868. + M<$*P2`!2A7`0W(!8A"]&`"RZAVT`_UI\`$7O`#!@!"3&4H:\AVWX?`%@7B`&
  3869. + MY8!%[P`PU<`@*O_\(@#E@4/O`'#I@$WO`,@@3B(Q&`#I@2)P"`#3P2`2(@#E
  3870. + M@4'O`'#I@"(P&`#I@2!V"`#1P2\(+PEA`/R$4$]*@&\,("K__"52__PD@'P`
  3871. + M4H:\AVV>)&\"S&```[Q*K!L^9P`!?DJ&9P``GB`O`#`B`.6!0>\`<.F`0^\`
  3872. + MR"(P&`#I@2!Q"`#1P2\(2&\`O&$`_"Y03TJ`9VXO#2\O`,!(>``!+R\`Q&$`
  3873. + M[/Y/[P`0""T``0`;9SY2K0`,("T`#+"M`!1N'B!M``12K0`$$+P`"@@M``8`
  3874. + M&V<H+PU.ND9.6$]@'E.M``PO#4AX``I.ND(84$]@#"\-2'@`"DZZ0@I03WP`
  3875. + M0J\`M$J&9@`!6B`O`#`B`.6!0>\`<"0P&`#I@NF`0>\`R")P"`#3PBPI``12
  3876. + MABHO`+"ZAFP<8`+:A;J&;?HO10"P+P4O+P"\80#K$E!/+T``N"`O`#`B`.6!
  3877. + M0>\`<.F`0^\`R"(P&`#I@2!Q"`#1P2`H``0O0`"\4H`O`"\0+R\`P$ZZ.]1/
  3878. + M[P`,("\`,"(`Y8%-[P!P(C88`.F!Z8!-[P#(W<`O3@`H(F\`*"91U\$B*P`(
  3879. + M9PR2DRQO`+C=P2].`,`B*P`,9PR2DR)O`+C3P2])`,1R`2]!`+1@``"&("\`
  3880. + M,"(`Y8%![P!PZ8!#[P#((C`8`.F!('$(`-'!+PTO*``$2'@``2\080#KFD_O
  3881. + M`!`(+0`!`!MG/E*M``P@+0`,L*T`%&X>(&T`!%*M``00O``*""T`!@`;9R@O
  3882. + M#4ZZ1.I83V`>4ZT`#"\-2'@`"DZZ0+103V`,+PU(>``*3KI`IE!/(B\`,.6!
  3883. + M0>\`<-'!4I`D+P`PZ8)#[P#(T\(@$+"I``1F``$$0>\!R-'"+S(8`"\(80#M
  3884. + M6E!/2H!G+B(O`##I@4'O`<C1P4/O`,C3P2\)+PAA`/!"4$\B+P`PY8%![P!P
  3885. + M0K`8`&```,!\`4?O`#1@#B`3L*\`,&\"4Y-2AEB+O(=M[E.'(B\`,.6!+S(8
  3886. + M`&$`ZE`B+P`TZ8%![P',+K`8`$ZZ.P@B+P`TZ8%![P#,+K`8`$ZZ.O983RPO
  3887. + M`#`J!N6%*`;IA&`\);)8!%@`0>\!R-'$0^@`$"#9(-D@V2#90>\`R-'$0^@`
  3888. + M$"#9(-D@V2#90>\`<-'%(*@`!%*&6(5P$-B`O(=MP'P`1^\`-&`0(`;E@"!/
  3889. + MT/P`,"&;"`!2AKR';>Q@``".>@%'[P`T8%0@+P`P(@#E@4/O`'#I@$WO`,@@
  3890. + M3B(Q&`#I@2)P"`#3P2`3(@#E@4'O`'#I@"(P&`#I@2!V"`#1P2\(+PEA`/CN
  3891. + M4$\L`&8&+"\`,)R32H9K"%*%6(NZAVVH*"\`,'P!1^\`,&`0(`;E@"!/T/P`
  3892. + M,";P"`!2AKR%;>SEA2!/T/P`+"&$6``L+P"T2H=F`/P^2JP;/F=V2H9G<B\-
  3893. + M+R\`P$AX``$O+P#$80#I;$_O`!`(+0`!`!MG/E*M``P@+0`,L*T`%&X>(&T`
  3894. + M!%*M``00O``*""T`!@`;9R@O#4ZZ0KQ83V`>4ZT`#"\-2'@`"DZZ/H903V`,
  3895. + M+PU(>``*3KH^>%!/+R\`N$ZZ.7983TS?;/3>_`*D3G4@#Y!\`!"PK`G<90`X
  3896. + M4%E/2.<.-"PO`"0J;P`@)F\`*"`&58!F.$AM`!`O#6$`]^I03TJ`;P``^B!-
  3897. + M(DLBV"+8(M@BV$'M`!`B2"K9*MDJV2K9(-L@VR#;(-M@``#4*@9J`E*%XH4D
  3898. + M32@&F(4@!>F`V\`O30`8<`&Z@&\.+PLO!2\*80#_?$_O``QP`;B`;PXO"R\$
  3899. + M+PUA`/]H3^\`#"I+8$(O+P`8+PIA`/=N4$]'[0`02H!N%B!-*DLB2B#9(-D@
  3900. + MV2#9U/P`$%.%8!@@32I+(F\`&"#9(-D@V2#9<!#1KP`84X1*A6<:2H1FMF`4
  3901. + M($HB32+8(M@BV"+8U/P`$-K\`!`@!5.%2H!FY"IO`""<A"9O`"A@%B!+(DTB
  3902. + MV"+8(M@BV-K\`!#6_``04X9*AF;F3-\L<%A/3G4@#Y!\``RPK`G<90`W&$CG
  3903. + M!Q`N+P`8)F\`%'P`>@!@+DAL`28O$V$`YL8N@&$`]TY03TJ`9A0O$R\L"BQ(
  3904. + M;`$H3KHQLD_O``Q2AE*%6(NZAVW.(`9,WPC@3G4@#Y!\`%2PK`G<90`VOI[\
  3905. + M`$A(YP\T*F\`:&```1I^`"`&<A!.NC6P>@`O30`@+T``'&!X1^\`)"(%TH;E
  3906. + M@4AL`3PO-1@`80#F3%!/)L!2AG`0O(!MXF$`YVPD0$AL`3XO`&$`YC`F0"Z`
  3907. + M2'@`$$AO`#!A`/A$+HMA`.:23^\`$'P`(@72AN6!+S48`&$`Y]183U*&<!"\
  3908. + M@&WH4H<@;P`@(,I2A'`0VH`O2``@?`"XKP`<;8`@+P!L<A!.NC4:*@%'[P`D
  3909. + M8!HB!.F!TH;E@4AL`4`O-1@`80#EO%!/)L!2AKR%;>)A`.;>)D!(;`%"+P!A
  3910. + M`.6B)$`N@"\%2&\`,&$`][@NBF$`Y@9/[P`0?`!@%"($Z8'2AN6!+S48`&$`
  3911. + MYT183U*&O(5MZ"`'Y8`KBP@`4H<O1P!L>``L+P!L<!"\@&X`_MQZ`&`<2&P!
  3912. + M1"\U6`!A`.5"4$\@3]#\`"0A@%@`4H18A;B&;>`O+P!P+P1(;P`L80#W1$_O
  3913. + M``QZ`"9-8`HO&V$`YMY83U*%NH9M\DS?+/#>_`!(3G4@#Y!\`#2PK`G<90`U
  3914. + M)I[\`"1(YR\T?@`O+`"02&\`.&$`Y\X@+`"0(BP`F$ZZ-!!2@$AX0``O`$AO
  3915. + M`#1A`.D`+"\`0"`&Z8`N@&$`X_Y/[P`4*D`H+P!,8``!9"!O`$A8KP!(2&P!
  3916. + M1B\080#DD%!/)D!@``$L2&\`)$AO`#AA`.JH4$\@+P`HL(9O&BH`8`+<AKJ&
  3917. + M;OH@!NF`+P`O#6$`X^Y03RI`+PTO+P`L+R\`+&$`_"1/[P`,""L`!``;9Q1*
  3918. + MA&802H=F#$JO`$!F!B1O`%!@%%*'80#E5$AL`4@O`&$`Y!I03R1`>`!Z`&``
  3919. + M`)I*K!L^9R!*A&<<(&\`)-'%+T@`($AH__`O+P`D80#SX%!/2H!G;"!O`"31
  3920. + MQ2\*+R@`!$AX``$O$&$`Y*Q/[P`0""H``0`;9SY2J@`,("H`#+"J`!1N'B!J
  3921. + M``12J@`$$+P`"@@J``8`&V<H+PI.NCW\6$]@'E.J``PO"DAX``I.NCG&4$]@
  3922. + M#"\*2'@`"DZZ.;A03U*$<!#:@+BO`"AM`/]B(&\`4+'*9P@O"F$`X]A83R\+
  3923. + M2&\`.&$`YGA03R@O`$Q*@&8`_L(O"V$`X[I83R`$4X`O0`!,2H1F`/Z2+R\`
  3924. + M-$ZZ-&PNKP`H3KHT9"Z-3KHT7EA/2H=G1"`'Y8`O`&$`XEI83R9`*`<D;!MZ
  3925. + M)`=3@N6"*D#;PF`*4X0JDB1J``19C4J$;O(O+P!0+P<O"V$`_$@NBTZZ-!A/
  3926. + M[P`,3-\L]-[\`"1.=;_L"=QE`#+V2.<`%"IO``Q'[!M&8`0F:P`L2JL`+&;V
  3927. + M)TT`+$*M`"Q,WR@`3G4@#Y!\`!"PK`G<90`RPB!O``0O"$AL`4I"ITAX``).
  3928. + MN@HV3^\`$$YU(`]10+"L"=QE`#*<+P<N+P`(,'P``2\(+P=.N@N880#A=DZZ
  3929. + M"RHNAR\`3KHJG$_O``PN'TYUO^P)W&4`,FI(YP$4+B\`&"9O`!0J;P`08```
  3930. + M@A`52(!(P')-D(%G7'(5D(%G%E6`9S15@&<Z5X!G0%N`9TY9@&=28%Y*AV<&
  3931. + M<`*^@&8&<`$G0``(<`&^@&<&(@=5@68Z)T``%&`T0>P6,"=(`!A@*D'L&C`G
  3932. + M2``<8"!![!(P)T@`&&`6<`$G0``D8`YP`2=``"!@!G`!)T``*%*-2A5F`/]\
  3933. + M(`U,WRB`3G4@#Y!\(&2PK`G<90`QNI[\(%1(YP\T+B\@=)?+0J\@/$*O(#A"
  3934. + MKR`T0>P!;"]((#`J;R!X*54*+$*L&T(O2"`L80#C>DAL`6Y.NB906$\I0!LP
  3935. + M9@A![`%V*4@;,$*G2'@``DZZ"G!03TJ`9PY(>OZR2'@``DZZ"EY03T*G2'@`
  3936. + M`4ZZ"E)03TJ`9PY(>OZ42'@``4ZZ"D!03T*G2'@`#4ZZ"C103TJ`9PY(>OYV
  3937. + M2'@`#4ZZ"B)03T*G2'@`#TZZ"A903TJ`9PY(>OY82'@`#TZZ"@103W#_+T`@
  3938. + M3"]`($!#[R!80IE"F4*O(&A"KR!D0IE"KR!40J\@2"`'Y8`O`&$`W]Y83W@!
  3939. + M1>T`!$'M``@O0``@+T`@*"](`"1@``56(%)P*[`09@``_B`+9P@O"V$`_9I8
  3940. + M3TAX`#!A`-^D6$\F0'+_($`A00`,0^@`&$*90IE"J``40J@`"$*H`"A"J``D
  3941. + M0ID@4DOH``$0%7(`$@!(P2`!Y8!#[`HP2K$(`&8(+PAA`/UV6$]Z`&`6$!U(
  3942. + M@$C`(@7E@=*%TH'2@"H!<#":@!`5<@`2`$C!(`'E@$'L"C!*L`@`9M1\`'`N
  3943. + ML!5F,%*-8!80'4B`2,`B!N6!TH;2@=*`+`%P,)R`$!5R`!(`2,$@`>6`0>P*
  3944. + M,$JP"`!FU$J&9@1*A6<()H4G1@`$8`1P_R:`0J<O"R\-80#]3$_O``P@0$H0
  3945. + M9P`$5"\280#\W%A/8``$2"I2$!5R+;`!9@`$+"!22B@``6<`!")2C1`5<@`2
  3946. + M`$C!Y8%![`HP2K`8`&<`!`(@"V8$80`&GGH`8!80'4B`2,`B!>6!TH72@=*`
  3947. + M*@%P,)J`$!5R`!(`2,$@`>6`0>P*,$JP"`!FU'P`<"ZP%68P4HU@%A`=2(!(
  3948. + MP"(&Y8'2AM*!TH`L`7`PG(`0%7(`$@!(P2`!Y8!![`HP2K`(`&;4)T4`#"=&
  3949. + M`!!(>``!+PLO#6$`_()/[P`,($!*$&<(+Q)A`/P46$\O"V$`^]Y83Y?+8``#
  3950. + M=DAX``)(;R!$+PUA`/Q43^\`#"I`($`2$$B!2,%*@6<``S9P5)*`9P`"R'`/
  3951. + MDH!G)E&!9RQ5@6<``AY5@6<``B)9@6<``F!3@6<``F13@6<``MQ@``+@<`$O
  3952. + M0"`\8``"^$HM``%G!%*-8"H@!U.`N(!F%$AL`7Q"ITAX``).N@7:3^\`#&`.
  3953. + M4H0@;P`D*EA8BB](`"0@2B](`!P@"V<(+PMA`/LR6$](>``P80#=/%A/)D!R
  3954. + M_R!`(4$`#$/H`!A"F4*90J@`%$*H``A"J``H0J@`)$*9$!5R`!(`2,$@`>6`
  3955. + M0>P*,$JP"`!F""\280#[%%A/>@!@%A`=2(!(P"(%Y8'2A=*!TH`J`7`PFH`0
  3956. + M%7(`$@!(P2`!Y8!![`HP2K`(`&;42H5G`E.%?`!P+K`59C92C6`6$!U(@$C`
  3957. + M(@;E@=*&TH'2@"P!<#"<@!`5<@`2`$C!(`'E@$'L"C!*L`@`9M1*AF<"4X9*
  3958. + MAF8$2H5G"":%)T8`!&`$</\F@$*G+PLO#6$`^MY/[P`,)$`@0$H09Q1P++`2
  3959. + M9PXD;P`<+Q)A`/ID8```I"!*2^@``21O`!Q*$&<``)9Z`&`6$!U(@$C`(@7E
  3960. + M@=*%TH'2@"H!<#":@!`5<@`2`$C!(`'E@$'L"C!*L`@`9M1\`'`NL!5F-E*-
  3961. + M8!80'4B`2,`B!N6!TH;2@=*`+`%P,)R`$!5R`!(`2,$@`>6`0>P*,$JP"`!F
  3962. + MU$J&9P)3A2=%``PG1@`02'@``2\++PUA`/HL3^\`#"!`2A!G""\280#YOEA/
  3963. + M+PMA`/F(6$^7RV```2!P`2]`(#A@``#X2BT``6<,0>T``2](("Q@``$$(`=3
  3964. + M@+B`9A9(;`&>0J=(>``"3KH#TD_O``Q@``#F4H0@;P`D+U@@+%B*+T@`)&``
  3965. + M`-)P`2E`&SA@``"J2BT``6<*4HT951L\8```FB`'4X"X@&P64H0B;P`D(%D9
  3966. + M4!L\6(HO20`D8```FDAL`<!"ITAX``).N@-P3^\`#&!F2BT``6<(4HTI31LP
  3967. + M8%@@!U.`N(!L$E*$(&\`)"E8&S!8BB](`"1@7$AL`>)"ITAX``).N@,T3^\`
  3968. + M#&`J<`$I0!L^8"(0%4B`2,`O`"!O('PO$$AL`@1(;`EH3KHQ)F$``K!/[P`0
  3969. + M2A5G`E*-2A5F`/R@8!!2AB!O`"`@S2]&(#0O2``@4H18BEBO`"0L+R`TN(=M
  3970. + M`/JD(`MG""\+80#X1EA/*FP;<F!42JT`&&9*2JT`'&9$2JT`"&8^2JT`*&8X
  3971. + M2JT`%&8R2JT`)&8L2JT`(&8F1^\@6$7M`!@DVR3;*V\@2``(*V\@5``4*V\@
  3972. + M9``D)-LK;R!H`"@J;0`L(`UFJ$JL&W)F+DJO(%AF'DJO(%QF&$JO($AF$DJO
  3973. + M(%1F#$JO(&1F!DJO(&!G"DAO($!A`/>T6$\I;R!H&S1*AF8*?`%![R`P+T@@
  3974. + M*"1O("A*KR`\9QHO!B\*80#S9$J`5L%$`4B!2,$N@4ZZ+T103RIO("P@34/L
  3975. + M`B00&+`99@A*`&;V9P``W'H`8!0@32)2$!BP&68&2@!F]F<(4H58BKJ&;>BZ
  3976. + MAF822&P")B\-80#9_E!/)D!@``"N2&P"*"\-80#9["1`80#;%B9`2&P"*B\`
  3977. + M80#9VD_O`!`J0&`4+PTO!$AX``%(;P`T80#:G$_O`!`O"DAX(`!(>``!2&\`
  3978. + M-$ZZ,I9/[P`0*`!NT@@J``4`&V<B+R\@+$AL`BPO+!S,0J=.N@%(80#8K$AX
  3979. + M``).NBZ`3^\`%"\-80#9["Z*80#9YN6%(&\@+"&+6``J;R`P2&P","\-80#9
  3980. + M5D_O``PF0&`$1^P)1B!O("A*KR`X9PPO"R\&+PAA`/*B8`HO"R\&+PAA`/0N
  3981. + M3^\`#&$`V$@O"TZZ,WI83TJ`:A8O#4AL`C(O+!S,2'@``4ZZ`,)/[P`02JP;
  3982. + M0F<B2&P))$ZZ-"183U*`9A1(;`(Z+RP<S$AX``%.N@":3^\`#`@L``4)868.
  3983. + M2&P)1DZZ,_I83U*`9A1(;`(\+RP<S$AX``%.N@!P3^\`#$*G3KHMJEA/3-\L
  3984. + M\-[\(%1.=2`/D'P`#+"L"=QE`"C$+RP*+$AL`DA(;`EH3KHN5DAX``).NBUX
  3985. + M3^\`$$YUO^P)W&4`*)XO!RXO``AO$KZL!_IN#.6'0>P'7B`P>`!@!D'L`N`@
  3986. + M""X?3G4@#Y!\`"BPK`G<90`H;$CG`Q0L+P`8+B\`%"9O`"`J;P`<+RP*+$AL
  3987. + M`O9(;`EH3KHMZBZO`$@O+P!$+R\`1"\O`$0O+P!$+R\`1"\O`$0O"R\-2&P)
  3988. + M:$ZZ+<)/[P`P2H9G&"\&80#_;BZ`2&P"_$AL"6A.NBVF3^\`#`@L``$)@V="
  3989. + M4JP)="`L"72PK`E\;B`@;`EL4JP);!"\``H(+``&"8-G+DAL"6A.NC'V6$]@
  3990. + M(E.L"71(;`EH2'@`"DZZ+;Y03V`.2&P):$AX``I.NBVN4$](;`EH3KHQR%A/
  3991. + M2H=G""\'3KHL8%A/3-\HP$YU``!(YR`R(&\`&$/O`!Q%^@`<)F\`%"0++'D`
  3992. + M```$3J[]]B`+D(),WTP$3G46P$YU``!.N@AP("P<U$YU```@+P`$(&\`"")O
  3993. + M``Q(YP$4+@`F22I(3KH(3G`!OH!M+'`@OH!L)B`+9PX@!^>`0^P;G-/`)MDF
  3994. + MV2`-9PSGAT'L&YS1QR#=(-UP`&`(<!8I0!S,</],WRB`3G4@+P`$(&\`")[\
  3995. + M`!`O2``(0J\`#$'O``A#UV&62H!G"#!\__\@"&`"(!?>_``03G4``"!O``0B
  3996. + M;P`(64](YS,V*DA^`"!L'*@L*`#@+TD`($J&9B!*K`H$9AI![`,<(@@L;!T4
  3997. + M)#P```/M3J[_XBP`9P)^`4J&9S8B!D'L`R8D"$'L"@PF""QL'11.KOZ>(@8D
  3998. + M#28O`"!.KOZ>(@9T"DZN_LA*AV=8(@9.KO_<8%`@;!RH)F@`N#!\__^WR&=`
  3999. + M0^P#+'`E+'@`!$ZN_=@D0$J`9RPI;`H,`Q`I30,4+PH@2RQ*0^P#")7*)F\`
  4000. + M)$ZN_;1,WP0`(DHL>``$3J[^8DS?;,Q83TYU(&\`!$/O``AA`/\J3G4@;P`$
  4001. + M0^\`"&$`_QQP%$ZZ*IY.=0``2.<`!G`(<@`L>``$3J[_.BI`2H!F!'``8"Y"
  4002. + MK0`$2'@`*'``+P!![`-`<@&3R<%!3KH?7E!/*H!F#")-<`A.KO\N<`!@`B`-
  4003. + M3-]@`$YU(&\`!$CG``8J2"`-9Q@@36$``!X@54ZZ'Z(B37`(+'@`!$ZN_RY,
  4004. + MWV``3G4@;P`$2.<`!BI(2JT`!&<4(E4L>``$3J[^(")53J[^)D*M``1,WV``
  4005. + M3G4@;P`$(%`B:``.<``0*0`/<@'AH2`!3G4@;P`$("\`""(O``Q(YP,&+`$N
  4006. + M`"I(8:I*AV8$2H9G'B)5(T<`("-&`"0S?``)`!PL>``$3J[^,G`!*T``!$S?
  4007. + M8,!.=2!O``1(YP`&*DA*K0`$9QPB52QX``1.KOXL2D!G#B)53J[^)D*M``1P
  4008. + M`6`"<`!,WV``3G4O#B`L'+0B`$A!0D'2@"`L'*BS@"E`&X1"K!N(0^P#5'``
  4009. + M+'@`!$ZN_=@I0!N`</].KOZV2(!(P"E``U!*K!N`9PA*@&L$<`%@`G``*4`;
  4010. + MC"Q?3G4O#B`L`U!K""QX``1.KOZP("P;@&<*(D`L>``$3J[^8BQ?3G4@+P`$
  4011. + M44](YP,`+@!.N@4H(`=.N@&02H!G*")`(&D`'')`Y8G"D2](``P@`2!I``0B
  4012. + M;P`,3I$L`"`'3KH!2"`&8`)P_TS?`,!03TYU("\`!"\'+A]@K@``(&\`!"`O
  4013. + M``@B;P`,+V\`$``$+V\`%``(+V\`&``,+V\`'``0+V\`(``4+V\`)``844](
  4014. + MYP<4+@!([P,``!1\`"IL&Y!@%DJM``1F"C!\``$K2``$8`Q2AMK\`"2\K!N4
  4015. + M;>0@+!N4O(!F>'(*TZP;E"`L&Y0B`.>!TH#E@2`!3KHEP"I`2H!F#'`,*4`<
  4016. + MS'#_8```CG#VT*P;E"(`YX'2@.6!(&P;D")-8`(2V%.!9/H@+!N09P8@0$ZZ
  4017. + M)!HI31N0>O;:K!N4(`7G@-"%Y8#;P)?+*TL`!%*%VOP`)+JL&Y1M\"`&YX#0
  4018. + MAN6`(&P;D"&O`!0(!"&'"``AKP`8"`A+[P`@(9T(#"&="!`AG0@42^\`+"&=
  4019. + M"!@AG0@<(9T(("`&3-\HX%!/3G4@+P`$(@!K%K*L&Y1L$"`!YX#0@>6`(&P;
  4020. + MD$*P"`1.=2`O``1(YP$$+@!K'KZL&Y1L&"`'YX#0A^6`*FP;D-O`2JT`!&<$
  4021. + M(`U@"'`)*4`<S'``3-\@@$YU("P;E$YU```@+P`$64\N@$'L`V@@"%A/3G4@
  4022. + M;P`$64\NB$'L`V@@"%A/3G4@+`-H3G4``"!O``193TCG(P(B""QL'11T_DZN
  4023. + M_ZPO0``09SHN+!S,3KK_JBP`8!Y(;P`02'@(!2\&3KH-"$_O``Q*@&8(*4<<
  4024. + MS'``8!)3AFS>(B\`$"QL'11.KO^F</],WT#$6$].=2!O``1(YR$&*DA.N@*^
  4025. + M(@TL;!T43J[_N$J`9P1P`&!03J[_?"X`<F_2@;"!9B`B#70`3J[_1DJ`9PXB
  4026. + M#4ZN_[A*@&<$(`)@*$ZN_WPN`'!ET("^@&8.($UA`/]*2H!F!'``8`P@!TZZ
  4027. + M%W0I0!S,</],WV"$3G4``"`O``193RZ`("P<I&<.($!.NOQB2H!G!'(!8`)R
  4028. + M`"`!6$].=2`O``0@;!RD<@!.^OP(3KK[/"E`'*1F"DAL`XA.NOL86$\@;!RD
  4029. + M3KK[S(&L&YA.=2!L'*1.^OMH".P`#!N:3G4@+P`$"```#%;`1`!(@$C`3G4(
  4030. + M[``-&YI.=2`O``0(```-5L!$`$B`2,!.=4ZZ&8YP`"!L'000*``/<@'AH8.L
  4031. + M&YA.=4[Z&>`@+P`$64](YP$6+T``$'X`8"X@+0`43KH9-B9`2H!G%$JK`!1F
  4032. + M#GX!<`$G0``4)VT`&``8(DUP'"QX``1.KO\N(&P=!"QX``1.KOZ,*D!*@&;`
  4033. + M(`=,WVB`6$].=2`O``1(YP\$+@!P`>^@+`!P";Z`9@9P`$ZZ"Q0@+!R<P(9G
  4034. + M!HVL'*!@>BH&1H7+K!R@2H=K9G`@OH!L8"`'YX!![!N<*G`(`#!\``&[R&8L
  4035. + M(`=5@&<44X!G$'(-D(%G/%F`9SA1@&<T8`I(;`.@3KKYU%A/<`!.N@JV8"`@
  4036. + M#6<<(`?G@"@&0>P;G(BP"`2)K!R<(`=.E4:$R:P<G"`L'*#`AF:*3-\@\$YU
  4037. + M("\`!"\.(BP;F(*`<``L>``$3J[^SBQ?3G4@+P`$+PXB`"`L&YB`@2QX``1.
  4038. + MKO["+%].=2`O``1(YP,`+@!\`&$`_A!*@&<(?`%P#F$`_PP@!V$`_F)*@&<(
  4039. + M?`%P`F$`_OH@!V$`_FI*@&<(?`%P`V$`_N@@!V$`_H9*@&<(?`%P%&$`_M8@
  4040. + M!DS?`,!.=2`O``0O!RE`">1P""X?8`#^O'``80#_8&"08/9(YP$4?@!+[!N<
  4041. + M-GP``2J+0JT`!%*'4(UP(+Z`;?!"K!R@0JP<G$*L&YAA`/W480#]ZF$`_:),
  4042. + MWRB`8`#]^&$`_;A@`/X(``!(;`.T3KKXL%A/3G4@+P`$+PU.NB#\*D!*@&8"
  4043. + M8>(@#2I?3G4@;P`$("\`""\+3KH>\"9`2H!F`F'&(`LF7TYU(&\`!"\-*D@@
  4044. + M#68$2^P#OB!-2AAF_%.(D<T@"%*`3KH@L"!`2H!F!'``8`@B2!+=9OP@""I?
  4045. + M3G593TCG`S1^`'P`(&P<J"9H`-!@+$HK``AF)#`\!0#`:P`.9AI2AR!K``H@
  4046. + M"$H89OQ3B)'`(`C<@-RK`!14AB932I-FT"`'4H#E@-"&80#_2BE`',#EAR!`
  4047. + M(D#3QT7I``0O0``49@I![`.P*4@<P&!6(&P<J"IH`-!@0DHM``AF.C`\!0#`
  4048. + M;0`.9C`F;0`*+BT`%"!O`!0@RB](`!1@`A3;2A-F^A3\`#TF;0`08`(4VR`'
  4049. + M4X=*@&;V0AHJ54J59KH@;P`40I!,WRS`6$].=2!O``0@+P`(+PTJ2"J`0JT`
  4050. + M!.6`80#^M"M```@J7TYU(&\`!")O``@@+P`,2.<B-"9)*DA*@&<*($MA`/["
  4051. + M)$!@`B1+(`IG/B(5)"T`!+2!;2(L`=R&=!#2@KR!;0(B!BJ!(`'E@"!M``A.
  4052. + MNAUN*T``"&<21^T`!"(34IOE@2!;(8H8`'`!3-\L1$YU(&\`!")O``@@+P`,
  4053. + M89)*@&8$80#^&DYU(&\`!")O``A(YP`4)DDJ2"`M``30JP`$L)5O$M"`*H#E
  4054. + M@"!M``AA`/X:*T``""(M``3E@2!M``C1P2`K``0B`.6!(FL`"&`"$-E3@63Z
  4055. + MT:T`!"!K``A,WR@`3OH=7B!O``0B;P`(+V\`#``$("\`$"(O`!193TCG`C0L
  4056. + M`2I))$@O2``02H!G1%.`9PI3@&<``+9@``#T4X9G(B`O`!@B#9"!(&\`$$(P
  4057. + M"``@02)O`!!@`A+84X!D^F```,Y![`/`(F\`$!+89OQ@``"^)F\`&&!N<%RP
  4058. + M%69F2BT``6=@5(UP`;R`9@84_`!A8%0@!E6`9D80+?__2(!(P'(CD(%G+E6`
  4059. + M9RI5@&<F4X!G(E.`9QY3@&<:<A60@6<4<AR0@6<.58!G"G(?D(%G!%6`9@04
  4060. + M_``G%.W__V`(%.W__V`"%-V[RV6.8$`F;P`88#9P*K`59BY*+0`!9RA4C1`M
  4061. + M__](@$C`<F60@6<,<@F0@68,%/P`"F`.%/P`&V`(%.W__V`"%-V[RV7&0A),
  4062. + MWRQ`6$].=9[\`2Q(YS\V*F\!6"!L"@`,:``E`!1D"DAX`!1.NLE*6$]"K`E`
  4063. + M<`$I0`D\*4`)8G`"*4`)7BE`"80I?````(0)@)/)+'@`!$ZN_MHI0!RH3KKU
  4064. + M`"E`'*QF"DAL`\).NO3<6$\@;!RL3KKUD"E`'+`L;!RL(%8L:``4*4X<O$'O
  4065. + M`3!.KO^^*6\!,!RT3KKU^$ZZ^ZP@;!RH("@`K&<0Y8`B0"(I`#3E@2E!'+A@
  4066. + M!BEH`(0<N$H59@``Z$'L`]HB""QL'10D/````^Y.KO_B+`!![`/@(@A.KO_B
  4067. + M+@!![`/F(@A.KO_B*@!*AF<(2H=G!$J%9B)*AF<&(@9.KO_<2H=G!B('3J[_
  4068. + MW$J%9P8B!4ZN_]QA`/MR<`$O`"\%+P`O!R(&P4%.N@VX(&P*!"`H`!Q![P%8
  4069. + M80#\GD_O`!!\`'X`8%`B;`H$(&D`)"`P>`!G/B(`0^\`,"0)+&P=%'9`Y8M.
  4070. + MKOYN2H!G)B)L"@0@:0`DT<<@*``$9P@B`B0`3J[\CD'O`4A#[P`P<`%A`/S8
  4071. + M4H90AR!L"@2\J``<;:9@``+,+&P=%$ZN_\HH`$ZN_\0J`'X`(&P<J"PH`.!F
  4072. + M*'X!0>P#["(()#P```/M3J[_XBP`9A)![`/N(@A.KO_B+`!F!&$`^J0O!R\&
  4073. + M<``O`"\%(@3!04ZZ#.I![P%8<`%A`/O6(#P```4:80#ZCB!`,7P$```2+T``
  4074. + M/'!`Y8AA`/IZ3^\`$'Y`Y8\O0`$X8`)2C1`52(!(P$'L"!T(,``#"`!F[!`5
  4075. + M9P`"%G(BL`%F,%*-)DU@$'`JL!5F"$HM``%G`E*-4HT0%6<&<B*P`6;F)$T0
  4076. + M%7(BL`%F`E*-?`)@5'`GL!5F(%*-)DU@`E*-$!5G!G(GL`%F]"1-<">P%68"
  4077. + M4HU\`6`N)DU@$'!<L!5F"$HM``%G`E*-4HT0%6<2<B"P`6<,<@JP`6<&<@FP
  4078. + M`6;:)$U\`"!+*@J:BR`%4H`O2``H80#YMB9`2J\!3&8@(`4@2R)O`"A.NAAF
  4079. + M0C-8`$'O`4@B2W``80#[8&``_R;:A7(0VH&ZAV\4(&\!.$ZZ&1`@!6$`^78N
  4080. + M!2]``3@O"B`&($LB;P`L<@%A`/NN6$\B"R0O`3@F!RQL'11.KORX*@!L$$(2
  4081. + M+R\`*$AL`_1.NO'B4$]*A68B+PH@!B!+(F\`+'(`80#[=$'O`4PB2W``80#Z
  4082. + MZ%A/8`#^K'H!(&\`+$*H``A"*``10B@`$"\*(`8@2R)O`"QR`F$`^T!![P%`
  4083. + M<!!A`/HF6$\B"R0O`"PL;!T43J[\RB@`9CQ@*GH`(F\`+-+\`1A![P$\<`%A
  4084. + M`/H@2H!F!'AG8!(B+P`L+&P=%$ZN_,0H`$J$9](B+P`L+&P=%$ZN_+YP=-"`
  4085. + MN(!G"DAL!`A.NO$N6$]*A6<B+PH@!B!+(F\`+'(`80#ZP$'O`4PB2W``80#Z
  4086. + M-%A/8`#]^"`O`4`@;P%$3KH3,D'O`4A#[P$\80#Z*B!+3KH7UF``_=8@;P$X
  4087. + M3KH7RB!O`"Q.NA?"80#XDD'L!").N@M^*4`#:&8(0>P$*"E(`VA![`0N3KH+
  4088. + M:"E``WQF!BEL`V@#?$'L!#A.N@M4*4`#@&8(0>P$/BE(`X!![`1"3KH+/BE`
  4089. + M`X1F"$'L!$@I2`.$0>P$4$ZZ"R@I0!S$9@A![`1:*4@<Q"`O`4P@;P%0(FP<
  4090. + MP$ZZ*-)P`$ZZ&OQ,WVS\WOP!+$YU("\`!$CG`P`N`$JL',AG!"`'8&!\`"`'
  4091. + M`H````$D9P)\"`@'``=G!`!&``4(!P`$9P0(Q@`""`<``6<$",8```@'``-G
  4092. + M!`C&``$(!P``9P0(Q@`&(`=R2<"!<D"P@68$`$8`0@@'``EG!`C&``4@!@I`
  4093. + M``],WP#`3G4@+P`$2.<&`"P`2JP<R&<((`8"0`__8%YZ``I&``\(!@`#9P1Z
  4094. + M2>6-(`9R!<"!6X!F!`C%``<(!@`"9P0(Q0`$"`8``&<$",4``2`&<D+`@6<$
  4095. + M",4`!@@&``%G!`C%``,(!@`&9P0(Q0``"`8`!6<$",4`"2`%3-\`8$YU``!(
  4096. + MYP,`3KKRWBX`?`!@"B\&3KKQ1EA/4H:\AVWR3-\`P$YU("\`!"\'+@!AU$ZZ
  4097. + M\+I.NO98(&P<K$ZZ[W@O!TZZPS983RX?3G4@+P`$+P<N'V#4```@+P`$(B\`
  4098. + M""!O``Q13TCG`R0L`2X`*DA.NO74(`=.NO(\2H!G&B)`(&D`("](`!0@!B!I
  4099. + M``0B321O`!1.DF`"</],WR3`4$].=0``GOP`#$CG+S8J;P`T?@/.KP`X?`$@
  4100. + M;!RH)F@`N"H\```#[$ZZ]7Y*AV<*<`*^@&<$<@!@`G(!+T$`*'`!OH!G"%6'
  4101. + M9P1P`&`"<`$O0``L($U#[`1@3KH0NDJ`9@9X_V```51P_R!L'*@A0`"X(@TL
  4102. + M;!T4=/Y.KO^L+@`@;!RH(4L`N$J`9G@L;!T43J[_?$ZZ"B0L`"`L">!R+D8!
  4103. + ML(%G!$J`9@I^`2H\```#[F`6(`95@&8,""\`"``Z9P1P`6`"<``N`$J'9RQ\
  4104. + M``@O``@`.F<<""\`#P`Z9P9X`F```-8@+P`\3KK]AB@`8```R'C_8```PBE&
  4105. + M',QP_V```4)"IRQL'11R`B0/3J[_'$_O``0D0$J`9PPB!R0*3J[_FDJ`9A8@
  4106. + M"F<()`IR`DZN_Q9.N@I^</]@``$(*"H`="0*<@).KO\6(@=.KO^F<%#IB,"O
  4107. + M`#@,@```!0!F#'`1*4`<S'#_8```VDJO`"AG!@@$``-F#$JO`"QG$@@$``)G
  4108. + M#'`-*4`<S'#_8```M@@O``D`.F<B(@TD/````^Y.KO_B2H!G""(`3J[_W&`*
  4109. + M3KH*`G#_8```C`@O``@`.F<$(`5@!B`\```#[20`(@TL;!T43J[_XBH`9@A.
  4110. + MN@G6</]@8`@O``D`.F8$2H9F!"P$8`)\_WX`2J\`*&<"?@%*KP`L9P0(QP`!
  4111. + M""\``P`[9P0(QP`#+P<@!2(&3KH%GEA/+@!L''#_(&P<J"%``+@B!2QL'11.
  4112. + MKO_<(&P<J"%+`+@@!TS?;/3>_``,3G4@;P`$+R\`#"\O``PO"&$`_:A/[P`,
  4113. + M3G6>_``,2-<!`W#_WOP`#$YU44](UP,`4$].=4CG,`(B$$HH``UG!'``8!PD
  4114. + M"28`+&P=%$ZN_]8B`%*`9@A.N@D0</]@`B`!3-]`#$YU44](YS\V+@`J229(
  4115. + M+!,O1@`H+T@`+$HK``UG!G``8```C$HK``QG9B9-U\=Z`&!8)$U@`E**M<MD
  4116. + M!G`*L!)F]+?*9@0H"F`&0>H``2@(F(TB+P`H)`TF!"QL'11.KO_0+`!2@&8(
  4117. + M3KH(FG#_8#[:AK:&9C9+Z@`!GH9P`$ZZ\=Q.NO(,2H!F(DJ'9J1@'"(&)`TF
  4118. + M!RQL'11.KO_0*@!2@&8(3KH(7G#_8`(@!4S?;/Q03TYU64](YS\"+@`L$"]!
  4119. + M`!Q**``-9P1P`&!24X$F`2(&)`<L;!T43J[_OBH`3J[_?"@`4H5G!$J$9PX@
  4120. + M!$ZZ!Q@I0!S,</]@)"(&=``F`DZN_[XL`%*`9P1*A&<.(`1.N@;V*4`<S'#_
  4121. + M8`(@!DS?0/Q83TYUGOP!`$CG/P8N`"I(+!4J+0`(("T`!&<*(@`L;!T43J[_
  4122. + MIA@M``U(A$C$($U.NA&82H1G!'``8$0B!D'O`"`D""QL'11V0.6+3J[^:"@`
  4123. + M2H=F"B(&3J[_W$J`9QI*A&<2</^Z@&<,(@(D!4ZN_T9*@&<$<`!@!DZZ!V1P
  4124. + M_TS?8/S>_`$`3G4@+P`$2.<@`B(`+&P=%'0`3J[_-$ZN_WQT+D8"L()7P40!
  4125. + M2(%(P2`!3-]`!$YU("\`!"!O``@B;P`,GOP`$$CG-Q8N`"9)*DA\`&&X2H!F
  4126. + M?"('+&P=%'0!3J[^5DJ`9VPB!T'L!&@D"'8$3J[_T%F`9E(B!R0\```G$$ZN
  4127. + M_S1*@&="(@=![P`@)`AV$$ZN_]9R";"!;RYPF[`O`"!F)D'O`"4B""0+3J[\
  4128. + MT"H`0>\`)M'`(@@D#4ZN_-!2@&<&4H5G`GP!(@=T`$ZN_E8@!DS?:.S>_``0
  4129. + M3G4@+P`$(B\`")[\`A!(YS\&+@!P_R]``B@O00`D(@<L;!T4=`!V`4ZN_[XO
  4130. + M0``@(@=.KO^^+`!.KO]\*@`O0`(L9@``PB@O`"0B!R0$=O].KOXXL()F``"N
  4131. + MO()L``">*@2:AB@%(`1R`4A!+'@`!$ZN_SHJ0$J`9FIR`DA!3J[_*.*(*@`,
  4132. + MA0```@!M$"`%<@%(04ZN_SHJ0$J`9D9Z0.>-2^\`*#`\`?]R`$'O`"@0P5'(
  4133. + M__Q@++B%;P0@!6`"(`0F`$ZZ[ZXB!R0-+&P=%$ZN_]"P@V<*3J[_?"]``BQ@
  4134. + M!IB#2H1NT$'O`"BQS6<,(DT@!2QX``1.KO\N*B\"+&8$0J\"*"PO`""\KP`D
  4135. + M;`XB!R0&+&P=%';_3J[_OBPO`BAG"B`%3KH$7BE`',P@!DS?8/S>_`(03G6>
  4136. + M_`$(2.<W%BX`)DDJ2"P52BT`#68``1@@!P2````$`&<@!(````0`9TI3@&=8
  4137. + M4X!G7%.`9UY3@&=F4X!G;&```.Y*+0`,9R8@!D'O`21#[P$@80#]UDJ`9Q0@
  4138. + M+P$D-T```B`O`2`V@'``8```RG`98```OB(&+&P=%$ZN_R@F@'``8```LB:&
  4139. + M<`!@``"J<`!@``"D(`8B$V$`_C9@``"8*U,`"'``8```CBH32JT`!&8.(A4L
  4140. + M;!T43J[^C"M```0@+0`$9V(D`"(%+&P=%$ZN_EQ*@&92(@9![P`@)`AV0.6+
  4141. + M3J[^:$J`9SXB!4ZN_Z8B+0`$3J[_IB(&3J[_W"("=`!.KO]&&WP``0`-*H(K
  4142. + M0@`$0>\`("((+&P=%$ZN_[A*@&<$(`)@#DZZ!!Q@!G`6*4`<S'#_3-]H[-[\
  4143. + M`0A.=2`O``0B+P`(+V\`#``$2.</!BHO`!PL`2X`<`Y.N@\^*D!*@&8*<`PI
  4144. + M0!S,</]@3D/5(L="F2+&0BT`#2('+&P=%$ZN_R@;0``,2'K^=$AZ^]I(>OMD
  4145. + M2'KZK$AZ^G9(>OIH(`4@34/Z^E!.NNC@3^\`&"@`;`8@34ZZ#78@!$S?8/!.
  4146. + M=2`O``0B+P`(+V\`#``$+V\`$``(+V\`%``,+V\`&``02.<-`"@O`!0J+P`0
  4147. + M+@!P`$J!9@1P0.6(`$```2\`(`=R_V$`_T983TJ`9D!P`$J$9@1P0.6(`$``
  4148. + M`B\`(`5R_V$`_RA83U.`9B)P`$JO`!QF!'!`Y8@`0``"+P`@+P`<<O]A`/\&
  4149. + M6$]5@&<00>P$;B](`!!,WP"P3OKEY$S?`+!.=0``("\`!"!O``@B+P`,64](
  4150. + MYP,T+`$N`"I(3KKLN"`'3KKI("9`2H!G1`@K``$``V<V""L``P`#9Q8@:P`8
  4151. + M+T@`%"!K``1P`'("(F\`%$Z1(&L`%"](`!0@!B!K``0B321O`!1.DF`(<`TI
  4152. + M0!S,</],WRS`6$].=2`O``0@;P`((B\`#$CG`P1,WR#`8(`@;P`$GOP`0$CG
  4153. + M.Q8J2$ZZ[#8@#6=22A5G3B(-0>\`("0(+&P=%'9`>`!.KOQV+@!M-DZN_WPL
  4154. + M`%*`3KH-;"9`2H!G)+Z&9Q0F!E*#(@TD"TZN_'9*@&\0(`)@#B!"(DL2V&;\
  4155. + M(`M@`G``3-]HW-[\`$!.=2`O``0B+P`(+V\`#``$44](YP<`*B\`&"P!+@!.
  4156. + MNNNT(`=.NN@<2H!G&B)`(&D`&"](`!`@!B(%(&D`!")O`!!.D6`"</],WP#@
  4157. + M4$].=2`O``0B+P`(+V\`#``$2.<'`"HO`!`O10`03-\`X&"@```@+P`$(&\`
  4158. + M""(O``Q93TCG`S0L`2X`*DA.NNM((`=.NN>P)D!*@&<F""L````#9Q@@:P`0
  4159. + M+T@`%"`&(&L`!")-)&\`%$Z28`AP#2E`',QP_TS?+,!83TYU("\`!"!O``@B
  4160. + M+P`,2.<#!$S?(,!@G@``("\`!"E`">!*@&<``(9R9Y"!9P``@E6`9P``@'()
  4161. + MD(%G?%.`9WA3@&=T4X!G<%.`9VQ3@&=H4X!G:%.`9VAR49"!9V93@&=F4X!G
  4162. + M9E.`9V93@&=F4X!G9E6`9V93@&=F4X!G9E.`9V95@&=F4X!G9E.`9V93@&=F
  4163. + M4X!G9E.`9V95@&=F4X!G9E.`9V93@&=F8&AP`&!F<`Q@8G`+8%YP%F!:<`=@
  4164. + M5G`(8%)P$&!.<!%@2G`"8$9P`F!"<!9@/G`'8#IP%F`V<"1@,G`68"YP%F`J
  4165. + M<!Y@)G`28")P)6`><"9@&G`38!9P%F`2<!Q@#G`-8`IP#6`&<`U@`G#_3G4O
  4166. + M#BQL'11.KO]\80#^^BE`',PL7TYU(&\`!"`O``A93TCG`18N`"](`!`@;P`0
  4167. + M*E!@9'`-L"T`"&9:("T`K&<&Y8`@0&`"D<@F2"`M`)RPAV<T("T`H+"'9RP@
  4168. + M+0#@L(=G)"`+9RX@*P`<L(=G&"`K`""PAV<0("L`.+"'9P@@*P`PL(=F#B)-
  4169. + M<&#OB"QX``1.KOZ\*E5*E6:83-]H@%A/3G4@+P`$(B\`"$CG`0(N`"`!4X!G
  4170. + M#%.`9PA3@&<$78!F+"QX``1.KO]\(&P*`-#\`98@!V$`_T@@;`H`T/P!I"`'
  4171. + M80#_.DZN_W9P`&`(<!8I0!S,</],WT"`3G4@+P`$(B\`"$CG!@0L`2H`3KKH
  4172. + MYDJ%:@)$A;JL'-1F#DJ&9P8@!DZZYXIP`&!((`5.N@!N*D!*@&<&2JT`%&<*
  4173. + M<`,I0!S,</]@+"`&9R@B+0`0P4%A`/]8(@!P";R`9A1R`2M!`!0K0``8<!1.
  4174. + MNN=$<`!@`B`!3-\@8$YU```@;P`$2.<`!BI((DTL>``$3J[_!"!-3-]@`$[Z
  4175. + M"%0@+P`$2.<!!"X`*FP<V&`.("T`#+"'9@0@#6`(*E5*E6;N<`!,WR"`3G5(
  4176. + MYR`"0>P<V$ZZ&,H@+!RH(BP<M"0`LX("@@!___\I0AS44H(I0AS0+P$O`$AL
  4177. + M"`!(;!SD3KK?6D_O`!`L>``$3J[]9BE`'0AG$$'L'.1P`$ZZ&-XI0!T$9@I(
  4178. + M;`@.3KK@VEA/3-]`!$YU2.<`!B`L'0AG"B!`+'@`!$ZN_6!*K!T$9S@L>``$
  4179. + M3J[_?&`,(DUP'"QX``1.KO\N(&P=!"QX``1.KOZ,*D!*@&;B(&P=!$ZZL
  4180. + M>``$3J[_=DS?8`!.=0``(&\`!"`O``@B+P`,(F\`$"]O`!0`!"]O`!@`"%E/
  4181. + M2.</-B@O`"PJ+P`H+`$N`"I)+T@`("QX``1.KOUF)D!*@&<P($L@!$ZN_7(D
  4182. + M0$J`9R(@#6<()4T`*"5%`"0@;P`@(`<B2B(&3J[^1$H`9@0@"F`6(`IG!B!*
  4183. + M3J[];"`+9P8@2TZZ%Z!P`$S?;/!83TYU(&\`!$CG``8J2"`-9Q@B32QX``1.
  4184. + MKOX^(&T`#DZZ%W8@34ZN_6Q,WV``3G593T'Y`````"Z(9P@@>?____Q.D%A/
  4185. + M3G593T'Y`````"Z(9P@@>?____Q.D%A/3G5(YP,$*F\`$"!-2AAF_%.(D<TN
  4186. + M"&`*(`9![`E&3KH+5GP`'!U*AF;N0>P)1DZZ#V8@!TS?(,!.=9[\`!!(YP<4
  4187. + M?@!+[P`L8```FG`EL"\`%&8``(`@;P`H4J\`*!`0<@`2`!]``!5P9)*`9SIP
  4188. + M#)*`9PY7@6<&6X%G!F!$)EU@-"P=1^\`'GH'(`9R#\"!0?H`>-'`%I!3B^B&
  4189. + M4X5*A6KH0B\`'V`*(!U![P`73KH"&D?O`!<O"TZZ_TA83]Z`8")2AW``$"\`
  4190. + M%4'L"49.N@JF8!!2AW``$"\`%$'L"49.N@J4(&\`*%*O`"@0$!]``!1F`/]8
  4191. + M0>P)1DZZ#IH@!TS?*.#>_``03G4P,3(S-#4V-S@Y04)#1$5&`````$CG`Q<J
  4192. + M;!T,8!0F57`4T*T`!")-+'@`!$ZN_RXJ2R`-9NA"K!T,8$PJ;!T8<)S0K`G<
  4193. + M)D`@+0`$*4`=&"EM``@)W"XM`!A*@&8>(&P*``QH`"0`%&42($\L"$'M``PL
  4194. + M>``$3J[])"Y&(DL@!RQX``1.KO\N2JP=&&:N3-_HP$YU(&\`!")O``@@4")1
  4195. + M$!BP&68$2@!F]I`A2(!(P$YU(&\`!"`O``A#^O_@<@1.^@>:(&\`!")O``@@
  4196. + M+P`,2H!O"A(0$-$2P5.`9O9.=2!O``0B;P`(<`!R`!`8$AD,``!A;0H,``!Z
  4197. + M;@0$```@#`$`86T*#`$`>FX$!`$`()"!9@1*`6;43G4``"`O``@@;P`$3E7_
  4198. + M]")/<@I.N@)P!D$`,!+!2H!F\"`)$.&_R6;Z0A"0CTY=3G4``"`O``@@;P`$
  4199. + M3E7_]")/(@`"00`'!D$`,!+!YHAF\"`)$.&_R6;Z0A"0CTY=3G4``#`Q,C,T
  4200. + M-38W.#EA8F-D968@+P`((&\`!%%/(D\R``)!``\2^Q#<Z(AF\B`)$.&_R6;Z
  4201. + M0A"0B5!/3G4``"`O``@@;P`$+PA*@$Y5__0B3VP&$/P`+42`<@I.N@'(!D$`
  4202. + M,!+!2H!F\!#AO\EF^D(0(`A.79"?3G4``"!O``0B;P`(2.<P("1(<@`@`28!
  4203. + M#!``*V<(#!``+68$=@%22!`8!```,&T:#```"6X4)`'E@=*"TH%*`V8$TH!@
  4204. + MXI*`8-XB@2`(D(I3@$S?!`Q.=2!O``0O#2I(""T``P`;9C`@+`F,3KH$?BM`
  4205. + M``0K0``09@IP#"E`',QP_V`6*VP)C``4<//!K0`80JT`#$*M``AP`"I?3G4`
  4206. + M`"!O``1(YR`4*D@F36`@<``0$T'L"!T(,``!"`!G"G(`$@!T()*"8`1R`!(`
  4207. + M%L%*$V;<(`U,WR@$3G4``)[\`%!(YS$V0_H`A'``+'@`!$ZN_=@J0$J`9@9P
  4208. + M%$ZZ[')^`"!L"@P>*/__(`=#[P`<8`(2V%.`9/I"-W@<0>\`'"E(":1#[`FL
  4209. + M1^P)P"Q-D<B5RG``(@!T?=2"=BA.KOZD<!1.NNPL3-]LC-[\`%!.=2HJ(%-T
  4210. + M86-K($]V97)F;&]W("HJ``!%6$E4``!I;G1U:71I;VXN;&EB<F%R>0!*@&H`
  4211. + M`!Y$@$J!:@``#$2!80``($2!3G5A```81(!$@4YU2H%J```,1(%A```&1(!.
  4212. + M=2\"2$$T`68``")(0$A!2$(T`&<```:$P3`"2$`T`(3!,`)(0C(")!].=2\#
  4213. + M=A`,00"`9```!N&944,,00@`9```!NF964,,02``9```!N6954-*06L```;C
  4214. + MF5-#-`#FJ$A"0D+FJDA#@,$V`#`"-`-(0<3!D()D```&4T/0@7(`,@-(0^>X
  4215. + M2$#!028?)!].=0``2.=P`"0`9R!*@68$0H!@&"8`QL%(0L3!2$)"0M:"2$'`
  4216. + MP4A`0D#0@TS?``Y.=0``("P*"`1``?0N0$[Z_F```"!O``0@+P`((B\`#%.!
  4217. + M:P2P&&;X4TA2@4J!9@``!)'((`A.=2)O``@@;P`$("\`#"((8`00V6<(4X!D
  4218. + M^&`&0AA3@&3Z(`%.=2)O``@@;P`$("\`#"((2H!O%K')90S3P-'`$2%3@&;Z
  4219. + M8`80V5.`9OH@`4YU(&\`!"`O``A(YP,4+@`J2&82(`UF!'``8&@@34ZZ`&YP
  4220. + M`&!>(`UF"B`'3-\HP$[Z`<@F356+,#Q__\!32,#E@"P`"!,`#V<,#&N``/_^
  4221. + M9@0L*__R(`=.N@&@)D!*@&8$<`!@'KR'8P0@!V`"(`8@32)+8`(2V%.`9/H@
  4222. + M34ZZ``X@"TS?*,!.=2!O``0@"&8"3G59@$CG/#(B+!T,9@XI?````!8<S$S?
  4223. + M3#Q.=2)!L(%O$B0!U*D`!`:"````%+"";`)@""(I``!GU&#@)@$&@P```!"P
  4224. + M@VW&9Q(D0T*"-"H``FNZY8K6@EB#8.@D0#0J``!JJ@BJ``<``$*#-BH``@)#
  4225. + M?__EBTIJ``)K0$?R.`1*:P``:S9"A#@K``("1'__Y8S8@UB$Y(Q8@TIK``)J
  4226. + M!`!$@``U1``":Q(J!.6,-#)(!`)"@`"*0C6%2`1"A#@J``!G3.6,1(1'\DC\
  4227. + M2FL``&L^0H0X*P`"Y8Q"A3HJ``("17__Y8W8A5B$6(/DC$IJ``)J!`!$@``W
  4228. + M1``":Q(J!.6,-#-(!`)"@`"*0C>%2`37J0`()BD`!+:L"!AN#+:I``AF.DJI
  4229. + M``!G-"`L'0P@0+*`9@PI:0``'0Q@$"!H``"RJ```9O8A:0`````@*0`$!H``
  4230. + M```4+'@`!$ZN_RY,WTP\3G4@+P`$2H!F#"E\````%AS,<`!.=4CG/C)6@`*`
  4231. + M_____`R```'__&X``+BPK`@8;@``L"8L'0QG``"H(D.PJ0`(;C(B+!T0LJD`
  4232. + M#&8H1>D`$$I2:Q!"A#@J``("1'__Y8RPA&\:0H0X*@`":PCEC$7R2`1@W"8I
  4233. + M``!G9B)#8+X(Z@`'``!'\@@$0H6PA&<\+`2<@%F&9@0@!&`PY(Y*:@`":@0`
  4234. + M1H``*@#DC3=&``(W10``-44``GH$2D9K#C0R2`0"0H``C$(UAD@$)BD`"):`
  4235. + MEH4C0P`((`I8@$S?3'Q.=2H`L*P(&&H$("P(&"@`!H`````4(BP=$"QX``1.
  4236. + MKO\Z2H!F"BE\````#!S,8,PB0$7I`!`C;!T,```I21T,(T0`!"-L'1``#"8$
  4237. + MEH5G*%F#9R0C0P`(1_)8!#5\@````.2--44``C=%``#DBP!#@``W0P`"8!1"
  4238. + MJ0`(-7R`````Y(P`1(``-40``B`*6(!,WTQ\3G4@;P`$("\`""(O``PB;P`0
  4239. + M64](YP\V+`$N`"I(+TD`('`!OH!C``"R)DW7QB`'58!F)"\++PT@32)++&\`
  4240. + M*$Z64$]*@&\``)(@!B!-(DM.NO@T8```A"`'XH@B!DZZ^X8B3=/`(`8@34ZZ
  4241. + M^!HD37H`>`%@*B\-+PL@2R)-+&\`*$Z64$]*@&H24H75QK7+9PH@!B!+(DI.
  4242. + MNO?LU\92A+B'9=*US6<*(`8@32)*3KKWUB9O`"`@!2(&($TB2V$`_U(@2M'&
  4243. + M(`>0A5.`(@8B2TS?;/!8CV``_SI,WVSP6$].=2`O``1(YP$$+@`J;`G48`@@
  4244. + M;0`$3I`J52`-9O1+[`DD<`;`K0`858!F&"`M``20K0`09PXB+0`<(&T`$,%!
  4245. + M3KKO2"!-*E`@#6;6(`=,WR"`3OKEX"`O``0@;P`(0]!2F2!14ID0@$YU44\@
  4246. + M;P`,0I<O2``$2&\`%"\O`!1!^O_>0^\`"$ZZ"_X@;P`,0A!03R`74$].=0``
  4247. + M("\`!"!O``@O#2(`*DA2E4/M``@@$5*1&X$(#"`9#(````(`;11![0`,(FT`
  4248. + M!'(!P4%.N@'P0JT`""I?3G6>_`(,+PTJ;P(40J\`#$*O``0O30`(2&\"'"\O
  4249. + M`AQ!^O^J0^\`#$ZZ"X903R`O``QG$$'O`!`B;P`(<@'!04ZZ`:8(+0`%`!MF
  4250. + M"`@M``0`&V<$</]@!"`O``0J7][\`@Q.=2`O``0@;P`(64](YP,$+@`J2'P`
  4251. + M'T``#W)!TH'"K0`89@P([0`%`!MP_V```4!P,\"M`!A5@&=0<$Q&`,"M`!AR
  4252. + M0-*!L(%F#`CM``$`&T*M``Q@-`@M``4`&V<&</]@``$,<&Y&`,"M`!AR;D8!
  4253. + ML(%F#`CM``$`&T*M``Q@"G``*T``#&```.8@+0`,L*T`%&PR(&T`!%*M``0@
  4254. + M!Q"`4JT`#`@M``8`&V<.<@J^@68(($U.N@-T+`!*AF<``*H@!F```*H(+0`"
  4255. + M`!MG+D*M``P@+0`<0>\`#W(!3KKM="P`4H!F"`CM``4`&V!R(`93@&=L".T`
  4256. + M!``;8&1*K0`49B`@34ZZ]N1*@&<*".T`!0`;</]@6'``*T``#"MM`!``!"`M
  4257. + M``RPK0`4;0@@34ZZ`OHL``CM``$`&R!M``12K0`$(`<0@%*M``P(+0`&`!MG
  4258. + M#G(*OH%F""!-3KH"SBP`2H9G!"`&8`9R`!('(`%,WR#`6$].=2!O``0@+P`(
  4259. + M(B\`#")O`!!93TCG#Q`L`2X`)DDO2``4(`8B!TZZ^#(J`'@`2H=G!$J&9@9P
  4260. + M`&```/QP,,"K`!AF"G!!T(#`JP`89@P(ZP`%`!MP`&```-YP,\"K`!A5@&=0
  4261. + M<$Q&`,"K`!AR0-*!L(%F#`CK``$`&T*K``Q@-`@K``4`&V<&<`!@``"J<&Y&
  4262. + M`,"K`!AR;D8!L(%F#`CK``$`&T*K``Q@"D*K``QP`&```(1*JP`49DP(*P`"
  4263. + M`!MF1"!+3KKUL$J`9SH(ZP`%`!MP`&!@(&\`%!`8(FL`!!*`4JL`!%*K``Q3
  4264. + MA5*$+T@`%'(*L`%F#@@K``8`&V<&($M.N@&R("L`#+"K`!1L!$J%;L)*A6\6
  4265. + M($M.N@&:("L`'"(%(&\`%$ZZZ[38@"`$(@=.NO:43-\(\%A/3G4@;P`$("\`
  4266. + M""(O``PB;P`044](YP\4+@`J22P!)D@O00`8+T@`'$J'9P1*AF8&<`!@``$X
  4267. + M(`8B!TZZ]N(L`'H`<##`K0`89P9P`&```1YP?D8`P*T`&&<``1)P,\"M`!A3
  4268. + M@&<T<%Q&`,"M`!AR0-*!L(%F%`CM````&P@M``0`&V<6<`!@``#D0JT`"`CM
  4269. + M``4`&W``8```U$JM`!1F+@@M``(`&V8F($U.NO2.2H!G'`CM``4`&W``8```
  4270. + ML$/M``0@41;04IE3F5.&4H5*K0`(9P1*AF[F2H9O``"(""T``@`;9@:\K0`4
  4271. + M;S`@+0`<(@8@2TZZ[!PH`$J&:A`([0`%`!L@!2('3KKU@F!>N(9L!@CM``0`
  4272. + M&]J$8$@@;0`0*T@`!"`M`!PB+0`4(&T`$$ZZZ^`H`&P0".T`!0`;(`4B!TZZ
  4273. + M]4A@)$J$9A`([0`$`!L@!2('3KKU-&`0*T0`"&``_VP@!2('3KKU(DS?*/!0
  4274. + M3TYU```@;P`$2.<!!"I((`UG``"@<$'0@,"M`!AF+"!M`!!#[0`$(LA"F4(M
  4275. + M`"!P`"+`""T`!P`;9P8(K0```!L(K0`$`!M@``"*2JT`%&=$("T`#&H&<@`K
  4276. + M00`,("T`#&<H(BT`'"!M`!#!04ZZZ<(N`%*`9@@([0`%`!M@#+ZM``QG!@CM
  4277. + M``0`&RMM`!``!$*M``QP,,"M`!AF$@@M``<`&V<&</S!K0`8<`!@)'#_8"!^
  4278. + M`$OL"21*K0`89PP@36$`_T9*@&<"?O\J52`-9N@@!TS?((!.=2!O``1(YP$$
  4279. + M*DA^`"`-9P8@+0`89@1P_V!`""T``0`;9P@@34ZZ_PHN`'`,P*T`&&8.2JT`
  4280. + M%&<((&T`$$ZZ]=9"K0`8("T`'$ZZT*)2AV<$2H!G!'#_8`)P`$S?((!.=2!O
  4281. + M``0B;P`(+V\`#``$64](YP\4)F\`("I)+T@`&'X`+"P)D'H`2JL`&&<&($M.
  4282. + MNO]T<``0+0`!<BN0@6<@<C:0@6<&4X!G!&`@?`!R*[(M``)7P$0`2(!(P"H`
  4283. + M8`QZ`7!AL"T``F8"?`!P`!`5<F&0@6<,<A&0@6<:6X!G)&`V2H56P'(!D@``
  4284. + M00$(C(%^0.&/8"A*A5;`<@"2`)(`C(%@&DJ%5L!R`9(``$$!``!!`@",@6`&
  4285. + M<`!@``"`+RP)E"\&+R\`($ZZWU1/[P`,*`!2@&8$<`!@8DJ%9P8(QP`'8#!P
  4286. + M`!`5<F&0@6<,<A&0@6<:6X!G&F`:",<``4AX``(@!'(`3KKH]%A/8`9^`6`"
  4287. + M?@((!@`/9@0(QP`/D<A+ZP`0*L@JR"=$`!PG2``$)T@`#"=(``@JQR`+3-\H
  4288. + M\%A/3G4``"!O``0B;P`(44](YP`42.\#```(2^P))&`$)DTJ4R`-9P9*K0`8
  4289. + M9O(@#68><").NO6L*D!*@&8$<`!@'B!-)HAP(7(`$,%1R/_\+PT@;P`,(F\`
  4290. + M$$ZZ_G183TS?*`!03TYU```@;P`$(F\`""]O``P`!"]O`!``")[\`#1(YR\V
  4291. + M)F\`8"IO`%Q([P,``"Q"+P`[0B\`.D(O`#E"+P`X'WP`(``W0J\`5'#_+T``
  4292. + M4$(O`#9^`'P`1>\`/&!*<``@;P`L$!!R()"!9R)7@&<F48!G$E6`9P97@&<B
  4293. + M8#(??``!`#M@'A]\``$`.F`6'WP``0`Y8`X??``!`#A@!A]\`#``-U*O`"P@
  4294. + M;P`L2A!FKG`!L"\`.V8&'WP`(``W<BH@;P`LLA!F'BQO`#`B5EB6(A$O00!4
  4295. + M;`A$KP!4'T``.U*O`"Q@#$/O`%1.NN^RT:\`+"!O`"P0$'(NL`%F1E*O`"QP
  4296. + M*B!O`"RP$&8<(F\`,"!16)$@$"]``%!L!G#_+T``4%*O`"Q@%D/O`%!.NN]P
  4297. + M*@!F!D*O`%!@!-NO`"P??``@`#=P`"!O`"P0$'),D(%G%'(<D(%G!EF`9PI@
  4298. + M$A]\``(`-F`&'WP``0`V4J\`+"!O`"Q2B")O`"P0$7(`$@`?0``D+T@`)G!0
  4299. + MDH!G``$048%G``$<<`N2@&<``=!3@6=06X%G3%N!9R)3@6<``0)3@6<``.I7
  4300. + M@6<``8!5@6<``/!7@6<``.I@``&X)&\`,'`"L"\`-F8.(%)8DB)0(!,R@&``
  4301. + M`DH@4EB2(E`BDV```CXB;P`P(%%8D2@0:@1^`42$2H=G#$7O`#T??``M`#Q@
  4302. + M(DHO`#IG#$7O`#T??``K`#Q@$$HO`#EG#$7O`#T??``@`#Q\`2`$($I.NNV*
  4303. + M*@`@+P!09@9*A&<``>0@+P!0:@9R`2]!`%`H+P!0F(5O'"!*T<0@!2)*3KKP
  4304. + M_'(P($I@`A#!4X1D^BHO`%#<A2`%4X!F``$$$!*P+P`W9@``^DJO`%!F``#R
  4305. + M0A)@``#L("\`4&H&<`@O0`!0'WP``0`V<`*P+P`V9A`B;P`P(%%8D2`0>``X
  4306. + M`&`*(F\`,"!16)$H$!`O`"1R=;`!9P#_6G)OL`%F'DHO`#AG#$7O`#T??``P
  4307. + M`#Q\`2`$($I.NNSZ8`#_/DHO`#AG$A]\`#``/$7O`#X??`!X`#U\`B`$($I.
  4308. + MNNT6*@`(+P`%`"1F`/\40>\`/$ZZ[@)@`/\((F\`,"!16)$D4"`*9@1%^@#R
  4309. + M($I*&&;\4XB1RBH(("\`4&L$L(5O!"]%`%`L+P!08"!\`2)O`#`@45B1(!`?
  4310. + M0``\0B\`/6`&<`!@``"L1>\`/"`O`%2PAFP(<@`O00!48`2=KP!42B\`.V<>
  4311. + M8`AP`!`:($M.E5.&;/1@!B!+<"!.E5.O`%1L]&!J2H=F#$HO`#EF!DHO`#IG
  4312. + M1A`2<B"P`6<,="NP`F<&="VP`F8R2H9K+K(O`#=F$F`*<``0+P`W($M.E5.O
  4313. + M`%1L\'``$!H@2TZ54X9@"G``$"\`-R!+3I53KP!4;/!@"'``$!H@2TZ54X9L
  4314. + M]"`O`"9,WVSTWOP`-$YU```@;P`$(F\`""]O``P`!"]O`!``")[\``Q(YP`4
  4315. + M)DDJ2"]O`!P`$&`X<"6P+P`,9B8@;P`8L!!F!E*O`!A@&"\++PU#[P`83KK[
  4316. + ME%!/2H!G!B]``!A@"G``$"\`#"!+3I4@;P`8$!@?0``,+T@`&$H`9K9,WR@`
  4317. + MWOP`#$YU(&\`!""(6)!"J``$(4@`"$YU```@;P`$2.<`!BI(2JT`"F<*(DTL
  4318. + M>``$3J[^F!M\`/\`"'#_*T``%'``$"T`#RQX``1.KOZP(DUP(DZN_RY,WV``
  4319. + M3G4``"!O``0@+P`(2.<#%BX`*DAP_RQX``1.KOZV'`!(ADC&(`92@&8$<`!@
  4320. + M8'`B(CP``0`!3J[_.B9`2H!F""`&3J[^L&!$0>L`"B#-%T<`"1=\``0`"$(8
  4321. + M$,:3R4ZN_MHG0``0(`UG"")+3J[^GF`:0>L`&"=(`!1!ZP`4)T@`'$*K`!@7
  4322. + M?``"`"`@"TS?:,!.=2\(+P!.N0``(?Y03TYU``````/L`````0```````&9J
  4323. + M`````0````$````*`````````_(```/J```"LD%04@!!54<`1$5#`$9%0@!*
  4324. + M04X`2E5,`$I53@!-05(`34%9`$Y/5@!/0U0`4T50```````````$````!```
  4325. + M``@````(````#`````P````"````$`````$````4````!P```!@````&````
  4326. + M'`````,````@````!0```"0````+````*`````H````L````"0`(`````$``
  4327. + M````'G9I<G1U86P@;65M;W)Y(&5X:&%U<W1E9```=FER='5A;"!M96UO<GD@
  4328. + M97AH875S=&5D```M`"5S``!E<G)O<B!C;&]S:6YG(&9I;&4``'=R:71E(&5R
  4329. + M<F]R`"5S+W-O<G0E-2XU9"4U+C5D`"5S<V]R="4U+C5D)34N-60``')E860@
  4330. + M97)R;W(``'(`)7,Z(&1I<V]R9&5R(&]N("5S"@!R`'<`<@!W`'(`<@!W`&EN
  4331. + M=F%L:60@9FEE;&0@<W!E8VEF:6-A=&EO;B!@)7,G```M`%1-4$1)4@``+W1M
  4332. + M<```;W!T:6]N(&`M:R<@<F5Q=6ER97,@86X@87)G=6UE;G0``&]P=&EO;B!@
  4333. + M+6\G(')E<75I<F5S(&%N(&%R9W5M96YT``!O<'1I;VX@8"UT)R!R97%U:7)E
  4334. + M<R!A;B!A<F=U;65N=```;W!T:6]N(&`M5"<@<F5Q=6ER97,@86X@87)G=6UE
  4335. + M;G0``"5S.B!U;G)E8V]G;FEZ960@;W!T:6]N(&`M)6,G"@``+0!W`'(`=P`E
  4336. + M<P``=P!F9FQU<V@``"T`=W)I=&4@97)R;W(`57-A9V4Z("5S(%LM8VUU<UT@
  4337. + M6RUT('-E<&%R871O<ET@6RUO(&]U='!U="UF:6QE72!;+50@=&5M<&1I<ET@
  4338. + M6RUB9&9I36YR70H@("`@("`@6RM03U,Q(%LM4$]3,EU=(%LM:R!03U,Q6RQ0
  4339. + M3U,R75T@6V9I;&4N+BY="@````!'3E4@=&5X='5T:6QS(#$N-@````+(``!5
  4340. + M;FMN;W=N('-Y<W1E;2!E<G)O<@``)7,Z(```.B`E<P````!/:P``````%```
  4341. + M`````````````````P1C;VYS;VQE.@``)7,Z(```:6YT=6ET:6]N+FQI8G)A
  4342. + M<GD```!T:6UE<BYD979I8V4`````_____V9I9F\N;&EB<F%R>0``````````
  4343. + M`````````V0``0```````````V8```````````````!&86EL960@=&\@8W)E
  4344. + M871E('1I;65R``!U<V5R(&EN=&5R<G5P=````````$YO(&UE;6]R>0```&$`
  4345. + M1F%I;&5D('1O(&-R96%T92!T:6UE<@``3DE,.@``3DE,.@``3DE,.@``*@!.
  4346. + M24PZ``!);G9A;&ED('=I;&1C87)D("5S`$5R<F]R(&5X<&%N9&EN9R!A<F=U
  4347. + M;65N=',`55-%4@``=7-E<@``55-%4DY!344``$A/344``',Z``!32$5,3`!B
  4348. + M:6XZ<V@``$A/4U1.04U%``!A;6EG80!.24PZ`````)LP('$``$9A:6QE9"!T
  4349. + M;R!I;FET:6%L:7-E($DO3P``86UI9V$@<W!E8VEF:6,@97)R;W(`````!(A5
  4350. + M;FMN;W=N(&5R<F]R`&YO="!O=VYE<@!N;R!S=6-H(&9I;&4@;W(@9&ER96-T
  4351. + M;W)Y`&YO('-U8V@@<')O8V5S<P!I;G1E<G)U<'1E9"!S>7-T96T@8V%L;`!I
  4352. + M+V\@97)R;W(`;F\@<W5C:"!D979I8V4@;W(@861D<F5S<P!A<F=U;65N="!L
  4353. + M:7-T('1O;R!L;VYG``!E>&5C(&9O<FUA="!E<G)O<@!B860@9FEL92!N=6UB
  4354. + M97(`;F\@8VAI;&0@<')O8V5S<P``;F\@;6]R92!P<F]C97-S97,`;F]T(&5N
  4355. + M;W5G:"!M96UO<GD`<&5R;6ES<VEO;B!D96YI960`8F%D(&%D9')E<W,`8FQO
  4356. + M8VL@9&5V:6-E(')E<75I<F5D`&UO=6YT(&1E=FEC97,@8G5S>0``9FEL92!E
  4357. + M>&ES=',`8W)O<W,M9&5V:6-E(&QI;FL`;F\@<W5C:"!D979I8V4``&YO="!A
  4358. + M(&1I<F5C=&]R>0!I<R!A(&1I<F5C=&]R>0``:6YV86QI9"!A<F=U;65N=```
  4359. + M9FEL92!T86)L92!O=F5R9FQO=P!T;V\@;6%N>2!O<&5N(&9I;&5S`&YO="!A
  4360. + M('1Y<&5W<FET97(``'1E>'0@9FEL92!B=7-Y``!F:6QE('1O;R!B:6<``&YO
  4361. + M('-P86-E(&QE9G0@;VX@9&5V:6-E`&EL;&5G86P@<V5E:P``<F5A9"UO;FQY
  4362. + M(&9I;&4@<WES=&5M`'1O;R!M86YY(&QI;FMS``!B<F]K96X@<&EP90!M871H
  4363. + M(&%R9W5M96YT`')E<W5L="!T;V\@;&%R9V4``$DO3R!S=')E86T@96UP='D`
  4364. + M`&9I;&4@;F%M92!T;V\@;&]N9P``9&ER96-T;W)Y(&YO="!E;7!T>0!T;V\@
  4365. + M;6%N>2!S;V9T(&QI;FMS("AL;V]P/RD````$H@``!+````2Z```$U```!.0`
  4366. + M``3\```%!@``!2````4X```%2@``!5H```5L```%?@``!9````6B```%K@``
  4367. + M!<0```78```%Y```!?8```8&```&%@``!B8```8X```&3```!F````9R```&
  4368. + M@@``!I````:H```&M@``!LP```;<```&Z```!O8```<(```'&@``!RX```="
  4369. + M````)@``9&]O<BXE;'@N)6QX``!.;R!M96UO<GD```!````@("`@("`@("`H
  4370. + M*"@H*"`@("`@("`@("`@("`@("`@($@0$!`0$!`0$!`0$!`0$!"$A(2$A(2$
  4371. + MA(2$$!`0$!`0$(&!@8&!@0$!`0$!`0$!`0$!`0$!`0$!`0$!$!`0$!`0@H*"
  4372. + M@H*"`@("`@("`@("`@("`@("`@("`@(0$!`0(```````````````````````
  4373. + M````````````````````````````````````````````````````````````
  4374. + M````````````````````````````````````````````````````````````
  4375. + M```````````````````````````````````/H```"48`````````````````
  4376. + M``````````````````````````EH````````````````````````````````
  4377. + M```````````````````````````````````````````````````````````"
  4378. + M````@``````-__\````.``X```````````````#__P````0`!````````%*B
  4379. + M```)F/__````!``$````````4K@``````````````#L```"(````@````'@`
  4380. + M``!P````:````&````!8````4````$@```!`````.````#````+:```#&```
  4381. + M`W@```-L```']@``!_(```?N```'Z@``!^8```?B```'W@``!]H```?6```'
  4382. + MT@``!\X```?*```'Q@``!\(```>^```'N@``![8```>R```'K@``!ZH```>F
  4383. + M```'H@``!YX```>:```'E@``!Y(```>.```'B@``!X8```>"```'?@``!WH`
  4384. + M``=V```'<@``!VX```=J```'9@``!V(```=>```$G@``"48```DD```)O```
  4385. + :`^P````"````````"<P```FX`````````_)>
  4386. + `
  4387. + end
  4388. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/compile.doc emacs-18.59/amiga/amiga-extra/amiga/compile.doc
  4389. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/compile.doc    Thu Jan  1 00:00:00 1970
  4390. --- emacs-18.59/amiga/amiga-extra/amiga/compile.doc    Sun Jan 17 12:21:18 1993
  4391. ***************
  4392. *** 0 ****
  4393. --- 1,34 ----
  4394. + To compile emacs, you will need SAS C 6.01. If you try to make it work
  4395. + with Aztec C or gcc, you might run into difficulties with the dumping code:
  4396. + - The "small" data model (A4-relative) is used, to get all the variables
  4397. +   in one hunk.
  4398. + - Some variables are declared with the "far" attribute to get them out
  4399. +   of this hunk (and the dumping code depends on this). Move these to
  4400. +   the amiga_data.c module (which is for variables that shouldn't be
  4401. +   dumped).
  4402. + To compile:
  4403. + a) Install my 'unix compatibility' library (available by ftp and on fish
  4404. +    disks).
  4405. + b) Install as usual (see INSTALLATION).
  4406. + c) Compile the C preprocessor (SAS's one has a few problems ...):
  4407. +      cd gnuemacs:cpp
  4408. +      smake
  4409. + d) Compile & dump emacs
  4410. +      stack 20000
  4411. +      cd gnuemacs:src
  4412. +      smake
  4413. +      copy temacs /
  4414. +    (This takes around 20 minutes from scratch on an A2500/30).
  4415. + If all goes well, you should have a new version of emacs ...
  4416. + [Note: The DOC strings are not remade systematically. To change this,
  4417. + edit ymakefile and remove the comment from the rule for xemacs]
  4418. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/lisp/amiga-user-name.el emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/lisp/amiga-user-name.el
  4419. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/lisp/amiga-user-name.el    Thu Jan  1 00:00:00 1970
  4420. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/lisp/amiga-user-name.el    Thu Mar 18 22:26:08 1993
  4421. ***************
  4422. *** 0 ****
  4423. --- 1,23 ----
  4424. + ;;
  4425. + ;;  User-Name.el.
  4426. + ;;  ------------
  4427. + ;;   -ch3/11/93.
  4428. + ;;
  4429. + ;;  This is a replacement for the (user-full-name) function that comes
  4430. + ;;  comes with emacs, so that it fetches the login name from $USERNAME
  4431. + ;;  and the full name from $REALNAME.  As is the default on most amiga
  4432. + ;;  systems that are running UUCP and related utils.
  4433. + ;;
  4434. + ;;  It will also check $USER for the login name.
  4435. + ;;
  4436. + (defun user-login-name ()
  4437. +   (if (eq nil (getenv "UserName"))
  4438. +       (getenv "User")
  4439. +     (getenv "UserName")))
  4440. + (defun user-full-name ()
  4441. +   (if (eq nil (getenv "RealName"))
  4442. +       (user-login-name)
  4443. +     (getenv "RealName")))
  4444. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/lisp/fix-endif-no-comment.el emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/lisp/fix-endif-no-comment.el
  4445. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/lisp/fix-endif-no-comment.el    Thu Jan  1 00:00:00 1970
  4446. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/lisp/fix-endif-no-comment.el    Thu Mar 18 22:26:44 1993
  4447. ***************
  4448. *** 0 ****
  4449. --- 1,14 ----
  4450. + ;;
  4451. + ;;  This small bit of lisp will fix the so common #endif somthing
  4452. + ;; (with no comment) code.
  4453. + ;;
  4454. + (defun fix-endif-no-comment ()
  4455. +   (interactive)
  4456. +   (save-excursion
  4457. +     (beginning-of-buffer)
  4458. +     (replace-regexp "^#endif \\(.*\\)" "#endif /* \\1 */")
  4459. +     (beginning-of-buffer)
  4460. +     (replace-regexp "^#endif /\\* /\\* \\(.*\\) \\*/ \\*/" "#endif /* \\1 */")))
  4461. +     
  4462. \ No newline at end of file
  4463. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/rexx/invoker emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/rexx/invoker
  4464. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/rexx/invoker    Thu Jan  1 00:00:00 1970
  4465. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/rexx/invoker    Sat May  8 12:38:48 1993
  4466. ***************
  4467. *** 0 ****
  4468. --- 1,286 ----
  4469. + From: chopps@ro-chp.UUCP (Chris Hopps)
  4470. + Subject: Emacs invoker.
  4471. +     This is the newest invoker of mine I am very pleased with it
  4472. + and think it would be good for inclusion in the main distribution.
  4473. + With the included rexx file (and some of the mods to emacs I sent you
  4474. + earlier,) this invoker supports multiple files on the cmd line.  It
  4475. + also supports turning backups off for the files loaded on that line,
  4476. + and a WAIT command that will have Emacs return the prompt only after
  4477. + the files specified on the command line have been killed.  The invoker
  4478. + also checks to see if Emacs is iconified if so it will de-iconify it.
  4479. + It brings emacs to the front and activates it (my mods needed for
  4480. + this.)
  4481. + This makes leaving GNUEmacs up and running all the time very feasable.
  4482. + The invoker can be used for programs like ``Arn'', ``Elm'' or whatever
  4483. + else kind of program that does something with a file after the editor
  4484. + returns.
  4485. + Here is the lisp code required for using the ``WAIT'' option of the
  4486. + invoker.  It should be loaded in the .emacs file.
  4487. + -------8<-------------8<-------------8<-------------8<-------------8<--
  4488. + ;; [notify-rexx-wait.el] notification of kill of a buffer to rexx.
  4489. + ;; Copyright © 1993 Christian E. Hopps.
  4490. + ;; This program is free software; you can redistribute it and/or modify
  4491. + ;; it under the terms of the GNU General Public License as published by
  4492. + ;; the Free Software Foundation; either version 2 of the License, or
  4493. + ;; (at your option) any later version.
  4494. + ;; This program is distributed in the hope that it will be useful,
  4495. + ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
  4496. + ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  4497. + ;; GNU General Public License for more details.
  4498. + ;; You should have received a copy of the GNU General Public License
  4499. + ;; along with this program; if not, write to the Free Software
  4500. + ;; Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  4501. + ;; I can be contacted at:
  4502. + ;; bix: chopps
  4503. + ;; uucp: chopps@ro-chp.UUCP (sycom.mi.org!ro-chp!chopps)
  4504. + (provide 'notify-rexx-wait)
  4505. + (make-variable-buffer-local 'notify-rexx-port)
  4506. + (set-default 'notify-rexx-port nil)
  4507. + ;;; Set old-kill-buffer to the internal version
  4508. + ;; first check to see if it has already been bound.
  4509. + ;; if not then bind it to the internal.
  4510. + ;;
  4511. + (if (not (fboundp 'old-rexx-notify-kill-buffer ))
  4512. +     (fset 'old-rexx-notify-kill-buffer (symbol-function 'kill-buffer)))
  4513. + ;;; redefine kill-buffer to check to see if it should
  4514. + ;;  notify rexx that the buffer is being killed.
  4515. + ;;
  4516. + (defun kill-buffer (buffer-strp)
  4517. +   "Notifys rexx that the current buffer is about to be killed. If it has one."
  4518. +   (interactive "bBuffer:")
  4519. +   (let ((buf nil))
  4520. +     (setq buf (get-buffer buffer-strp))
  4521. +     (switch-to-buffer buf)
  4522. +     (if (eq notify-rexx-port nil)
  4523. +     (old-rexx-notify-kill-buffer buffer-strp)
  4524. +       (amiga-arexx-send-command (concat "ADDRESS " notify-rexx-port "; QUIT") t)
  4525. +       (old-rexx-notify-kill-buffer buf))))
  4526. + -------8<-------------8<-------------8<-------------8<-------------8<--
  4527. + Here is the rexx code for the invoker, it can be copied to ``rexx:g.rexx''
  4528. + to be called from wshell with ``[prompt]g myfile.c WAIT'' or copied
  4529. + to ``s:g'' (or somewhere in path) to be called from the AmigaShell 
  4530. + (make sure to set the ``s'' script bit.
  4531. + -------8<-------------8<-------------8<-------------8<-------------8<--
  4532. + /***[g.rexx]***************************************************/
  4533. + /* An invoker for GNU Emacs.
  4534. +  * Copyright © 1993 Christian E. Hopps
  4535. +  *
  4536. +  * FILES/M,WAIT=STICKY/S,NOBACKUPS/S"
  4537. +  *
  4538. +  * use WAIT or STICKY option to have g.rexx wait for buffers 
  4539. +  * to be killed before returning (same as TurboText's ``WAIT''
  4540. +  * option or CED's ``STICKY'')
  4541. +  *
  4542. +  * NOBACKUPS will cause the files loaded by g.rexx not
  4543. +  * to perform backup saves.
  4544. +  *
  4545. +  * all options aply only to FILES that are specified on this
  4546. +  * invocation of g.rexx.
  4547. +  *
  4548. +  * This program is free software; you can redistribute it and/or modify
  4549. +  * it under the terms of the GNU General Public License as published by
  4550. +  * the Free Software Foundation; either version 2 of the License, or
  4551. +  * (at your option) any later version.
  4552. +  *
  4553. +  * This program is distributed in the hope that it will be useful,
  4554. +  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  4555. +  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  4556. +  * GNU General Public License for more details.
  4557. +  *
  4558. +  * You should have received a copy of the GNU General Public License
  4559. +  * along with this program; if not, write to the Free Software
  4560. +  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  4561. +  *
  4562. +  * I can be contacted at:
  4563. +  * bix: chopps
  4564. +  * uucp: chopps@ro-chp.UUCP (sycom.mi.org!ro-chp!chopps)
  4565. +  * 
  4566. +  */
  4567. +  
  4568. + options results
  4569. + PARSE ARG argv
  4570. + /* wait for buffer to be killed */
  4571. + wait = 0
  4572. + /* files that are being waited on. */
  4573. + waitingfiles = 0
  4574. + /* do not make backups */
  4575. + nobackups = 0
  4576. + /* Parse the args from command line. */
  4577. + idx = 0
  4578. + DO WHILE argv ~= ""
  4579. +     carg = GetNextItem()
  4580. +     uarg = UPPER(carg)
  4581. +     IF uarg = "STICKY" | uarg = "WAIT" THEN
  4582. +     wait = 1
  4583. +     ELSE IF uarg = "NOBACKUPS" THEN
  4584. +     nobackups = 1
  4585. +     ELSE IF uarg = "?" THEN DO
  4586. +     SAY "template: FILES/M,WAIT=STICKY/S,NOBACKUPS/S"
  4587. +     EXIT 0
  4588. +     END
  4589. +     ELSE IF uarg ~= "" THEN DO
  4590. +     IF SUBSTR(uarg,1,5) = "FILES" THEN DO
  4591. +         IF uarg = "FILES" THEN DO
  4592. +         file = GetNextItem()
  4593. +         IF file = "" THEN DO
  4594. +             SAY "template: FILES/M,WAIT=STICKY/S,NOBACKUPS/S"
  4595. +             EXIT 0
  4596. +         END
  4597. +         END
  4598. +         ELSE IF SUBSTR(uarg,6,1) = "=" THEN DO
  4599. +         file = SUBSTR(carg,7)
  4600. +         IF file = "" THEN DO
  4601. +             SAY "template: FILES/M,WAIT=STICKY/S,NOBACKUPS/S"
  4602. +             EXIT 0
  4603. +         END
  4604. +         END
  4605. +     END
  4606. +     ELSE DO
  4607. +         file = carg
  4608. +         IF file = "" THEN DO
  4609. +         SAY "template: FILES/M,WAIT=STICKY/S,NOBACKUPS/S"
  4610. +         EXIT 0
  4611. +         END
  4612. +     END
  4613. +     dir = PRAGMA('Directory')
  4614. +     IF 0 = pos(':',file) THEN DO
  4615. +         IF lc ~= '/' & lc ~= ':' THEN
  4616. +         dir = dir || '/'
  4617. +         filename = dir || file
  4618. +     END
  4619. +     ELSE DO
  4620. +         IF lc ~= '/' & lc ~= ':' THEN
  4621. +         dir = dir || '/'
  4622. +         filename = dir || file
  4623. +     END
  4624. +     filestoload.idx = filename
  4625. +     idx = idx + 1
  4626. +     END
  4627. + END
  4628. + IF wait = 1 THEN DO
  4629. +     start = 1
  4630. +     notifyport = "EMACS_NOTIFY" || start
  4631. +     DO WHILE SHOW('P',notifyport)
  4632. +     start = start + 1
  4633. +     notifyport = "EMACS_NOTIFY" || start
  4634. +     END
  4635. +     notifymp = OPENPORT(notifyport)
  4636. +     IF ~SHOW('P',notifyport) THEN DO
  4637. +     SAY "Cannot initialize the notification port."
  4638. +     EXIT 20
  4639. +     END
  4640. + END
  4641. + /* Load emacs if it is not already running */
  4642. + if (~show('p', 'EMACS1')) THEN DO
  4643. +     ADDRESS COMMAND
  4644. +     'run >NIL: emacs'
  4645. +     'waitforport EMACS1'
  4646. + END
  4647. + ADDRESS EMACS1
  4648. + IF wait = 1 THEN
  4649. +     "(require 'notify-rexx-wait)"
  4650. + /* will return either nil or t */
  4651. + "(symbol-value 'amiga-emacs-iconified)"
  4652. + IF result = "t" THEN
  4653. +     '(amiga-iconify)'
  4654. + fileidx = 0
  4655. + DO WHILE fileidx < idx
  4656. +     '(buffer-name)'
  4657. +     curbuf = RESULT
  4658. +     lisp = ' (progn '
  4659. +     IF curbuf ~= '"*scratch*"' THEN
  4660. +     lisp = lisp || ' (find-file-other-window "' || filestoload.fileidx || '"))'
  4661. +     ELSE
  4662. +     lisp = lisp || ' (find-file "' || filestoload.fileidx || '"))'
  4663. +     ADDRESS EMACS1 lisp
  4664. +     IF nobackups = 1 THEN DO
  4665. +     "(make-local-variable 'make-backup-files)"
  4666. +     '(setq make-backup-files nil)'
  4667. +     END
  4668. +     IF wait = 1 THEN DO
  4669. +     '(setq notify-rexx-port "' || notifyport || '")'
  4670. +     waitingfiles = waitingfiles + 1;
  4671. +     END
  4672. +     fileidx = fileidx + 1
  4673. + END
  4674. + '(amiga-window-to-front)'
  4675. + '(amiga-activate-window)'
  4676. + IF wait = 1 THEN DO
  4677. +     quitflag = 0
  4678. +     DO FOREVER
  4679. +     IF waitingfiles = 0 THEN
  4680. +         EXIT 0
  4681. +     t = WAITPKT(notifyport)
  4682. +     DO FOREVER
  4683. +         p = GETPKT(notifyport)
  4684. +         IF C2D(p) = 0 THEN BREAK
  4685. +         args = GETARG(p)
  4686. +         PARSE VAR args argval args
  4687. +         IF argval = "QUIT" THEN
  4688. +         waitingfiles = waitingfiles - 1
  4689. +         t = REPLY(p,1)
  4690. +     END
  4691. +     END
  4692. + END
  4693. + EXIT 0
  4694. + GetNextItem: PROCEDURE EXPOSE argv
  4695. + ch = LEFT(argv,1)
  4696. + DO WHILE ch = " " | ch = "    "
  4697. +     argv = SUBSTR(argv,2)
  4698. +     ch = LEFT(argv,1)
  4699. + END
  4700. + ch = LEFT(argv,1)
  4701. + IF ch = '"' THEN
  4702. +     PARSE VAR argv '"'string'"' argv
  4703. + ELSE
  4704. +     PARSE VAR argv string argv
  4705. + RETURN string
  4706. + StripWS: PROCEDURE
  4707. + ARG string
  4708. + RETURN string
  4709. + -------8<-------------8<-------------8<-------------8<-------------8<--
  4710. + ------------------------
  4711. + The Royal Oak Chophouse >> Chris Hopps
  4712. + Royal Oak, Michigan     >> sycom.mi.org!ro-chp!chopps
  4713. + 
  4714. \ No newline at end of file
  4715. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/rexx/sayval.rexx emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/rexx/sayval.rexx
  4716. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/rexx/sayval.rexx    Thu Jan  1 00:00:00 1970
  4717. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/chopps/rexx/sayval.rexx    Thu Mar 18 22:54:36 1993
  4718. ***************
  4719. *** 0 ****
  4720. --- 1,29 ----
  4721. + /* sayval.rexx
  4722. +  * -----------
  4723. +  *  -ch3/18/93.
  4724. +  *
  4725. +  *  call from dos prompt:
  4726. +  *
  4727. +  *  sayval <some-emacs-symbol-name>
  4728. +  *
  4729. +  * ex:  sayval amiga-emacs-iconified
  4730. +  * 
  4731. +  *  Christian E. Hopps.
  4732. +  */
  4733. + /* get the first arg from the command line and store in symbol */
  4734. + parse arg symbol
  4735. + /* address the emacs port */
  4736. + address EMACS1
  4737. + /* ask for full results */
  4738. + options results 
  4739. + /* construct lisp inside emacs this will look like this
  4740. +  *
  4741. +  * (symbol-value 'some-variable-name) */
  4742. + /* call function by quoting the lisp code. */
  4743. + "(symbol-value '" || symbol || ")"
  4744. + say RESULT
  4745. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/README emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/README
  4746. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/README    Thu Jan  1 00:00:00 1970
  4747. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/README    Thu Oct  1 07:30:20 1992
  4748. ***************
  4749. *** 0 ****
  4750. --- 1,50 ----
  4751. + dtags allows you to quickly lookup the autodocs for the AmigaOS functions
  4752. + while programming. It is a modification of the emacs TAGS facility.
  4753. + For example, you have forgotten the parameters for MakeLink. Your buffer contains:
  4754. +   if (MakeLink(
  4755. + you press the magic key (in my case M-g), and you get in an other buffer:
  4756. + dos.library/MakeLink                                     dos.library/MakeLink
  4757. +    NAME
  4758. +     MakeLink -- Creates a filesystem link (V36)
  4759. +    SYNOPSIS
  4760. +    [...]
  4761. + which should solve all your problems ...
  4762. + To install this facility, you must:
  4763. + a) Have an assign of DOCS: to the directory containing the AmigaOS 2.0 autodocs.
  4764. + b) Copy dtags.el and dtags.elc to your lisp directory (probably gnuemacs:lisp).
  4765. + c) Execute the make-dtags.el file once (with M-x load-file). This will create
  4766. + a file called DTAGS in DOCS: to help emacs find the functions in the autodocs.
  4767. + d) Add the following lines to your .emacs file:
  4768. + (autoload 'visit-dtags-table "dtags" nil t)
  4769. + (autoload 'doc-tag "dtags" nil t)
  4770. + (autoload 'dtags-search "dtags" nil t)
  4771. + (autoload 'list-dtags "dtags" nil t)
  4772. + (autoload 'dtags-apropos "dtags" nil t)
  4773. + (autoload 'make-dtags "dtags" nil t)
  4774. + and optionally a key definition to execute doc-tag (the autodoc lookup function):
  4775. + (define-key global-map "\M-g" 'doc-tag)
  4776. + Usage:
  4777. + -----
  4778. + You just press M-g (if you chose that key). Emacs will prompt you for the
  4779. + function to lookup, but it will propose as a default a word near your
  4780. + cursor. Once this has been chosen, emacs will display the appropriate autodoc.
  4781. + You can enter a substring of the function name, in which case emacs will display
  4782. + the first one that matches it. If you want to see other functions containing the
  4783. + same substring, press M-, (or M-x tags-loop-continue).
  4784. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/dtags.el emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/dtags.el
  4785. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/dtags.el    Thu Jan  1 00:00:00 1970
  4786. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/dtags.el    Mon Dec 23 21:21:46 1991
  4787. ***************
  4788. *** 0 ****
  4789. --- 1,237 ----
  4790. + ;; Dtags facility for Emacs.
  4791. + ;; Copyright (C) 1985, 1986, 1988 Free Software Foundation, Inc.
  4792. + ;; This file is part of GNU Emacs.
  4793. + ;; GNU Emacs is distributed in the hope that it will be useful,
  4794. + ;; but WITHOUT ANY WARRANTY.  No author or distributor
  4795. + ;; accepts responsibility to anyone for the consequences of using it
  4796. + ;; or for whether it serves any particular purpose or works at all,
  4797. + ;; unless he says so in writing.  Refer to the GNU Emacs General Public
  4798. + ;; License for full details.
  4799. + ;; Everyone is granted permission to copy, modify and redistribute
  4800. + ;; GNU Emacs, but only under the conditions described in the
  4801. + ;; GNU Emacs General Public License.   A copy of this license is
  4802. + ;; supposed to have been given to you along with GNU Emacs so you
  4803. + ;; can know your rights and responsibilities.  It should be in a
  4804. + ;; file named COPYING.  Among other things, the copyright notice
  4805. + ;; and this notice must be preserved on all copies.
  4806. + (provide 'dtags)
  4807. + (load "tags")
  4808. + (defvar dtag-table-files nil
  4809. +   "List of file names covered by current dtag table.
  4810. + nil means it has not been computed yet; do (dtag-table-files) to compute it.")
  4811. + (defvar dtags-file-name "docs:DTAGS"
  4812. +   "Where to find the doc tags, use visit-dtags-table to change it.")
  4813. + (defun visit-dtags-table (file)
  4814. +   "Tell dtags commands to use tag table file FILE.
  4815. + FILE should be the name of a file created with the `etags' program.
  4816. + A directory name is ok too; it means file TAGS in that directory."
  4817. +   (interactive (list (read-file-name "Visit tags table: (default TAGS) "
  4818. +                      default-directory
  4819. +                      (concat default-directory "TAGS")
  4820. +                      t)))
  4821. +   (setq file (expand-file-name file))
  4822. +   (if (file-directory-p file)
  4823. +       (setq file (concat file "DTAGS")))
  4824. +   (setq dtag-table-files nil
  4825. +     dtags-file-name file))
  4826. + (defun visit-dtags-table-buffer ()
  4827. +   "Select the buffer containing the current tag table.
  4828. + This is a file whose name is in the variable tags-file-name."
  4829. +   (or dtags-file-name
  4830. +       (call-interactively 'visit-dtags-table))
  4831. +   (set-buffer (or (get-file-buffer dtags-file-name)
  4832. +           (progn
  4833. +             (setq dtag-table-files nil)
  4834. +             (find-file-noselect dtags-file-name))))
  4835. +   (or (verify-visited-file-modtime (get-file-buffer dtags-file-name))
  4836. +       (cond ((yes-or-no-p "Dtags file has changed, read new contents? ")
  4837. +          (revert-buffer t t)
  4838. +          (setq dtag-table-files nil))))
  4839. +   (or (eq (char-after 1) ?\^L)
  4840. +       (error "File %s not a valid dtag table" dtags-file-name)))
  4841. + (defun dtag-table-files ()
  4842. +   "Return a list of files in the current dtag table.
  4843. + File names returned are absolute."
  4844. +   (save-excursion
  4845. +    (visit-dtags-table-buffer)
  4846. +    (or dtag-table-files
  4847. +        (let (files)
  4848. +     (goto-char (point-min))
  4849. +     (while (not (eobp))
  4850. +       (forward-line 1)
  4851. +       (end-of-line)
  4852. +       (skip-chars-backward "^,\n")
  4853. +       (setq prev (point))
  4854. +       (setq size (read (current-buffer)))
  4855. +       (goto-char prev)
  4856. +       (setq files (cons (expand-file-name
  4857. +                  (buffer-substring (1- (point))
  4858. +                            (save-excursion
  4859. +                          (beginning-of-line)
  4860. +                          (point)))
  4861. +                  (file-name-directory dtags-file-name))
  4862. +                 files))
  4863. +       (forward-line 1)
  4864. +       (forward-char size))
  4865. +     (setq dtag-table-files (nreverse files))))))
  4866. + (defun doc-tag (tagname &optional next)
  4867. +   "Find tag (in current tag table) whose name contains TAGNAME.
  4868. +  Selects the buffer that the tag is contained in
  4869. + and puts point at its definition.
  4870. +  If TAGNAME is a null string, the expression in the buffer
  4871. + around or before point is used as the tag name.
  4872. +  If second arg NEXT is non-nil (interactively, with prefix arg),
  4873. + searches for the next tag in the tag table
  4874. + that matches the tagname used in the previous find-tag.
  4875. + See documentation of variable tags-file-name."
  4876. +   (interactive (if current-prefix-arg
  4877. +            '(nil t)
  4878. +          (find-tag-tag "Find tag: ")))
  4879. +   (let (buffer file linebeg startpos)
  4880. +     (save-excursion
  4881. +      (visit-dtags-table-buffer)
  4882. +      (if (not next)
  4883. +      (goto-char (point-min))
  4884. +        (setq tagname last-tag))
  4885. +      (setq last-tag tagname)
  4886. +      (while (progn
  4887. +           (if (not (search-forward tagname nil t))
  4888. +           (error "No %sentries containing %s"
  4889. +              (if next "more " "") tagname))
  4890. +           (not (looking-at "[^\n\177]*\177"))))
  4891. +      (search-forward "\177")
  4892. +      (setq file (expand-file-name (file-of-tag)
  4893. +                   (file-name-directory dtags-file-name)))
  4894. +      (setq linebeg
  4895. +        (buffer-substring (1- (point))
  4896. +                  (save-excursion (beginning-of-line) (point))))
  4897. +      (search-forward ",")
  4898. +      (setq startpos (read (current-buffer))))
  4899. +     (let ((win (selected-window)))
  4900. +       (find-file-other-window file)
  4901. +       (widen)
  4902. +       (push-mark)
  4903. +       (let ((offset 1000)
  4904. +         found
  4905. +         (pat (concat (regexp-quote linebeg) "[ \t]")))
  4906. +     (or startpos (setq startpos (point-min)))
  4907. +     (while (and (not found)
  4908. +             (progn
  4909. +               (goto-char (- startpos offset))
  4910. +               (not (bobp))))
  4911. +       (setq found
  4912. +         (re-search-forward pat (+ startpos offset) t))
  4913. +       (setq offset (* 3 offset)))
  4914. +     (or found
  4915. +         (re-search-forward pat nil t)
  4916. +         (error "%s not found in %s" pat file)))
  4917. +       (beginning-of-line)
  4918. +       (recenter 0)
  4919. +       (select-window win)))
  4920. +   (setq tags-loop-form '(doc-tag nil t))
  4921. +   ;; Return t in case used as the tags-loop-form.
  4922. +   t)
  4923. + (defun dtags-search (regexp)
  4924. +   "Search through all files listed in tag table for match for REGEXP.
  4925. + Stops when a match is found.
  4926. + To continue searching for next match, use command \\[tags-loop-continue].
  4927. + See documentation of variable tags-file-name."
  4928. +   (interactive "sTags search (regexp): ")
  4929. +   (if (and (equal regexp "")
  4930. +        (eq (car tags-loop-form) 're-search-forward))
  4931. +       (tags-loop-continue nil)
  4932. +     (setq tags-loop-form
  4933. +       (list 're-search-forward regexp nil t))
  4934. +     (setq next-file-list (dtag-table-files))
  4935. +     (next-file)
  4936. +     (tags-loop-continue)))
  4937. + (defun list-dtags (string)
  4938. +   "Display list of dtags in file FILE.
  4939. + FILE should not contain a directory spec
  4940. + unless it has one in the dtag table."
  4941. +   (interactive "sList dtags (in file): ")
  4942. +   (with-output-to-temp-buffer "*Dtags List*"
  4943. +     (princ "Dtags in file ")
  4944. +     (princ string)
  4945. +     (terpri)
  4946. +     (save-excursion
  4947. +      (visit-dtags-table-buffer)
  4948. +      (goto-char 1)
  4949. +      (search-forward (concat "\f\n" string ","))
  4950. +      (forward-line 1)
  4951. +      (while (not (or (eobp) (looking-at "\f")))
  4952. +        (princ (buffer-substring (point)
  4953. +                 (progn (skip-chars-forward "^\177")
  4954. +                        (point))))
  4955. +        (terpri)
  4956. +        (forward-line 1)))))
  4957. + (defun dtags-apropos (string)
  4958. +   "Display list of all dtags in dtag table REGEXP matches."
  4959. +   (interactive "sDtag apropos (regexp): ")
  4960. +   (with-output-to-temp-buffer "*Dtags List*"
  4961. +     (princ "Dtags matching regexp ")
  4962. +     (prin1 string)
  4963. +     (terpri)
  4964. +     (save-excursion
  4965. +      (visit-dtags-table-buffer)
  4966. +      (goto-char 1)
  4967. +      (while (re-search-forward string nil t)
  4968. +        (beginning-of-line)
  4969. +        (princ (buffer-substring (point)
  4970. +                 (progn (skip-chars-forward "^\177")
  4971. +                        (point))))
  4972. +        (terpri)
  4973. +        (forward-line 1)))))
  4974. + (defun make-dtags (file)
  4975. +   (interactive "FDoc file: ")
  4976. +   (setq file (expand-file-name file))
  4977. +   (save-excursion
  4978. +     (find-file-noselect dtags-file-name)
  4979. +     (let ((buf-doc (get-buffer-create "*make-doc-temp*"))
  4980. +       (buf-tags (get-buffer-create dtags-file-name)))
  4981. +       ; First, create the header for the tags
  4982. +       (set-buffer buf-tags)
  4983. +       (goto-char (point-max))
  4984. +       (insert ?\f ?\n file ?,)
  4985. +       (let ((size-pos (point)))
  4986. +     (insert ?\n)
  4987. +     ; Now, we prepare the doc file
  4988. +     (set-buffer buf-doc)
  4989. +         (erase-buffer)
  4990. +     (insert-file file)
  4991. +     (goto-char (point-min))
  4992. +         ; We are now ready to find entries
  4993. +     (while (and (search-forward "\f" nil t)
  4994. +             (progn
  4995. +               (skip-chars-forward "\n")
  4996. +               (not (eobp))))
  4997. +       (let ((beg (point)))
  4998. +         (skip-chars-forward "^ \t")
  4999. +         (let ((fn (buffer-substring beg (point)))
  5000. +           (line (1+ (count-lines 1 beg))))
  5001. +           (set-buffer buf-tags)
  5002. +           (insert fn 127 (int-to-string line) ?, (int-to-string beg) ?\n)
  5003. +           (set-buffer buf-doc))))
  5004. +     (set-buffer buf-tags)
  5005. +     (let ((size (- (point) size-pos 1)))
  5006. +       (goto-char size-pos)
  5007. +       (insert (int-to-string size))))))
  5008. +   (pop-to-buffer (get-buffer dtags-file-name) t))
  5009. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/dtags.elc and emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/dtags.elc differ
  5010. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/make-dtags.el emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/make-dtags.el
  5011. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/make-dtags.el    Thu Jan  1 00:00:00 1970
  5012. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/dgay/make-dtags.el    Thu Oct  1 07:24:18 1992
  5013. ***************
  5014. *** 0 ****
  5015. --- 1,47 ----
  5016. + (require 'dtags)
  5017. + (make-dtags "docs:amiga.lib.doc")
  5018. + (make-dtags "docs:asl.doc")
  5019. + (make-dtags "docs:audio.doc")
  5020. + (make-dtags "docs:battclock.doc")
  5021. + (make-dtags "docs:battmem.doc")
  5022. + (make-dtags "docs:cia.doc")
  5023. + (make-dtags "docs:clipboard.doc")
  5024. + (make-dtags "docs:commodities.doc")
  5025. + (make-dtags "docs:console.doc")
  5026. + (make-dtags "docs:cx_lib.doc")
  5027. + (make-dtags "docs:debug.doc")
  5028. + (make-dtags "docs:disk.doc")
  5029. + (make-dtags "docs:diskfont.doc")
  5030. + (make-dtags "docs:dos.doc")
  5031. + (make-dtags "docs:exec.doc")
  5032. + (make-dtags "docs:expansion.doc")
  5033. + (make-dtags "docs:filesysres.doc")
  5034. + (make-dtags "docs:gadtools.doc")
  5035. + (make-dtags "docs:gameport.doc")
  5036. + (make-dtags "docs:graphics.doc")
  5037. + (make-dtags "docs:icon.doc")
  5038. + (make-dtags "docs:iffparse.doc")
  5039. + (make-dtags "docs:input.doc")
  5040. + (make-dtags "docs:intuition.doc")
  5041. + (make-dtags "docs:keyboard.doc")
  5042. + (make-dtags "docs:keymap.doc")
  5043. + (make-dtags "docs:layers.doc")
  5044. + (make-dtags "docs:mathffp.doc")
  5045. + (make-dtags "docs:mathieeedoubbas.doc")
  5046. + (make-dtags "docs:mathieeedoubtrans.doc")
  5047. + (make-dtags "docs:mathieeesingbas.doc")
  5048. + (make-dtags "docs:mathieeesingtrans.doc")
  5049. + (make-dtags "docs:mathtrans.doc")
  5050. + (make-dtags "docs:misc.doc")
  5051. + (make-dtags "docs:narrator.doc")
  5052. + (make-dtags "docs:parallel.doc")
  5053. + (make-dtags "docs:potgo.doc")
  5054. + (make-dtags "docs:printer.doc")
  5055. + (make-dtags "docs:rexxsyslib.doc")
  5056. + (make-dtags "docs:serial.doc")
  5057. + (make-dtags "docs:timer.doc")
  5058. + (make-dtags "docs:trackdisk.doc")
  5059. + (make-dtags "docs:translator.doc")
  5060. + (make-dtags "docs:utility.doc")
  5061. + (make-dtags "docs:wb.doc")
  5062. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/README emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/README
  5063. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/README    Thu Jan  1 00:00:00 1970
  5064. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/README    Thu Oct  1 07:17:36 1992
  5065. ***************
  5066. *** 0 ****
  5067. --- 1,45 ----
  5068. + This directory contains several utilities sent by Tapio Hesikanen.
  5069. + Here follow a few explanations:
  5070. + From: hessu@fipnet.fi (Tapio Heiskanen)
  5071. + To: dgay@di.epfl.ch
  5072. + Subject: Here's a couple of software for you
  5073. + I was in need of fakemail and movemail, so I made them with some help of my
  5074. + friend. Both of those programs are in GNUEmacs distibution, so I thought if
  5075. + you'd like to include them.
  5076. + They should be developed further, but they fill my needs.
  5077. + If you make any changes to them, please send sources and binaries to me.
  5078. + I suppose you know how the progs should work so I won't write any docs for
  5079. + them.
  5080. + I also have an AREXX version of inews made up. If you would like to have,
  5081. + I could send to you. Maybe it should be in C, but REXX was enough for me.
  5082. + --
  5083. +  Tapio (hessu) Heiskanen  _|_  Internet: hessu@diode.fipnet.fi
  5084. +   Sarkiniementie 11 B 18  \ /  ICBM: 60 08 58 N / 24 52 53 E
  5085. +          00210  HELSINKI  _Y_  Telephone: +358 0 678284
  5086. +                  FINLAND   |   Data: +358 0 6822206
  5087. + From: hessu@fipnet.fi (Tapio Heiskanen)
  5088. + To: dgay@di.epfl.ch
  5089. + Subject: Re: GNU Emacs 18.58, Amiga port 1.24
  5090. + [...]
  5091. + BTW: Included is a emacs.rexx script I made to ease my life. It checks first
  5092. + if the REXX-port exists and then starts emacs or just sends a rexx command
  5093. + respectively.
  5094. + --
  5095. +  Tapio (hessu) Heiskanen  _|_  Internet: hessu@diode.fipnet.fi
  5096. +   Sarkiniementie 11 B 18  \ /  ICBM: 60 08 58 N / 24 52 53 E
  5097. +          00210  HELSINKI  _Y_  Telephone: +358 0 678284
  5098. +                  FINLAND   |   Data: +358 0 6822206
  5099. + distinews.lha contains directions for installing GNUS, the emacs news-reader,
  5100. + and a replacement for the inews command.
  5101. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/distinews.lha and emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/distinews.lha differ
  5102. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/emacs.rexx emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/emacs.rexx
  5103. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/emacs.rexx    Thu Jan  1 00:00:00 1970
  5104. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/emacs.rexx    Thu Oct  1 06:56:54 1992
  5105. ***************
  5106. *** 0 ****
  5107. --- 1,25 ----
  5108. + /* emacs.rexx */
  5109. + parse arg params
  5110. + id=pragma('id')
  5111. + if ~show('P', 'EMACS1') then do
  5112. +     if ~open(out, 't:emacs', 'w') then do
  5113. +         say "EMACS.REXX: Can't open temporary file!"
  5114. +         exit 5
  5115. +     end
  5116. +     call writeln(out, 'stack 49152')
  5117. +     call writeln(out, 'run >nil: <nil: temacs' params)
  5118. +     call writeln(out, 'stack 16384')
  5119. +     call close(out)
  5120. +     address command 'execute t:emacs'
  5121. +     exit
  5122. + end
  5123. + if word(params,1)='-f' then do
  5124. +     address 'EMACS1' '('subword(params, 2)')'
  5125. +     exit
  5126. + end
  5127. + address 'EMACS1' '(find-file "'params'")'
  5128. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/cc emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/cc
  5129. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/cc    Thu Jan  1 00:00:00 1970
  5130. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/cc    Mon Jul 20 18:55:54 1992
  5131. ***************
  5132. *** 0 ****
  5133. --- 1,6 ----
  5134. + older fakemail.o fakemail.c
  5135. + if warn
  5136. +    incver version.h
  5137. + endif
  5138. + lc -L -M -E fakemail.c
  5139. + protect fakemail +p
  5140. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/fakemail and emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/fakemail differ
  5141. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/fakemail.c emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/fakemail.c
  5142. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/fakemail.c    Thu Jan  1 00:00:00 1970
  5143. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/fakemail.c    Wed Jul 22 17:40:22 1992
  5144. ***************
  5145. *** 0 ****
  5146. --- 1,68 ----
  5147. + /*
  5148. +  * FAKEMAIL.C
  5149. +  *
  5150. +  * compile: cc
  5151. +  *
  5152. +  * Written by Tapio Heiskanen
  5153. +  *
  5154. +  * Copyright (c) 1992 Ferry Island Technologies
  5155. +  * All rights reserved
  5156. +  *
  5157. +  * Created: 20-Jul-92
  5158. +  */
  5159. + #include "version.h"
  5160. + #include <proto/dos.h>
  5161. + #include <stdio.h>
  5162. + #include <stdlib.h>
  5163. + char *version="$VER: fakemail V"VERSION;
  5164. + void main(int ac, char **arg)
  5165. +     {
  5166. +     char buf[256], hdr[256], name[256];
  5167. +     FILE *fifo, *sign;
  5168. +     int header=1;
  5169. +     sprintf(name, "T:fakemail%d", (int)name);
  5170. +     if(!(fifo=fopen(name, "w")))
  5171. +         {
  5172. +         printf("FAKEMAIL: Can't open temporary file %s\n", name);
  5173. +         exit(10);
  5174. +         }
  5175. + /* pipe stdin to t:<name> */
  5176. +     while(fgets(buf, 256, stdin))
  5177. +         {
  5178. +         if(*buf=='\n' && header)
  5179. +             if(sign=fopen("uulib:.fakemailhdrs", "r"))
  5180. +                 {        
  5181. +                 while(fgets(hdr, 256, sign))
  5182. +                     fputs(hdr, fifo);
  5183. +                 fclose(sign);
  5184. +                 header=0;
  5185. +                 }
  5186. +         fputs(buf, fifo);
  5187. +         }
  5188. + /* cat uulib:.signature to t:<name> */
  5189. +     if(sign=fopen("uulib:.signature", "r"))
  5190. +         {        
  5191. +         while(fgets(buf, 256, sign))
  5192. +             fputs(buf, fifo);
  5193. +         fclose(sign);
  5194. +         }
  5195. +     fclose(fifo);
  5196. + /* give the file for sendmail */
  5197. +     sprintf(name, "sendmail -f $user <T:fakemail%d", (int)name);
  5198. +     Execute(name, 0, 0);
  5199. +     sprintf(name, "T:fakemail%d", (int)name);
  5200. +     remove(name);
  5201. +     }
  5202. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/sascopts emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/sascopts
  5203. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/sascopts    Thu Jan  1 00:00:00 1970
  5204. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/sascopts    Mon Jul 20 18:55:52 1992
  5205. ***************
  5206. *** 0 ****
  5207. --- 1,7 ----
  5208. + -rr
  5209. + -v
  5210. + -cs
  5211. + -ms
  5212. + -Lc
  5213. + -Ld
  5214. + -Pfakemail
  5215. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/version.h emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/version.h
  5216. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/version.h    Thu Jan  1 00:00:00 1970
  5217. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/fakemail/version.h    Wed Jul 22 17:40:32 1992
  5218. ***************
  5219. *** 0 ****
  5220. --- 1 ----
  5221. + #define VERSION "0.06"
  5222. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/cc emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/cc
  5223. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/cc    Thu Jan  1 00:00:00 1970
  5224. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/cc    Wed Jul 22 17:01:58 1992
  5225. ***************
  5226. *** 0 ****
  5227. --- 1,6 ----
  5228. + older movemail.o movemail.c
  5229. + if warn
  5230. +    incver version.h
  5231. + endif
  5232. + lc -L -M -E movemail.c
  5233. + protect movemail +p
  5234. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/movemail and emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/movemail differ
  5235. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/movemail.c emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/movemail.c
  5236. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/movemail.c    Thu Jan  1 00:00:00 1970
  5237. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/movemail.c    Wed Jul 22 17:36:28 1992
  5238. ***************
  5239. *** 0 ****
  5240. --- 1,44 ----
  5241. + /*
  5242. +  * MOVEMAIL.C
  5243. +  *
  5244. +  * compile: cc
  5245. +  *
  5246. +  * Written by Tapio Heiskanen
  5247. +  *
  5248. +  * Copyright (c) 1992 Ferry Island Technologies
  5249. +  * All rights reserved
  5250. +  *
  5251. +  * Created: 22-Jul-92
  5252. +  */
  5253. + #include "version.h"
  5254. + #include <proto/dos.h>
  5255. + #include <stdio.h>
  5256. + #include <stdlib.h>
  5257. + char *version="$VER: movemail V"VERSION;
  5258. + void main(int ac, char **arg)
  5259. +     {
  5260. +     char buf[256];
  5261. +     FILE *tofile, *spoolfile;
  5262. +     if(!(spoolfile=fopen(arg[1], "r")))
  5263. +         {
  5264. +         printf("movemail: Can't open spool file %s\n", arg[1]);
  5265. +         exit(10);
  5266. +         }
  5267. +     if(!(tofile=fopen(arg[2], "a")))
  5268. +         {
  5269. +         printf("movemail: Can't open to file %s\n", arg[2]);
  5270. +         exit(10);
  5271. +         }
  5272. +     while(fgets(buf, 256, spoolfile))
  5273. +         fputs(buf, tofile);
  5274. +     fcloseall();
  5275. +     remove(arg[1]);
  5276. +     }
  5277. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/sascopts emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/sascopts
  5278. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/sascopts    Thu Jan  1 00:00:00 1970
  5279. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/sascopts    Wed Jul 22 17:01:56 1992
  5280. ***************
  5281. *** 0 ****
  5282. --- 1,7 ----
  5283. + -rr
  5284. + -v
  5285. + -cs
  5286. + -ms
  5287. + -Lc
  5288. + -Ld
  5289. + -Pmovemail
  5290. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/version.h emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/version.h
  5291. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/version.h    Thu Jan  1 00:00:00 1970
  5292. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/hessu/movemail/version.h    Wed Jul 22 17:36:32 1992
  5293. ***************
  5294. *** 0 ****
  5295. --- 1 ----
  5296. + #define VERSION "0.02"
  5297. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/kaiser/README emacs-18.59/amiga/amiga-extra/amiga/contrib/kaiser/README
  5298. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/kaiser/README    Thu Jan  1 00:00:00 1970
  5299. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/kaiser/README    Sun Jan 17 11:48:08 1993
  5300. ***************
  5301. *** 0 ****
  5302. --- 1,24 ----
  5303. + Hi David !
  5304. + Just got your Emacs-port for my A 3000 - good work ! As I didn't have a
  5305. + tool for creating public screens, too, I simply wrote one. It's appended
  5306. + here (uuencoded). If you like it, include it in your next distribution.
  5307. + Regards, Michael
  5308. + ------------------------------------------------------------------------------
  5309. + Michael Kaiser                                     / Only my personal opinions
  5310. + Universitaet Karlsruhe
  5311. + Institut fuer Prozessrechentechnik und Robotik    Internet : kaiser@ira.uka.de
  5312. + Postfach 6980                                     Tel.     : +49 721 608-4051
  5313. + D-7500 Karlsruhe 1, FR Germany                    FAX      : +49 721 606-740
  5314. + ------------------------------------------------------------------------------
  5315. + Privat:
  5316. + Rintheimer Strasse 59                                     // Have you
  5317. + D-7500 Karlsruhe 1, FR Germany                           // hugged
  5318. +                                                      \\ // your 
  5319. + Tel.  : (+49) (721) 61 18 19                          \X/ Amiga today ?
  5320. + Komm. : Michael_Kaiser@KA.maus.de                        [A3000/20/260]
  5321. + ------------------------------------------------------------------------------
  5322. + "Die schiessen auf mein schoenes Auto ... !"                         (Canardo)
  5323. + ------------------------------------------------------------------------------
  5324. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/kaiser/pub and emacs-18.59/amiga/amiga-extra/amiga/contrib/kaiser/pub differ
  5325. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/COPYING emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/COPYING
  5326. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/COPYING    Thu Jan  1 00:00:00 1970
  5327. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/COPYING    Thu Sep 30 17:29:32 1993
  5328. ***************
  5329. *** 0 ****
  5330. --- 1,339 ----
  5331. +             GNU GENERAL PUBLIC LICENSE
  5332. +                Version 2, June 1991
  5333. +  Copyright (C) 1989, 1991 Free Software Foundation, Inc.
  5334. +                           675 Mass Ave, Cambridge, MA 02139, USA
  5335. +  Everyone is permitted to copy and distribute verbatim copies
  5336. +  of this license document, but changing it is not allowed.
  5337. +                 Preamble
  5338. +   The licenses for most software are designed to take away your
  5339. + freedom to share and change it.  By contrast, the GNU General Public
  5340. + License is intended to guarantee your freedom to share and change free
  5341. + software--to make sure the software is free for all its users.  This
  5342. + General Public License applies to most of the Free Software
  5343. + Foundation's software and to any other program whose authors commit to
  5344. + using it.  (Some other Free Software Foundation software is covered by
  5345. + the GNU Library General Public License instead.)  You can apply it to
  5346. + your programs, too.
  5347. +   When we speak of free software, we are referring to freedom, not
  5348. + price.  Our General Public Licenses are designed to make sure that you
  5349. + have the freedom to distribute copies of free software (and charge for
  5350. + this service if you wish), that you receive source code or can get it
  5351. + if you want it, that you can change the software or use pieces of it
  5352. + in new free programs; and that you know you can do these things.
  5353. +   To protect your rights, we need to make restrictions that forbid
  5354. + anyone to deny you these rights or to ask you to surrender the rights.
  5355. + These restrictions translate to certain responsibilities for you if you
  5356. + distribute copies of the software, or if you modify it.
  5357. +   For example, if you distribute copies of such a program, whether
  5358. + gratis or for a fee, you must give the recipients all the rights that
  5359. + you have.  You must make sure that they, too, receive or can get the
  5360. + source code.  And you must show them these terms so they know their
  5361. + rights.
  5362. +   We protect your rights with two steps: (1) copyright the software, and
  5363. + (2) offer you this license which gives you legal permission to copy,
  5364. + distribute and/or modify the software.
  5365. +   Also, for each author's protection and ours, we want to make certain
  5366. + that everyone understands that there is no warranty for this free
  5367. + software.  If the software is modified by someone else and passed on, we
  5368. + want its recipients to know that what they have is not the original, so
  5369. + that any problems introduced by others will not reflect on the original
  5370. + authors' reputations.
  5371. +   Finally, any free program is threatened constantly by software
  5372. + patents.  We wish to avoid the danger that redistributors of a free
  5373. + program will individually obtain patent licenses, in effect making the
  5374. + program proprietary.  To prevent this, we have made it clear that any
  5375. + patent must be licensed for everyone's free use or not licensed at all.
  5376. +   The precise terms and conditions for copying, distribution and
  5377. + modification follow.
  5378. +             GNU GENERAL PUBLIC LICENSE
  5379. +    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
  5380. +   0. This License applies to any program or other work which contains
  5381. + a notice placed by the copyright holder saying it may be distributed
  5382. + under the terms of this General Public License.  The "Program", below,
  5383. + refers to any such program or work, and a "work based on the Program"
  5384. + means either the Program or any derivative work under copyright law:
  5385. + that is to say, a work containing the Program or a portion of it,
  5386. + either verbatim or with modifications and/or translated into another
  5387. + language.  (Hereinafter, translation is included without limitation in
  5388. + the term "modification".)  Each licensee is addressed as "you".
  5389. + Activities other than copying, distribution and modification are not
  5390. + covered by this License; they are outside its scope.  The act of
  5391. + running the Program is not restricted, and the output from the Program
  5392. + is covered only if its contents constitute a work based on the
  5393. + Program (independent of having been made by running the Program).
  5394. + Whether that is true depends on what the Program does.
  5395. +   1. You may copy and distribute verbatim copies of the Program's
  5396. + source code as you receive it, in any medium, provided that you
  5397. + conspicuously and appropriately publish on each copy an appropriate
  5398. + copyright notice and disclaimer of warranty; keep intact all the
  5399. + notices that refer to this License and to the absence of any warranty;
  5400. + and give any other recipients of the Program a copy of this License
  5401. + along with the Program.
  5402. + You may charge a fee for the physical act of transferring a copy, and
  5403. + you may at your option offer warranty protection in exchange for a fee.
  5404. +   2. You may modify your copy or copies of the Program or any portion
  5405. + of it, thus forming a work based on the Program, and copy and
  5406. + distribute such modifications or work under the terms of Section 1
  5407. + above, provided that you also meet all of these conditions:
  5408. +     a) You must cause the modified files to carry prominent notices
  5409. +     stating that you changed the files and the date of any change.
  5410. +     b) You must cause any work that you distribute or publish, that in
  5411. +     whole or in part contains or is derived from the Program or any
  5412. +     part thereof, to be licensed as a whole at no charge to all third
  5413. +     parties under the terms of this License.
  5414. +     c) If the modified program normally reads commands interactively
  5415. +     when run, you must cause it, when started running for such
  5416. +     interactive use in the most ordinary way, to print or display an
  5417. +     announcement including an appropriate copyright notice and a
  5418. +     notice that there is no warranty (or else, saying that you provide
  5419. +     a warranty) and that users may redistribute the program under
  5420. +     these conditions, and telling the user how to view a copy of this
  5421. +     License.  (Exception: if the Program itself is interactive but
  5422. +     does not normally print such an announcement, your work based on
  5423. +     the Program is not required to print an announcement.)
  5424. + These requirements apply to the modified work as a whole.  If
  5425. + identifiable sections of that work are not derived from the Program,
  5426. + and can be reasonably considered independent and separate works in
  5427. + themselves, then this License, and its terms, do not apply to those
  5428. + sections when you distribute them as separate works.  But when you
  5429. + distribute the same sections as part of a whole which is a work based
  5430. + on the Program, the distribution of the whole must be on the terms of
  5431. + this License, whose permissions for other licensees extend to the
  5432. + entire whole, and thus to each and every part regardless of who wrote it.
  5433. + Thus, it is not the intent of this section to claim rights or contest
  5434. + your rights to work written entirely by you; rather, the intent is to
  5435. + exercise the right to control the distribution of derivative or
  5436. + collective works based on the Program.
  5437. + In addition, mere aggregation of another work not based on the Program
  5438. + with the Program (or with a work based on the Program) on a volume of
  5439. + a storage or distribution medium does not bring the other work under
  5440. + the scope of this License.
  5441. +   3. You may copy and distribute the Program (or a work based on it,
  5442. + under Section 2) in object code or executable form under the terms of
  5443. + Sections 1 and 2 above provided that you also do one of the following:
  5444. +     a) Accompany it with the complete corresponding machine-readable
  5445. +     source code, which must be distributed under the terms of Sections
  5446. +     1 and 2 above on a medium customarily used for software interchange; or,
  5447. +     b) Accompany it with a written offer, valid for at least three
  5448. +     years, to give any third party, for a charge no more than your
  5449. +     cost of physically performing source distribution, a complete
  5450. +     machine-readable copy of the corresponding source code, to be
  5451. +     distributed under the terms of Sections 1 and 2 above on a medium
  5452. +     customarily used for software interchange; or,
  5453. +     c) Accompany it with the information you received as to the offer
  5454. +     to distribute corresponding source code.  (This alternative is
  5455. +     allowed only for noncommercial distribution and only if you
  5456. +     received the program in object code or executable form with such
  5457. +     an offer, in accord with Subsection b above.)
  5458. + The source code for a work means the preferred form of the work for
  5459. + making modifications to it.  For an executable work, complete source
  5460. + code means all the source code for all modules it contains, plus any
  5461. + associated interface definition files, plus the scripts used to
  5462. + control compilation and installation of the executable.  However, as a
  5463. + special exception, the source code distributed need not include
  5464. + anything that is normally distributed (in either source or binary
  5465. + form) with the major components (compiler, kernel, and so on) of the
  5466. + operating system on which the executable runs, unless that component
  5467. + itself accompanies the executable.
  5468. + If distribution of executable or object code is made by offering
  5469. + access to copy from a designated place, then offering equivalent
  5470. + access to copy the source code from the same place counts as
  5471. + distribution of the source code, even though third parties are not
  5472. + compelled to copy the source along with the object code.
  5473. +   4. You may not copy, modify, sublicense, or distribute the Program
  5474. + except as expressly provided under this License.  Any attempt
  5475. + otherwise to copy, modify, sublicense or distribute the Program is
  5476. + void, and will automatically terminate your rights under this License.
  5477. + However, parties who have received copies, or rights, from you under
  5478. + this License will not have their licenses terminated so long as such
  5479. + parties remain in full compliance.
  5480. +   5. You are not required to accept this License, since you have not
  5481. + signed it.  However, nothing else grants you permission to modify or
  5482. + distribute the Program or its derivative works.  These actions are
  5483. + prohibited by law if you do not accept this License.  Therefore, by
  5484. + modifying or distributing the Program (or any work based on the
  5485. + Program), you indicate your acceptance of this License to do so, and
  5486. + all its terms and conditions for copying, distributing or modifying
  5487. + the Program or works based on it.
  5488. +   6. Each time you redistribute the Program (or any work based on the
  5489. + Program), the recipient automatically receives a license from the
  5490. + original licensor to copy, distribute or modify the Program subject to
  5491. + these terms and conditions.  You may not impose any further
  5492. + restrictions on the recipients' exercise of the rights granted herein.
  5493. + You are not responsible for enforcing compliance by third parties to
  5494. + this License.
  5495. +   7. If, as a consequence of a court judgment or allegation of patent
  5496. + infringement or for any other reason (not limited to patent issues),
  5497. + conditions are imposed on you (whether by court order, agreement or
  5498. + otherwise) that contradict the conditions of this License, they do not
  5499. + excuse you from the conditions of this License.  If you cannot
  5500. + distribute so as to satisfy simultaneously your obligations under this
  5501. + License and any other pertinent obligations, then as a consequence you
  5502. + may not distribute the Program at all.  For example, if a patent
  5503. + license would not permit royalty-free redistribution of the Program by
  5504. + all those who receive copies directly or indirectly through you, then
  5505. + the only way you could satisfy both it and this License would be to
  5506. + refrain entirely from distribution of the Program.
  5507. + If any portion of this section is held invalid or unenforceable under
  5508. + any particular circumstance, the balance of the section is intended to
  5509. + apply and the section as a whole is intended to apply in other
  5510. + circumstances.
  5511. + It is not the purpose of this section to induce you to infringe any
  5512. + patents or other property right claims or to contest validity of any
  5513. + such claims; this section has the sole purpose of protecting the
  5514. + integrity of the free software distribution system, which is
  5515. + implemented by public license practices.  Many people have made
  5516. + generous contributions to the wide range of software distributed
  5517. + through that system in reliance on consistent application of that
  5518. + system; it is up to the author/donor to decide if he or she is willing
  5519. + to distribute software through any other system and a licensee cannot
  5520. + impose that choice.
  5521. + This section is intended to make thoroughly clear what is believed to
  5522. + be a consequence of the rest of this License.
  5523. +   8. If the distribution and/or use of the Program is restricted in
  5524. + certain countries either by patents or by copyrighted interfaces, the
  5525. + original copyright holder who places the Program under this License
  5526. + may add an explicit geographical distribution limitation excluding
  5527. + those countries, so that distribution is permitted only in or among
  5528. + countries not thus excluded.  In such case, this License incorporates
  5529. + the limitation as if written in the body of this License.
  5530. +   9. The Free Software Foundation may publish revised and/or new versions
  5531. + of the General Public License from time to time.  Such new versions will
  5532. + be similar in spirit to the present version, but may differ in detail to
  5533. + address new problems or concerns.
  5534. + Each version is given a distinguishing version number.  If the Program
  5535. + specifies a version number of this License which applies to it and "any
  5536. + later version", you have the option of following the terms and conditions
  5537. + either of that version or of any later version published by the Free
  5538. + Software Foundation.  If the Program does not specify a version number of
  5539. + this License, you may choose any version ever published by the Free Software
  5540. + Foundation.
  5541. +   10. If you wish to incorporate parts of the Program into other free
  5542. + programs whose distribution conditions are different, write to the author
  5543. + to ask for permission.  For software which is copyrighted by the Free
  5544. + Software Foundation, write to the Free Software Foundation; we sometimes
  5545. + make exceptions for this.  Our decision will be guided by the two goals
  5546. + of preserving the free status of all derivatives of our free software and
  5547. + of promoting the sharing and reuse of software generally.
  5548. +                 NO WARRANTY
  5549. +   11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
  5550. + FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
  5551. + OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
  5552. + PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
  5553. + OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  5554. + MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
  5555. + TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
  5556. + PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
  5557. + REPAIR OR CORRECTION.
  5558. +   12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
  5559. + WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
  5560. + REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
  5561. + INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
  5562. + OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
  5563. + TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
  5564. + YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
  5565. + PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
  5566. + POSSIBILITY OF SUCH DAMAGES.
  5567. +              END OF TERMS AND CONDITIONS
  5568. +     Appendix: How to Apply These Terms to Your New Programs
  5569. +   If you develop a new program, and you want it to be of the greatest
  5570. + possible use to the public, the best way to achieve this is to make it
  5571. + free software which everyone can redistribute and change under these terms.
  5572. +   To do so, attach the following notices to the program.  It is safest
  5573. + to attach them to the start of each source file to most effectively
  5574. + convey the exclusion of warranty; and each file should have at least
  5575. + the "copyright" line and a pointer to where the full notice is found.
  5576. +     <one line to give the program's name and a brief idea of what it does.>
  5577. +     Copyright (C) 19yy  <name of author>
  5578. +     This program is free software; you can redistribute it and/or modify
  5579. +     it under the terms of the GNU General Public License as published by
  5580. +     the Free Software Foundation; either version 2 of the License, or
  5581. +     (at your option) any later version.
  5582. +     This program is distributed in the hope that it will be useful,
  5583. +     but WITHOUT ANY WARRANTY; without even the implied warranty of
  5584. +     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  5585. +     GNU General Public License for more details.
  5586. +     You should have received a copy of the GNU General Public License
  5587. +     along with this program; if not, write to the Free Software
  5588. +     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  5589. + Also add information on how to contact you by electronic and paper mail.
  5590. + If the program is interactive, make it output a short notice like this
  5591. + when it starts in an interactive mode:
  5592. +     Gnomovision version 69, Copyright (C) 19yy name of author
  5593. +     Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
  5594. +     This is free software, and you are welcome to redistribute it
  5595. +     under certain conditions; type `show c' for details.
  5596. + The hypothetical commands `show w' and `show c' should show the appropriate
  5597. + parts of the General Public License.  Of course, the commands you use may
  5598. + be called something other than `show w' and `show c'; they could even be
  5599. + mouse-clicks or menu items--whatever suits your program.
  5600. + You should also get your employer (if you work as a programmer) or your
  5601. + school, if any, to sign a "copyright disclaimer" for the program, if
  5602. + necessary.  Here is a sample; alter the names:
  5603. +   Yoyodyne, Inc., hereby disclaims all copyright interest in the program
  5604. +   `Gnomovision' (which makes passes at compilers) written by James Hacker.
  5605. +   <signature of Ty Coon>, 1 April 1989
  5606. +   Ty Coon, President of Vice
  5607. + This General Public License does not permit incorporating your program into
  5608. + proprietary programs.  If your program is a subroutine library, you may
  5609. + consider it more useful to permit linking proprietary applications with the
  5610. + library.  If this is what you want to do, use the GNU Library General
  5611. + Public License instead of this License.
  5612. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/COPYING.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/COPYING.info differ
  5613. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/Emacs.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/Emacs.info differ
  5614. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_asm.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_asm.info differ
  5615. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_c.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_c.info differ
  5616. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_el.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_el.info differ
  5617. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_emacs.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_emacs.info differ
  5618. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_h.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_h.info differ
  5619. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_rexx.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons/def_rexx.info differ
  5620. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons.el emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons.el
  5621. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons.el    Thu Jan  1 00:00:00 1970
  5622. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons.el    Wed Sep 29 22:43:36 1993
  5623. ***************
  5624. *** 0 ****
  5625. --- 1,49 ----
  5626. + ;;
  5627. + ;;      A new icon-creating scheme.
  5628. + ;;  When creating icons, the following replacement routine searches
  5629. + ;;  for icons of the name "def_<extension>.info".
  5630. + ;;  The routine searches first in the directories specified by the
  5631. + ;;  user in the variable "amiga-icon-path" and then in "env:Icons/".
  5632. + ;;  The directories in the list must contain the trailing slash.
  5633. + ;;
  5634. + ;;  If it can't find any appropriate icons, and the file
  5635. + ;;  "env:Icons/def_emacs.info" exists, it is used. Otherwise
  5636. + ;;  the original function is called.
  5637. + ;;
  5638. + ;;  Note that icons are only created when the variable
  5639. + ;;  "amiga-create-icons" is non-nil.
  5640. + ;;
  5641. + ;;  Example: If the user would like to use the icons supplied by
  5642. + ;;           the SAS C-complier, the following lines could be placed
  5643. + ;;           in his or hers .emacs file:
  5644. + ;;      (setq amiga-icon-path '("sc:Icons/"))
  5645. + ;;      (setq amiga-create-icons t)
  5646. + ;;
  5647. + (defvar amiga-icon-path '()
  5648. +   "A list of directories to scan when searching for new icons.")
  5649. + (if (not (fboundp 'old-amiga-put-icon))
  5650. +     (fset 'old-amiga-put-icon (symbol-function 'amiga-put-icon)))
  5651. + (defun amiga-put-icon (file force)
  5652. +   (if (or force (not (file-readable-p (concat file ".info"))))
  5653. +       (let ((extpos (string-match "\\.[a-zA-Z]\\'" file))
  5654. +             (iconname nil)
  5655. +             (path (append amiga-icon-path '("env:icons/")))
  5656. +             (found nil))
  5657. +         (if (and extpos (< 0 extpos))
  5658. +             (while (and (not found) path)
  5659. +               (setq iconname (concat (car path) "def_" (substring file (+ 1 extpos)) ".in\
  5660. + fo"))
  5661. +               (if (and iconname (file-readable-p iconname))
  5662. +                   (progn
  5663. +                     (copy-file iconname (concat file ".info"))
  5664. +                     (setq found t)))
  5665. +               (setq path (cdr path))))
  5666. +         (if (not found)
  5667. +             (if (file-readable-p "env:Icons/def_emacs.info")
  5668. +                 (copy-file "env:Icons/def_emacs.info" (concat file ".info"))
  5669. +               (old-amiga-put-icon file force))))))
  5670. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/icons.info differ
  5671. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/newicon.el emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/newicon.el
  5672. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/newicon.el    Thu Jan  1 00:00:00 1970
  5673. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/newicon.el    Thu Sep 30 21:02:52 1993
  5674. ***************
  5675. *** 0 ****
  5676. --- 1,91 ----
  5677. + ;;
  5678. + ;;  FILE
  5679. + ;;    newicon.el        $VER: V1.00 newicon.el
  5680. + ;;
  5681. + ;;  DESCRIPTION
  5682. + ;;      A new icon-creating scheme.
  5683. + ;;
  5684. + ;;    When creating icons, the following replacement routine searches
  5685. + ;;      for icons of the name "def_<extension>.info". 
  5686. + ;;      The routine searches first in the directories specified a _list_
  5687. + ;;      by the user in the variable "amiga-icon-path" and then in 
  5688. + ;;      "Gnuemacs:Icons/". The directories in the list must contain the 
  5689. + ;;    trailing slash.
  5690. + ;;
  5691. + ;;      If it can't find any appropriate icons, and the file 
  5692. + ;;      "Gnuemacs:Icons/def_emacs.info" exists, it is used. Otherwise
  5693. + ;;      the original function is called.
  5694. + ;;
  5695. + ;;      Note: icons are only created when the variable
  5696. + ;;      "amiga-create-icons" is non-nil.
  5697. + ;;
  5698. + ;;  INSTALLATION
  5699. + ;;    Copy this file to a lisp-directory, for example Gnuemacs:lisp
  5700. + ;;
  5701. + ;;    Create a directory called Gnuemacs:icons and copy the icons to it.
  5702. + ;;
  5703. + ;;    Place the following line in your s:.emacs
  5704. + ;;            (setq amiga-create-icons t)
  5705. + ;;        (load "newicon")
  5706. + ;;
  5707. + ;;      Example: If the user would like to use the icons supplied by
  5708. + ;;    the SAS C-complier, the following lines could be placed
  5709. + ;;    in his or hers .emacs file:
  5710. + ;;      (setq amiga-icon-path '("sc:Icons/"))
  5711. + ;;
  5712. + ;;  LICENSE
  5713. + ;;      Copyright (C) 1993  Anders Lindgren
  5714. + ;;
  5715. + ;;    This program is free software; you can redistribute it and/or modify
  5716. + ;;    it under the terms of the GNU General Public License as published by
  5717. + ;;    the Free Software Foundation; either version 2 of the License,or
  5718. + ;;    (at your option) any later version.
  5719. + ;;
  5720. + ;;    This program is distributed in the hope that it will be useful,
  5721. + ;;    but WITHOUT ANY WARRANTY; without even the implied warranty of
  5722. + ;;    MERCHANTABILITY of FITNESS FOR A PARTICULAR PURPOSE. See the
  5723. + ;;    GNU General Public License for more details.
  5724. + ;;
  5725. + ;;    You should have received a copy of the GNU General Public License
  5726. + ;;    along with this program; if not, write to the Free Software
  5727. + ;;    Foundation, Inc., 675 Mass Ave, Cambridge, Ma 02139, USA.
  5728. + ;;
  5729. + ;;  HOW TO CONTACT ME:
  5730. + ;;    voice:   Scream  Anders Lindgren  LOUD
  5731. + ;;    email:   d91ali@csd.uu.se
  5732. + ;;    mail:    Anders Lindgren
  5733. + ;;             Kantorsg. 2-331
  5734. + ;;             S-754 24 Uppsala
  5735. + ;;    SUGA BBS:+46 (0)8 34 85 23
  5736. + ;;         +46 (0)8 34 32 76  
  5737. + ;;
  5738. + (defvar amiga-icon-path '()
  5739. +   "A list of directories to scan when searching for new icons.")
  5740. + (if (not (fboundp 'old-amiga-put-icon))
  5741. +     (fset 'old-amiga-put-icon (symbol-function 'amiga-put-icon)))
  5742. + (defun amiga-put-icon (file force)
  5743. +   (if (or force (not (file-readable-p (concat file ".info"))))
  5744. +       (let ((extpos (string-match "\\.[a-zA-Z]*\\'" file))
  5745. +         (iconname nil)
  5746. +         (path (append amiga-icon-path '("gnuemacs:icons/")))
  5747. +         (found nil))
  5748. +     (if (and extpos (< 0 extpos))
  5749. +         (while (and (not found) path)
  5750. +           (setq iconname (concat (car path) "def_" (substring file (+ 1 extpos)) ".info"))
  5751. +           (if (and iconname (file-readable-p iconname))
  5752. +           (progn
  5753. +             (copy-file iconname (concat file ".info"))
  5754. +             (setq found t)))
  5755. +           (setq path (cdr path))))
  5756. +     (if (not found)
  5757. +         (if (file-readable-p "gnuemacs:Icons/def_emacs.info")
  5758. +         (copy-file "gnuemacs:Icons/def_emacs.info" (concat file ".info"))
  5759. +           (old-amiga-put-icon file force))))))
  5760. +       
  5761. +         
  5762. +         
  5763. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/newicon.el.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/newicon.el.info differ
  5764. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/newicon.elc and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/newicon.elc differ
  5765. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/newicon.elc.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/newicon.elc.info differ
  5766. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/sticky.el emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/sticky.el
  5767. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/sticky.el    Thu Jan  1 00:00:00 1970
  5768. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/sticky.el    Thu Sep 30 21:11:14 1993
  5769. ***************
  5770. *** 0 ****
  5771. --- 1,70 ----
  5772. + ;;;
  5773. + ;;; FILE
  5774. + ;;;    sticky.el        $VER: V1.00 sticky.el
  5775. + ;;;
  5776. + ;;; DESCRIPTION
  5777. + ;;;    ELisp part of Emacs Starter Deluxe. This code 
  5778. + ;;;    is loaded when Emacs is invoked in "sticky" mode.
  5779. + ;;;
  5780. + ;;;    Place this file somewhere in your lisp-path, for example
  5781. + ;;;    in the directory GnuEmacs:lisp.
  5782. + ;;;
  5783. + ;;;    Please read the file "starter.doc".
  5784. + ;;;
  5785. + ;;; AUTHORS
  5786. + ;;;    Anders Lindgren, d91ali@csd.uu.se
  5787. + ;;;    Bo Liljegren, bo-lilje@dsv.su.se
  5788. + ;;;
  5789. + ;;; LICENSE
  5790. + ;;;     Copyright (C) 1993  Anders Lindgren  and  Bo Liljegren
  5791. + ;;;
  5792. + ;;;    This program is free software; you can redistribute it and/or modify
  5793. + ;;;    it under the terms of the GNU General Public License as published by
  5794. + ;;;    the Free Software Foundation; either version 2 of the License, or
  5795. + ;;;    (at your option) any later version.
  5796. + ;;;
  5797. + ;;;    This program is distributed in the hope that it will be useful,
  5798. + ;;;    but WITHOUT ANY WARRANTY; without even the implied warranty of
  5799. + ;;;    MERCHANTABILITY of FITNESS FOR A PARTICULAR PURPOSE. See the
  5800. + ;;;    GNU General Public License for more details.
  5801. + ;;;
  5802. + ;;;    You should have received a copy of the GNU General Public License
  5803. + ;;;    along with this program; if not, write to the Free Software
  5804. + ;;;    Foundation, Inc., 675 Mass Ave, Cambridge, Ma 02139, USA.
  5805. + ;;;
  5806. + ;;; HISTORY
  5807. + ;;;    24-Sep-93 ALi  Created this file.
  5808. + ;;;
  5809. + (provide 'sticky)
  5810. + (make-variable-buffer-local 'sticky-rexx-port)
  5811. + (set-default 'sticky-rexx-port nil)
  5812. + (if (not (fboundp 'old-kill-buffer))
  5813. +     (fset 'old-kill-buffer (symbol-function 'kill-buffer)))
  5814. + ;;; Redefine the kill-buffer function.
  5815. + ;;; If the buffer is in "sticky" mode, notify the client that this buffer is no more.
  5816. + ;;; The reason why we're asking whether to kill the buffer or not, is to avoid a situation
  5817. + ;;; where the client is notified but the user answers no.
  5818. + (defun kill-buffer (buffer)
  5819. +   "One arg, a string or a buffer.  Get rid of the specified buffer.
  5820. + Any processes that have this buffer as the `process-buffer' are killed
  5821. + with `delete-process'.
  5822. + Patched to notify client."
  5823. +   (interactive "bKill buffer: ")
  5824. +   (if (eq (setq buffer (get-buffer buffer)) nil)
  5825. +       nil
  5826. +     (save-excursion
  5827. +       (set-buffer buffer)
  5828. +       (if (or (not (buffer-modified-p buffer))
  5829. +           (not (buffer-file-name))
  5830. +           noninteractive
  5831. +           (yes-or-no-p (format "Buffer %s modified; kill anyway? " (buffer-name))))
  5832. +       (progn
  5833. +         (set-buffer-modified-p nil)
  5834. +         (if sticky-rexx-port
  5835. +         (amiga-arexx-send-command (concat "ADDRESS " sticky-rexx-port " TERMINATING") t))
  5836. +         (old-kill-buffer buffer))))))
  5837. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/sticky.el.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/sticky.el.info differ
  5838. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/sticky.elc and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/sticky.elc differ
  5839. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/sticky.elc.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp/sticky.elc.info differ
  5840. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/lisp.info differ
  5841. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/rexx/emacs.rexx emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/rexx/emacs.rexx
  5842. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/rexx/emacs.rexx    Thu Jan  1 00:00:00 1970
  5843. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/rexx/emacs.rexx    Fri Oct  1 08:56:48 1993
  5844. ***************
  5845. *** 0 ****
  5846. --- 1,286 ----
  5847. + /*
  5848. + FILE         Emacs.rexx
  5849. + VERSION      $VER: V1.06 Emacs.rexx
  5850. + DESCRIPTION  Load a file into a (running) emacs.
  5851. +              emacs [flags and files]
  5852. +          The following options are supported:
  5853. +          -[not]tofront    (Don't) move the Emacs window and screen
  5854. +                      to the front.
  5855. +          -[not]sticky    Do not terminate until the files on the
  5856. +                 command line are killed.
  5857. +          -[no]screen    Open a public screen (Requiers ScreenManager)
  5858. +              where the third and fourth argument corresponds to the
  5859. +              the screensize.
  5860. + AUTHOR       Anders Lindgren, d91ali@csd.uu.se
  5861. +              Bo Liljegren, bo-lilje@dsv.su.se
  5862. + STATUS       This file is in the public domain
  5863. + HISTORY
  5864. +   11-Aug-92 ALi        Created this file
  5865. +   13-Aug-92 ALi        Replaced "runwsh" with "run".
  5866. +                        "else nop" added.
  5867. +   14-Aug-92 ALi  1.00  V1.0 released.
  5868. +   20-Aug-92 Bo L 1.01  Added ScreenManager stuff.
  5869. +   03-Jan-93 ALi  1.02  MODE edited. COLOURS removed.
  5870. +                        amiga-set-geometry moved to .emacs
  5871. +   13-Jan-93 ALi  1.03  TOBACK added. SHANGHAI and DEFAULT removed,
  5872. +                        emacs can now open itself correctly.
  5873. +                        -nottofront flag added.
  5874. +   20-Jan-93 Bo L 1.04  Replaced the static portname with the dynamic
  5875. +                        in the 'WaitForPort'-line
  5876. +   16 aug 93 Bo L 1.05  Changed screenresolution argument to DISPID.
  5877. +                        To avoid nameconflict with different languages.
  5878. +                        Changed ScrenManager parse part for those
  5879. +                        (unblessed) who don't have WShell.
  5880. +   22-Sep-93 ALi     1.06  Real option and filename parser added.
  5881. +                  (amiga-window-to-front) and
  5882. +                (amiga-activate-window) called instead of
  5883. +                ScreenManager.
  5884. +                (cd ) removed. (Why should emacs move directry?)
  5885. +                Sticky option added.
  5886. +                Files loaded by (load-file ), even when Emacs
  5887. +                is started by the script.
  5888. +                Temporary file which sets the window size and
  5889. +                screen name added. (No use for anything in .emacs)
  5890. +                POPPUB option removed.
  5891. +                Now gets screen font from WB.
  5892. + */
  5893. + OPTIONS RESULTS
  5894. + OPTIONS FAILAT 21
  5895. + /* Make sure required libraries are present */
  5896. + IF ~SHOW('l',"rexxsupport.library") THEN DO
  5897. +     IF ~ADDLIB("rexxsupport.library",0,-30,0) THEN DO
  5898. +     SAY "Can't find rexxsupport.library"
  5899. +     EXIT
  5900. +     END
  5901. +     END
  5902. + /* The name for the public screen */
  5903. + screenname = 'Emacs'
  5904. + portname = 'EMACS1'
  5905. + args = ARG(1)  
  5906. + /* The commandline to send to a new emacs */
  5907. + cmd = ""
  5908. + /* A stem containing the options, the defaults are set here */
  5909. + flags.batch   = 0        /* Batch mode, always start a new Emacs */
  5910. + flags.kill    = 0        /* Kill a running emacs. */
  5911. + flags.screen  = 1        /* Use a public screen (Requiers ScreenManager) */
  5912. + flags.sticky  = 0        /* Wait until the buffers are terminated */
  5913. + flags.tofront = 1        /* Send the screen to the front */
  5914. + /* Argument parser */
  5915. + filesidx = 0
  5916. + DO WHILE LENGTH(args) > 1
  5917. +     args = strip(args, 'L')    /* Strip leading blanks */
  5918. +     IF LEFT(args,1) = '"' THEN DO
  5919. +     filesidx = filesidx + 1
  5920. +     PARSE VAR args  '"' files.filesidx '"' args
  5921. +     END
  5922. +     ELSE DO
  5923. +     PARSE VAR args  onearg args
  5924. +     IF LEFT(onearg,1) = '-' THEN DO
  5925. +         SELECT
  5926. +         WHEN onearg = "-tofront"    THEN flags.tofront = 1
  5927. +         WHEN onearg = "-nottofront" THEN flags.tofront = 0
  5928. +         WHEN onearg = "-sticky"     THEN flags.sticky = 1
  5929. +         WHEN onearg = "-notsticky"  THEN flags.sticky = 0
  5930. +         WHEN onearg = "-screen"     THEN flags.screen = 1
  5931. +         WHEN onearg = "-noscreen"   THEN flags.screen = 0
  5932. +         WHEN onearg = "-batch"        THEN flags.batch = 1
  5933. +         WHEN onearg = "-kill"        THEN DO
  5934. +             flags.kill = 1
  5935. +             cmd = cmd onearg
  5936. +             END
  5937. +         /* Emacs options with one argument */
  5938. +         WHEN (onearg = "-l" | onearg = "-load" | onearg = "-f",
  5939. +               | onearg = "-funcall" | onearg = "-i" | onearg = "-insert",
  5940. +               | onearg = "-t" | onearg = "-u" | onearg = "-user") THEN DO
  5941. +             PARSE VAR args  optarg args
  5942. +             cmd = cmd onearg optarg
  5943. +             END
  5944. +         /* Emacs options with two arguments */
  5945. +         WHEN (onearg = "-dev" | onearg = "-fn") THEN DO
  5946. +             PARSE VAR args  optarg1 optarg2 args
  5947. +             cmd = cmd onearg optarg1 optarg2
  5948. +             END
  5949. +         OTHERWISE cmd = cmd onearg
  5950. +         END
  5951. +         END
  5952. +     ELSE IF LEFT(onearg,1) = '+' THEN DO
  5953. +         PARSE VAR onearg  '+' flags.linenumber
  5954. +         END
  5955. +     ELSE DO
  5956. +         filesidx = filesidx + 1
  5957. +         files.filesidx = onearg
  5958. +         END
  5959. +     END
  5960. +     END
  5961. + /* If in batch-mode, start a new Emacs synchronous using the
  5962. +  * original options */
  5963. + IF flags.batch THEN DO
  5964. +     ADDRESS COMMAND "temacs" arg(1)
  5965. +     EXIT rc
  5966. +     END
  5967. + /* If an Emacs Screen doesn't exists, create one */
  5968. + IF flags.screen & ~SHOWLIST('W',screenname||'-Demon') THEN DO 
  5969. +     filnamn = 'T:SM'||d2x(random(256,1024,time('s')))
  5970. +     ADDRESS COMMAND 'ScreenManager INFO Workbench EXPERT >'||filnamn
  5971. +     IF ~OPEN(fil,filnamn,'R') THEN EXIT 20
  5972. +     cnt = 4
  5973. +     rad = READLN(fil)
  5974. +     IF EOF(fil) THEN cnt = 0
  5975. +     DO WHILE cnt ~= 0
  5976. +     ord = WORD(rad,1)
  5977. +     SELECT
  5978. +         WHEN ord = 'Position:' THEN DO
  5979. +         PARSE VAR rad . '=' xpos ' ' . '=' ypos ' ' .
  5980. +         cnt = cnt - 1
  5981. +         END
  5982. +         WHEN ord = 'Size:' THEN DO
  5983. +         PARSE VAR rad . '=' xsize ' ' . '=' ysize ' ' .
  5984. +         cnt = cnt - 1
  5985. +         END
  5986. +         WHEN ord = 'DisplayID:' THEN DO
  5987. +         resmode = WORD(rad,2)
  5988. +         cnt = cnt - 1
  5989. +         END
  5990. +         WHEN ord = 'Font:' THEN DO
  5991. +         PARSE VAR rad  'Font:'  font '.font ' fontsize
  5992. +         font = strip(font)
  5993. +         cnt = cnt - 1
  5994. +             END
  5995. +         OTHERWISE
  5996. +         NOP
  5997. +         END
  5998. +     rad = READLN(fil)
  5999. +     IF EOF(fil) THEN cnt = 0
  6000. +     END
  6001. +     CALL CLOSE(fil)
  6002. +     CALL DELETE(filnamn)
  6003. +     menubar = fontsize + 2
  6004. +     ypos = ypos + menubar
  6005. +     ysize = ysize - menubar
  6006. +     ScrMng = ' OPEN '||screenname||' TITLE="'||screenname||' Screen"'
  6007. +     ScrMng = ScrMng||' DISPID='||resmode
  6008. +     ScrMng = ScrMng||' PLANES=2'
  6009. +     ScrMng = ScrMng||' PENS=011213103'
  6010. +     ScrMng = ScrMng||' FONT='||font||'.'||fontsize
  6011. +     ScrMng = ScrMng||' AUTOCLOSE' /* close screen when Emacs exists */
  6012. +     ScrMng = ScrMng||' TOBACK'      /* It's moved to the front below  */
  6013. +     ScrMng = ScrMng||' CX_TOFRONT="LCOMMAND e"'
  6014. +     ScrMng = ScrMng||' CX_DEFAULT="LCOMMAND SHIFT e"'
  6015. +     ADDRESS COMMAND 'ScreenManager' ScrMng
  6016. +     /* Create a small elisp file which sets the screen and size of Emacs */
  6017. +     sizefilename = 't:size' || d2x(random(256,1024,time('s'))) || '.el'
  6018. +     IF ~OPEN(fil, sizefilename, 'W') THEN EXIT 20
  6019. +     CALL WRITELN(fil, ';; Automagically created by Emacs.rexx')
  6020. +     CALL WRITELN(fil, '(amiga-set-geometry 0' fontsize+3 xsize ysize '"' || screenname || '")')
  6021. +     CALL CLOSE(fil)
  6022. +     cmd = cmd '-load' sizefilename
  6023. +     END
  6024. +     
  6025. + /* Start a new Emacs, if no one exists. */
  6026. + IF SHOW('P', portname) = 0 THEN DO
  6027. +     
  6028. +     CALL PRAGMA('stack', 40000)
  6029. +     ADDRESS COMMAND 'run <nil: >nil: temacs' cmd
  6030. +     ADDRESS COMMAND 'WaitForPort' portname
  6031. +     flags.kill = 0
  6032. +     END
  6033. + ADDRESS VALUE portname
  6034. + /* This no-op call doesn't return until after the 
  6035. +  * t:sizeXX file has been read */
  6036. + "()"
  6037. + /* Delete the temporary file, if it was created. */
  6038. + IF SYMBOL('sizefilename') = 'VAR' THEN CALL DELETE(sizefilename)
  6039. + /* If in sticky mode, load sticky module into Emacs and
  6040. +  * open a communication port */
  6041. + IF flags.sticky THEN DO
  6042. +     "(require 'sticky)"
  6043. +     count = 1
  6044. +     DO UNTIL ~SHOW('P', stickyportname)
  6045. +     stickyportname = "EMACS_CLIENT" || count
  6046. +     count = count + 1
  6047. +     END
  6048. +     CALL OPENPORT(stickyportname)
  6049. +     IF ~SHOW('P', stickyportname) THEN DO
  6050. +     SAY "Emacs client: Can't open sticky port."
  6051. +     EXIT 20
  6052. +     END
  6053. +     END
  6054. + /* Get the current diretory. (There is no point in building a correct
  6055. +  * filename, since Emacs does that for us.) */
  6056. + dir = PRAGMA('directory')
  6057. + IF RIGHT(dir,1) ~= ':' THEN dir = dir || '/'
  6058. + stickycount = 0            /* The number of files to wait for */
  6059. + /* Load the files into emacs */
  6060. + DO i = 1 TO filesidx
  6061. +     '(find-file "' || dir || files.i || '")'
  6062. +     IF flags.sticky THEN DO
  6063. +     '(setq sticky-rexx-port "' || stickyportname || '")'
  6064. +     stickycount = stickycount + 1
  6065. +     END
  6066. +     END
  6067. + /* If the +linenumber option was given, go to the correct line */
  6068. + IF SYMBOL('flags.linenumber') = 'VAR' THEN '(goto-line ' || flags.linenumber || ')'
  6069. + /* Bring an activated Emacs window and screen to the front */
  6070. + IF flags.tofront THEN DO
  6071. +     '(amiga-window-to-front)'
  6072. +     '(amiga-activate-window)'
  6073. +     END
  6074. + /* If in sticky mode, wait for the buffers to be deleted */
  6075. + IF flags.sticky THEN DO
  6076. +     DO WHILE stickycount > 0
  6077. +     CALL WAITPKT(stickyportname)
  6078. +     pkt = GETPKT(stickyportname)
  6079. +     IF pkt = NULL() then iterate
  6080. +     IF GETARG(pkt) = "TERMINATING" THEN
  6081. +         stickycount = stickycount - 1
  6082. +     CALL REPLY(pkt, 0)
  6083. +     END
  6084. +     CALL CLOSEPORT(stickyportname)
  6085. +     END
  6086. + IF flags.kill THEN DO
  6087. +     '(save-buffers-kill-emacs)'
  6088. +     /* Screen normally closed automatically, but this won't hurt */
  6089. +     IF flags.screen THEN DO
  6090. +         ADDRESS COMMAND 'ScreenManager close' screenname
  6091. +         END
  6092. +     END
  6093. + EXIT 0
  6094. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/rexx/emacs.rexx.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/rexx/emacs.rexx.info differ
  6095. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/rexx.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/rexx.info differ
  6096. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/rexxmode10.lha and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/rexxmode10.lha differ
  6097. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/sas-c-emacs.lha and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/sas-c-emacs.lha differ
  6098. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/starter.doc emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/starter.doc
  6099. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/starter.doc    Thu Jan  1 00:00:00 1970
  6100. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/starter.doc    Thu Sep 30 23:30:30 1993
  6101. ***************
  6102. *** 0 ****
  6103. --- 1,260 ----
  6104. +         #### #   #   #    ###  ### 
  6105. +         #    ## ##  # #  #    #
  6106. +         ##   # # # #   # #     ##
  6107. +         #    #   # ##### #       #
  6108. +         #### #   # #   #  ### ### 
  6109. +  
  6110. +               ###  #####   #   ###  ##### #### ###
  6111. +              #       #    # #  #  #   #   #    #  #
  6112. +               ###    #   #   # ###    #   ##   ###
  6113. +                  #   #   ##### # #    #   #    # #
  6114. +               ###    #   #   # #  #   #   #### #  #
  6115. +                         ***  **** *    *  * *   * ****
  6116. +                         *  * *    *    *  *  * *  *
  6117. +                            *  * **   *    *  *   *   **
  6118. +                        *  * *    *    *  *  * *  *
  6119. +                            ***  **** **** **** *   * ****
  6120. +     ------------------------------------------------------
  6121. +                   Release 1
  6122. +                    
  6123. +                  Written by:
  6124. +                Anders Lindgren
  6125. +                  Bo Liljegren
  6126. +                    
  6127. +          A (in our humble opinion) good Emacs starter
  6128. +     ------------------------------------------------------
  6129. +                   FEATURING
  6130. +     o Load files into a running Emacs.
  6131. +     o Option to use a public screen (requiers ScreenManager).
  6132. +     o Full WB support; double-click icons into a running Emacs.
  6133. +     o New icon creating scheme, use different icons depending on what
  6134. +       type of file you are editing.
  6135. +     o Sticky flag, the script doesn't terminate until the requested
  6136. +       buffers are terminated.
  6137. +                    LICENSE
  6138. +         Copyright (C) 1993  Anders Lindgren  and  Bo Liljegren
  6139. +  
  6140. +      This program is free software; you can redistribute it and/or modify
  6141. +      it under the terms of the GNU General Public License as published by
  6142. +      the Free Software Foundation; either version 2 of the License, or
  6143. +      (at your option) any later version.
  6144. +  
  6145. +      This program is distributed in the hope that it will be useful,
  6146. +      but WITHOUT ANY WARRANTY; without even the implied warranty of
  6147. +      MERCHANTABILITY of FITNESS FOR A PARTICULAR PURPOSE. See the
  6148. +      GNU General Public License for more details.
  6149. +  
  6150. +      You should have received a copy of the GNU General Public License
  6151. +      along with this program; if not, write to the Free Software
  6152. +      Foundation, Inc., 675 Mass Ave, Cambridge, Ma 02139, USA.
  6153. +                    CONTENTS
  6154. + The following files are contained in the archive:
  6155. + COPYING            -- The Gnu General Public License
  6156. + starter.doc         -- This file
  6157. + Emacs.info        -- A nice Emacs icon drawn by Bo Liljegren
  6158. + rexx/emacs.rexx V1.06    -- The main starter script
  6159. + lisp/sticky.el    V1.00    -- ELisp code used when a buffer is started with
  6160. +                the "-sticky" flag
  6161. + lisp/newicon.el    V1.00    -- The ELisp code for the new icon creating scheme
  6162. + lisp/#?.elc        -- Bytecompiled versions of the above files
  6163. + wbarg/wbarg    V1.00    -- A utility which converts WB arguments 
  6164. +                to shell dito
  6165. + wbarg/wbarg.c        -- Source code for the above utility
  6166. + wbarg/makefile        -- Rules for building the above with SAS/C 6.x.
  6167. + icons/def_#?.info    -- Icons. All but def_el drawn by Christian A. Weber.
  6168. +                   NEWSFLASH
  6169. + SUGA, Swedish User Group of Amiga is a non-profit nation wide club for
  6170. + Amiga-freaks in Sweden. It has been operating for many years (I joined
  6171. + in around -87, and have been more or less active ever since.) A
  6172. + newspaper with 16 to 20 pages is beeing distrubuted quaterly. A BBS is
  6173. + runed using the command line program NiKom, which is written by a
  6174. + member of the club. (Too bad for you non swedish speaking people that
  6175. + it isn't translated yet.) For the members in Stockholm we have a
  6176. + meeting every sunday between 11am and 3pm.
  6177. + Join by inserting only 150:- (less than $20) into the PostGiro account
  6178. + 13 43 32-2. You can also just show up at the "Verksta'n" to see what
  6179. + it's all about!
  6180. +     Address: SUGA
  6181. +          Disponentvillan, Verkstan
  6182. +          Norrtullsgatan 12k
  6183. +          S-113 27 Stockholm
  6184. +     SUGA BBS:+46 (0)8 34 85 23
  6185. +          +46 (0)8 34 32 76  
  6186. +  
  6187. +                  INSTALLATION
  6188. + Copy the files in the "lisp" directory into a directory in the
  6189. + Emacs load path, for example GnuEmacs:lisp.
  6190. + Copy the file in the "rexx" directory to REXX:
  6191. + Copy the file "wbarg/wbarg" into the GnuEmacs:etc directory.
  6192. + If you would like to use the new icon creating scheme then
  6193. + create a directory named GnuEmacs:icons and copy the contents
  6194. + of the "icons" to it and add the following line to your 
  6195. + s:.emacs file.
  6196. +     (load "newicon")
  6197. +     (setq amiga-create-icons t)
  6198. + Older revisions of the script Emacs.rexx required that the command
  6199. + (amiga-set-geometry ) were executed in s:.emacs. This is no longer the
  6200. + case, hence the line should be removed.
  6201. + If the -screen option should be used, the program ScreenManager must
  6202. + be installed. The program is not included in this archive since its
  6203. + license does not allow it to be fully freely distributable, it can be
  6204. + found one ONE (yes, ONE I understood the license correctly) PD disk
  6205. + serie, and on AmiNet. If you can't find it you can order it from the
  6206. + author (you can also inform him of the existence of the Gnu General
  6207. + Public License):
  6208. +     Bernhard Möllemann
  6209. +     Luisenstraße 17
  6210. +     D-7500 Karlsruhe 1
  6211. +     Germany
  6212. + In the future we might rewrite Emacs.rexx so it uses some other screen
  6213. + opener, if it turns out that ScreenManager is too difficult to find.
  6214. +                   EMACS.REXX
  6215. + The heart of the Emacs Starter Deluxe is the script emacs.rexx. It loads
  6216. + files into a running Emacs or starts a new Emacs. It is capable of opening
  6217. + a public screen by the help of the utility ScreenManager. The resolution
  6218. + and color of the screen is cloned from the Workbench, although the depth 
  6219. + will always be two bitplanes.
  6220. +     Usage:   [rx] emacs [options|+linenumber] [filenames]
  6221. +     -[not]tofront    Bring the Emacs window and screes to the front.
  6222. +             Default is -tofront.
  6223. +     -[not]sticky    Wait until the filenames requested are killed by
  6224. +             Emacs. Default is -notsticky.
  6225. +     -[no]screen        Open a public screen and place Emacs on it.
  6226. +             This option requiers the program "ScreenManager".
  6227. +             Default is -screen.
  6228. + The script also handles standard Emacs options, even though some are
  6229. + implemented as no-ops when loading files into a running Emacs.
  6230. + The meaning of the standard option "-kill" is extended; if a running Emacs
  6231. + exists it is terminated.
  6232. +               WORKBENCH SUPPORT
  6233. + The Emacs Starter Deluxe has full Workbench support. This means that a
  6234. + file conneted to an icon can be loaded into a running Emacs.
  6235. + This feature requiers a project icon with the default tool set to
  6236. + "GnuEmacs:etc/wbarg" and the tooltype:
  6237. +     COMMAND=sys:rexxc/rx emacs
  6238. + A number of icons with this setup can be found in the icons directory
  6239. + of this archive.
  6240. + If no file is connected to an icon which is double-clicked Emacs will
  6241. + be started, or brought to front, but no file would be loaded.
  6242. + Note that the icons Emacs normally creates does NOT have the tool and
  6243. + tooltype set correctly. But, gentle reader, a solution to this problem
  6244. + can be found in the next section.
  6245. +                NEW ICON SCHEME
  6246. + To make as life simple as possible for workbench users a new icon
  6247. + creating scheme has been invented. To activate it please place the
  6248. + following lines in your s:.emacs file:
  6249. +     (load "newicon")
  6250. +     (setq amiga-create-icons t)
  6251. + The new scheme checks the extension of the file edited and tries to
  6252. + find an icon with the name "def_<extension>.el" in the icon path. If
  6253. + no one is found an icon named "GnuEmacs:icons/def_emacs.el" is used.
  6254. + As an emergency exit, the old icon creation routine is called.
  6255. + The icon path is defined to be the directories contained in the list
  6256. + "amiga-icon-path" and in the directory "GnuEmacs:Icons". Note that the
  6257. + directories in the list must end in a colon or slash.
  6258. + Example: If the user would like to use the icons supplied by the SAS
  6259. + C-complier and the icons supplied by DefaultIcon, the following lines
  6260. + could be placed in his or hers .emacs file:
  6261. +     (setq amiga-icon-path '("sc:Icons/" "Env:Icons/"))
  6262. +                SO WHAT'S THE DARK SIDE?
  6263. + All programs must have something which isn't working properly, and yes,
  6264. + there is one thing we don't recomend:
  6265. + Don't iconify Emacs, since the screen closes automatically when the Emacs
  6266. + window is closed. There is a way around it though; execute the emacs.rexx
  6267. + script again to open a new screen and then deiconify Emacs.
  6268. + If for some reason Emacs fails to start but the screen shows up it must
  6269. + be closed before the next attempt to start Emacs. This is done by issuing
  6270. + the command "ScreenManager CLOSE Emacs".
  6271. +               HOW TO CONTACT US
  6272. + If you would like new features to be added to Emacs Starter Deluxe, or if
  6273. + you whould discover a bug, don't hesitate to contact us:
  6274. + email:   d91ali@csd.uu.se        bo-lilje@dsv.su.se
  6275. +      
  6276. + mail:    Anders Lindgren        Bo Liljegren
  6277. +          Kantorsg. 2-331        Skogvaktarg. 12
  6278. +          S-754 24 Uppsala        115 42 Stockholm
  6279. + voice:   Scream  Anders or Bosse  LOUD
  6280. +                  OTHER TITLES
  6281. + The following Emacs applications has been written by Anders Lindgren:
  6282. + rexx-mode        -- A Complete editing mode and a source level 
  6283. +                debugger for REXX. (Machine independent, but 
  6284. +                it works on the Amiga.)
  6285. + sas-c-mode        -- A minor mode for communication with the SAS/C
  6286. +                6.x message browser SCMSG and more.
  6287. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/starter.doc.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/starter.doc.info differ
  6288. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/makefile emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/makefile
  6289. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/makefile    Thu Jan  1 00:00:00 1970
  6290. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/makefile    Thu Sep  9 23:57:48 1993
  6291. ***************
  6292. *** 0 ****
  6293. --- 1,12 ----
  6294. + wbarg:    wbarg.o
  6295. +     slink TO wbarg FROM lib:c.o wbarg.o LIB lib:sc.lib MAP wbarg.map hsflo
  6296. +     copy wbarg gnuemacs:etc
  6297. + wbarg.o: wbarg.c
  6298. +     sc wbarg.c
  6299. + release:
  6300. +     lha -x -a -r a wbarg.lha wbarg wbarg.c icons/\#? sc/\#? makefile newicon.el def_emacs.info README
  6301. +                    
  6302. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/makefile.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/makefile.info differ
  6303. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/wbarg and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/wbarg differ
  6304. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/wbarg.c emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/wbarg.c
  6305. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/wbarg.c    Thu Jan  1 00:00:00 1970
  6306. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/wbarg.c    Thu Sep 30 21:29:50 1993
  6307. ***************
  6308. *** 0 ****
  6309. --- 1,379 ----
  6310. + /*
  6311. +  *  FILE
  6312. +  *    wbarg V1.0    by Anders Lindgren
  6313. +  *
  6314. +  *  DESCRIPTION
  6315. +  *    Convert WB arguments into shell dito.
  6316. +  *
  6317. +  *    This programs looks for a tooltype of the name COMMAND, to which
  6318. +  *    if adds the WB arguments, before executing the command as a shell
  6319. +  *    process.
  6320. +  *
  6321. +  *    One area of use is to set the COMMAND tooltype to:
  6322. +  *      COMMAND=sys:rexxc/rx rexxscript
  6323. +  *    to run the rexx script "rexxscript" with WB arguments. 
  6324. +  *
  6325. +  *  WARNING
  6326. +  *    This is a HACK, it might stop to work on future OS-releases, if
  6327. +  *    Commodore would change the path mechanism.
  6328. +  *
  6329. +  *    This program should work under 1.3, but it hasn't been tested. If
  6330. +  *    it is runed under V39 it takes advantage of new features. (under 
  6331. +  *    V37 AllocDosObject(DOS_CLI, ...) is buggy.)
  6332. +  *
  6333. +  *  LICENSE
  6334. +  *      Copyright (C) 1993  Anders Lindgren
  6335. +  *
  6336. +  *    This program is free software; you can redistribute it and/or modify
  6337. +  *    it under the terms of the GNU General Public License as published by
  6338. +  *    the Free Software Foundation; either version 2 of the License,or
  6339. +  *    (at your option) any later version.
  6340. +  *
  6341. +  *    This program is distributed in the hope that it will be useful,
  6342. +  *    but WITHOUT ANY WARRANTY; without even the implied warranty of
  6343. +  *    MERCHANTABILITY of FITNESS FOR A PARTICULAR PURPOSE. See the
  6344. +  *    GNU General Public License for more details.
  6345. +  *
  6346. +  *    You should have received a copy of the GNU General Public License
  6347. +  *    along with this program; if not, write to the Free Software
  6348. +  *    Foundation, Inc., 675 Mass Ave, Cambridge, Ma 02139, USA.
  6349. +  *
  6350. +  *  HOW TO CONTACT ME:
  6351. +  *    voice:   Scream  Anders Lindgren  LOUD
  6352. +  *    email:   d91ali@csd.uu.se
  6353. +  *    mail:    Anders Lindgren
  6354. +  *             Kantorsg. 2-331
  6355. +  *             S-754 24 Uppsala
  6356. +  *    SUGA BBS:+46 (0)8 34 85 23
  6357. +  *         +46 (0)8 34 32 76  
  6358. +  *
  6359. +  *  TODO
  6360. +  *    Define a STACK tooltype to set the stack size.
  6361. +  *
  6362. +  *  HISTORY
  6363. +  *    09-Sep-93    Wrote the program.
  6364. +  *    28-Sep-93    Added the add/free_cli functions
  6365. +  *                V1.0 Released
  6366. +  */
  6367. + #include <exec/types.h>
  6368. + #include <exec/memory.h>
  6369. + #include <exec/execbase.h>
  6370. + #include <dos/dos.h>
  6371. + #include <dos/dostags.h>
  6372. + #include <workbench/startup.h>
  6373. + #define __USE_SYSBASE
  6374. + #include <proto/exec.h>
  6375. + #include <proto/dos.h>
  6376. + #include <proto/icon.h>
  6377. + #include <stdio.h>
  6378. + #include <strings.h>
  6379. + #define CMDLINE 512        /* Length of the command line */
  6380. + /* Forward references */
  6381. + int  get_command(struct WBArg * wbarg, char buffer[], int maxlen);
  6382. + void name_of_lock(BPTR lock, char buffer[], int maxlen);
  6383. + void usage(void);
  6384. + int  add_cli(void);
  6385. + void free_cli(void);
  6386. + /* The version string */
  6387. + UBYTE *vers="\0$VER: wbarg 1.0 (" __DATE__ ")";
  6388. + /* The (secret?) structure of path */
  6389. + struct path {
  6390. +     BPTR next;
  6391. +     BPTR lock;
  6392. + };
  6393. + /* A combined cli-structure and BSTR:s used when KS < 39 */
  6394. + struct mycli {
  6395. +     struct CommandLineInterface cli; /* Must be the first entry in the structure! */
  6396. +     UBYTE set_name[80];
  6397. +     UBYTE command_name[80];
  6398. +     UBYTE prompt[80];
  6399. +     UBYTE command_file[80];
  6400. + };
  6401. + void
  6402. + main(int argc, char *argv[])
  6403. + {
  6404. +     char commandline[CMDLINE];    /* The commandline to issue */
  6405. +     char args[CMDLINE];
  6406. +     struct WBStartup * argmsg;
  6407. +     struct WBArg     * wbarg;
  6408. +     BPTR olddir;
  6409. +     BPTR lock;
  6410. +     int found_cmd = FALSE;    /* Flag: TRUE when a COMMAND tooltype is found */
  6411. +     int created_cli = FALSE;    /* Flag: TRUE when we created our own cli-structure */
  6412. +     int i;
  6413. +     /* If we haven't got a Cli-structure, create one */
  6414. +     if (Cli() == NULL) {
  6415. +     if (add_cli()) {
  6416. +         created_cli = TRUE;
  6417. +     }
  6418. +     else {
  6419. +         puts("wbarg: Error while creating Cli-structure and path\n");
  6420. +     }
  6421. +     }
  6422. +     if (argc) {
  6423. +     usage();        /* It's no point in running it from the shell */
  6424. +     }
  6425. +     else {
  6426. +     argmsg = (struct WBStartup *)argv;
  6427. +     wbarg = argmsg->sm_ArgList;
  6428. +     args[0] = '\0';
  6429. +     for (i=0; i<argmsg->sm_NumArgs; i++) {
  6430. +         olddir = -1;
  6431. +         if ((wbarg->wa_Lock) && (*wbarg->wa_Name)) {
  6432. +         olddir = CurrentDir(wbarg->wa_Lock);
  6433. +         }
  6434. +         /* Get the command to execute */
  6435. +         if (get_command(wbarg, commandline, CMDLINE)) {
  6436. +         found_cmd = TRUE;
  6437. +         }
  6438. +         /* Build all the arguments */
  6439. +         if ((i>0) && *wbarg->wa_Name) {
  6440. +         if (lock = Lock(wbarg->wa_Name, ACCESS_READ)) {
  6441. +             strncat(args, " \"", CMDLINE);
  6442. +             name_of_lock(lock, args, CMDLINE);
  6443. +             strncat(args, "\"", CMDLINE);
  6444. +             UnLock(lock);
  6445. +         }
  6446. +         }
  6447. +         if (olddir != -1) {
  6448. +         CurrentDir(olddir);
  6449. +         }
  6450. +         wbarg++;    /* Use the next argument to the next loop iteration */
  6451. +     }
  6452. +     if (found_cmd) {
  6453. +         strncat(commandline, args, CMDLINE);
  6454. +         Execute(commandline, NULL, NULL);
  6455. +     }
  6456. +     else {
  6457. +         usage();        /* No COMMAND tooltype found */
  6458. +     }
  6459. +     }
  6460. +     if (created_cli) {
  6461. +     /* ((struct Process *) FindTask(NULL))->pr_CLI = NULL; */
  6462. +     free_cli();
  6463. +     }
  6464. + }
  6465. + /*
  6466. +  *  FUNCTION
  6467. +  *    get_command
  6468. +  *
  6469. +  *  DESCRIPTION
  6470. +  *    Find a icon with the COMMAND tooltype set.
  6471. +  */
  6472. + int
  6473. + get_command(struct WBArg * wbarg, char buffer[], int maxlen)
  6474. + {
  6475. +     struct DiskObject * dobj;
  6476. +     char ** toolarray;
  6477. +     char * s = NULL;
  6478. +     if ((*wbarg->wa_Name) && (dobj = GetDiskObject(wbarg->wa_Name))) {
  6479. +     toolarray = (char **)dobj->do_ToolTypes;
  6480. +     if (s = (char *)FindToolType(toolarray, "COMMAND")) {
  6481. +         s[maxlen-1] = '\0';    /* Make sure the string is nullterminated */
  6482. +         strncpy(buffer, s, maxlen-1);
  6483. +     }
  6484. +     FreeDiskObject(dobj);
  6485. +     }
  6486. +     return(s == NULL ? FALSE : TRUE);
  6487. + }
  6488. + /*
  6489. +  *  FUNCTION
  6490. +  *    name_of_lock
  6491. +  *
  6492. +  *  DESCRIPTION
  6493. +  *      Create the filename from the lock supplied.
  6494. +  *      NOTE: The name is ADDED to the string in the buffer.
  6495. +  */
  6496. + void
  6497. + name_of_lock(BPTR lock, char buffer[], int maxlen)
  6498. + {
  6499. +     BPTR newlock;
  6500. +         /* Static to save space on the stack during recursion */
  6501. +     static __aligned struct FileInfoBlock fib; 
  6502. +     int root;
  6503. +     if (newlock = ParentDir(lock)) {
  6504. +     name_of_lock(newlock, buffer, maxlen);
  6505. +     UnLock(newlock);
  6506. +     root = FALSE;
  6507. +     }
  6508. +     else {
  6509. +     root = TRUE;
  6510. +     }
  6511. +     if (Examine(lock, & fib)) {
  6512. +     strncat(buffer, fib.fib_FileName, maxlen);
  6513. +     if (fib.fib_DirEntryType > 0) {
  6514. +         strncat(buffer, root ? ":" : "/", maxlen);
  6515. +     }
  6516. +     }
  6517. + }
  6518. +     
  6519. + /*
  6520. +  *  FUNCTION
  6521. +  *    usage
  6522. +  *
  6523. +  *  DESCRIPTION
  6524. +  *    Write a small information text.
  6525. +  */
  6526. + void
  6527. + usage(void)
  6528. + {
  6529. +     puts("WBARG  A program which converts workbench");
  6530. +     puts("       arguments to command line dito.");
  6531. +     puts("Usage: Create a project icon and set"); 
  6532. +     puts("       the tooltype named COMMAND to the");
  6533. +     puts("       command you would like to run");
  6534. +     puts("Example: COMMAND=sys:rexxc/rx someprogram");
  6535. + }
  6536. + /*
  6537. +  *  FUNCTION
  6538. +  *    add_cli
  6539. +  *
  6540. +  *  DESCRIPTION
  6541. +  *    Attaches a CommandLineInterface-structure to the current (WB-started)
  6542. +  *    process and copies the path from the Workbench task.
  6543. +  *
  6544. +  *    Return non-FALSE on success;
  6545. +  */
  6546. + int
  6547. + add_cli()
  6548. + {
  6549. +     struct CommandLineInterface * cli = NULL;
  6550. +     struct mycli * mycli;
  6551. +     struct Process * wb;
  6552. +     BPTR p;            /* The path structure to copy from */
  6553. +     struct path * newp;        /* The new path structure */
  6554. +     BPTR * prev;
  6555. +     /*
  6556. +      * Under 1.3 AllocDosObject does not exists, under <39 the DOS_CLI option is buggy 
  6557. +      */
  6558. +     if (SysBase->LibNode.lib_Version < 39) {
  6559. +     if (mycli = (struct mycli *)AllocMem(sizeof(struct mycli), MEMF_CLEAR|MEMF_PUBLIC)) {
  6560. +         cli = & mycli->cli;
  6561. +         mycli->cli.cli_FailLevel   = 10;
  6562. +         mycli->cli.cli_Background  = DOSTRUE;
  6563. +         mycli->cli.cli_SetName     = MKBADDR(& mycli->set_name);
  6564. +         mycli->cli.cli_CommandName = MKBADDR(& mycli->command_name);
  6565. +         mycli->cli.cli_Prompt      = MKBADDR(& mycli->prompt);
  6566. +         mycli->cli.cli_CommandFile = MKBADDR(& mycli->command_file);
  6567. +     }
  6568. +     }
  6569. +     else {
  6570. +     cli = (struct CommandLineInterface *)AllocDosObjectTags(DOS_CLI, TAG_DONE);
  6571. +     }
  6572. +     if (cli) {
  6573. +     cli->cli_DefaultStack = 4096;
  6574. +     ((struct Process *) FindTask(NULL))->pr_CLI = MKBADDR(cli);
  6575. +     if (wb = (struct Process *)FindTask("Workbench")) {
  6576. +         prev = & cli->cli_CommandDir;
  6577. +     
  6578. +         p = ((struct CommandLineInterface *)BADDR(wb->pr_CLI))->cli_CommandDir;
  6579. +         while(p){
  6580. +         if (newp = AllocMem(sizeof(struct path), MEMF_PUBLIC)) {
  6581. +             newp->lock = DupLock(((struct path *)BADDR(p))->lock);
  6582. +         
  6583. +             * prev = MKBADDR(newp);
  6584. +             prev = & newp->next;
  6585. +         }
  6586. +         else {
  6587. +             * prev = NULL;
  6588. +             free_cli();
  6589. +             return(FALSE);
  6590. +         }
  6591. +         p = ((struct path *)BADDR(p))->next;
  6592. +         }
  6593. +         * prev = NULL;    /* Terminate the linked list */
  6594. +     }
  6595. +         return(TRUE);        /* OK */
  6596. +     }
  6597. +     return(FALSE);        /* No cli structure allocated */
  6598. + }
  6599. + /*
  6600. +  *  FUNCTION
  6601. +  *    free_cli
  6602. +  *
  6603. +  *  DESCRIPTION
  6604. +  *    Undo the work of add_cli
  6605. +  */
  6606. + void
  6607. + free_cli()
  6608. + {
  6609. +     struct CommandLineInterface * cli;
  6610. +     struct path * p;
  6611. +     struct path * p_next;
  6612. +     if (cli = Cli()) {
  6613. +     p = (struct path *)BADDR(cli->cli_CommandDir);
  6614. +     cli->cli_CommandDir = NULL;
  6615. +     while (p) {
  6616. +         p_next = (struct path *)BADDR(p->next);
  6617. +         if (p->lock) {
  6618. +         UnLock(p->lock);
  6619. +         }
  6620. +         FreeMem((void *)p, sizeof(struct path));
  6621. +         p = p_next;
  6622. +     }
  6623. +     if (SysBase->LibNode.lib_Version < 39) {
  6624. +         FreeMem((void *)cli, sizeof(struct mycli));
  6625. +     }
  6626. +     else {
  6627. +         FreeDosObject(DOS_CLI, (void *)cli);
  6628. +     }
  6629. +     ((struct Process *) FindTask(NULL))->pr_CLI = NULL;
  6630. +     }
  6631. + }
  6632. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/wbarg.c.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/wbarg.c.info differ
  6633. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/wbarg.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg/wbarg.info differ
  6634. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg.info and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/wbarg.info differ
  6635. Binary files /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/xsh11.lha and emacs-18.59/amiga/amiga-extra/amiga/contrib/lindgren/xsh11.lha differ
  6636. diff -rc --new-file /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/schinz/functions.el emacs-18.59/amiga/amiga-extra/amiga/contrib/schinz/functions.el
  6637. *** /src/baseline/emacs-18.59/amiga/amiga-extra/amiga/contrib/schinz/functions.el    Thu Jan  1 00:00:00 1970
  6638. --- emacs-18.59/amiga/amiga-extra/amiga/contrib/schinz/functions.el    Sat May  8 13:57:12 1993
  6639. ***************
  6640. *** 0 ****
  6641. --- 1,88 ----
  6642. + ;; Code contributed by :
  6643. + ;;   Michel Schinz     | INTERNET: Week-end: schinz@guano.alphanet.ch
  6644. + ;;   Epinettes 10a     |           Week    : schinz@di.epfl.ch
  6645. + ;;   CH-2013 COLOMBIER | FIDONET:  2:302/562 (Michel Schinz)
  6646. +    (defun amiga-arexx-add-lib (lib entry)
  6647. +      "Adds the specified ARexx library, with given entry point."
  6648. +      (interactive "sLibrary name: \nnOffset: ")
  6649. +      (amiga-arexx-do-command (concat "CALL ADDLIB('" lib "',0," entry ")") t))
  6650. +    (defun amiga-reqtools-find-file ()
  6651. +      "Like find-file, but with RexxReqTools' file requester."
  6652. +      (interactive)
  6653. +      (amiga-arexx-add-lib "rexxreqtools.library" -30)
  6654. +      (amiga-arexx-do-command (concat "f = rtFileRequest('" default-directory
  6655. +                      "',,'Find file')\n"
  6656. +                      "IF f ~= '' THEN"
  6657. +                      "   '(find-file \"'||f||'\")'") t))
  6658. +    (defun amiga-reqtools-insert-file ()
  6659. +      "Like insert-file, but with RexxReqTools' file requester."
  6660. +      (interactive)
  6661. +      (amiga-arexx-add-lib "rexxreqtools.library" -30)
  6662. +      (amiga-arexx-do-command (concat "f = rtFileRequest('" default-directory
  6663. +                      "',,'Insert file')\n"
  6664. +                      "IF f ~= '' THEN"
  6665. +                      "   '(insert-file \"'||f||'\")'") t))
  6666. +    (defun amiga-reqtools-write-file ()
  6667. +      "Like write-file, but with RexxReqTools' file requester."
  6668. +      (interactive)
  6669. +      (let ((dir (file-name-directory buffer-file-name))
  6670. +        (file (file-name-nondirectory buffer-file-name)))
  6671. +        (amiga-arexx-add-lib "rexxreqtools.library" -30)
  6672. +        (amiga-arexx-do-command (concat "f = rtFileRequest('" dir "','" file
  6673. +                        "','Write file',,"
  6674. +                        "'rtfi_flags=freqf_save')\n"
  6675. +                        "IF f ~= '' THEN"
  6676. +                        "   '(write-file \"'||f||'\")'") t)))
  6677. +    ;;; amiga-update-version-string
  6678. +    ;;; Michel Schinz
  6679. +    ;;; $VER: amiga_verstring.el 1.0 (7.05.1993)
  6680. +    (defun amiga-update-version-string ()
  6681. +      "Create/update a version string (CBM style) on the current line.
  6682. +    If no version string is present on the current line, create a new one
  6683. +    that looks like `$VER: <buffer-name> 1.0 (<current_date>)' at the
  6684. +    point position. If a version string is already present on the current
  6685. +    line, the date is ... updated and the revision is incremented.
  6686. +    Please note that currently, no spaces are allowed in the `name' field."
  6687. +      (interactive)
  6688. +      (save-excursion
  6689. +        (let (end-of-line-pos
  6690. +          name version revision date
  6691. +          (old-point-pos (point-marker)))
  6692. +      (let* ((date-string (current-time-string))
  6693. +         (garbage (string-match
  6694. +               " \\([A-Z][a-z][a-z]\\) *\\([0-9]*\\) .* \\([0-9]*\\)$"
  6695. +               date-string))
  6696. +         (day (substring date-string (match-beginning 2) (match-end 2)))
  6697. +         (month
  6698. +          (cdr (assoc
  6699. +                (substring date-string (match-beginning 1) (match-end 1))
  6700. +                '(("Jan" . "01") ("Feb" . "02") ("Mar" . "03") ("Apr" . "04")
  6701. +              ("May" . "05") ("Jun" . "06") ("Jul" . "07") ("Aug" . "08")
  6702. +              ("Sep" . "09") ("Oct" . "10") ("Nov" . "11") ("Dec" . "12")))))
  6703. +         (year (substring date-string (match-beginning 3) (match-end 3))))
  6704. +        (setq date (concat day "." month "." year)))
  6705. +      (end-of-line)
  6706. +      (setq end-of-line-pos (point))
  6707. +      (beginning-of-line)
  6708. +      (if (search-forward "$VER: " end-of-line-pos t)
  6709. +          (let ((start-of-version-string (- (point) 6)))
  6710. +            (re-search-forward
  6711. +         " *\\([^ ]*\\) *\\([0-9]*\\)\.\\([0-9]*\\) *([0-9.]*)" end-of-line-pos t)
  6712. +            (setq name (buffer-substring (match-beginning 1) (match-end 1))
  6713. +              version (buffer-substring (match-beginning 2) (match-end 2))
  6714. +              revision (+ 1 (string-to-int
  6715. +                     (buffer-substring (match-beginning 3) (match-end 3)))))
  6716. +            (delete-region start-of-version-string (point)))
  6717. +        (progn (setq name (file-name-nondirectory (buffer-name))
  6718. +             version 1
  6719. +             revision 0)
  6720. +           (goto-char old-point-pos)))
  6721. +      (insert (concat "$VER: " name " " version "." revision " (" date ")")))))
  6722. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/alloca.h emacs-18.59/amiga/unix/include/alloca.h
  6723. *** /src/baseline/emacs-18.59/amiga/unix/include/alloca.h    Thu Jan  1 00:00:00 1970
  6724. --- emacs-18.59/amiga/unix/include/alloca.h    Fri Aug 27 18:18:40 1993
  6725. ***************
  6726. *** 0 ****
  6727. --- 1,8 ----
  6728. + #ifndef ALLOCA_H
  6729. + #define ALLOCA_H
  6730. + #include <stddef.h>
  6731. + void *alloca(size_t size);
  6732. + #endif
  6733. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/amiga/ioctl.h emacs-18.59/amiga/unix/include/amiga/ioctl.h
  6734. *** /src/baseline/emacs-18.59/amiga/unix/include/amiga/ioctl.h    Thu Jan  1 00:00:00 1970
  6735. --- emacs-18.59/amiga/unix/include/amiga/ioctl.h    Sat Aug  8 21:05:28 1992
  6736. ***************
  6737. *** 0 ****
  6738. --- 1,15 ----
  6739. + #ifndef _AMIGA_H
  6740. + #define _AMIGA_H
  6741. + /* Amiga specific ioctl's */
  6742. + #define _AMIGA_IOCTL_BASE 2048
  6743. + #define _AMIGA_INTERACTIVE (_AMIGA_IOCTL_BASE + 0) /* Is file Interactive ? */
  6744. + #define _AMIGA_GET_FH (_AMIGA_IOCTL_BASE + 1) /* Get an AmigaDOS fh for file */
  6745. + #define _AMIGA_FREE_FH (_AMIGA_IOCTL_BASE + 2) /* Free a fh obtained by GET_FH */
  6746. + #define _AMIGA_TRUNCATE (_AMIGA_IOCTL_BASE + 3) /* Truncate file to given size */
  6747. + #define _AMIGA_SETPROTECTION (_AMIGA_IOCTL_BASE + 4) /* Set (amiga) protection on file */
  6748. + #define _AMIGA_DELETE_IF_ME (_AMIGA_IOCTL_BASE + 5) /* Delete myself if I am the file whose lock is passed as parameter */
  6749. + #endif
  6750. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/errno.h emacs-18.59/amiga/unix/include/errno.h
  6751. *** /src/baseline/emacs-18.59/amiga/unix/include/errno.h    Thu Jan  1 00:00:00 1970
  6752. --- emacs-18.59/amiga/unix/include/errno.h    Sun Jul  5 18:00:02 1992
  6753. ***************
  6754. *** 0 ****
  6755. --- 1,51 ----
  6756. + /**
  6757. + *
  6758. + * The following symbols are the error codes returned by the UNIX system
  6759. + * functions.  Typically, a UNIX function returns -1 when an error occurs,
  6760. + * and the global integer named errno contains one of these values.
  6761. + *
  6762. + */
  6763. + #define EOSERR -1    /* Operating system error */
  6764. + #define EPERM 1        /* User is not owner */
  6765. + #define ENOENT 2    /* No such file or directory */
  6766. + #define ESRCH 3        /* No such process */
  6767. + #define EINTR 4        /* Interrupted system call */
  6768. + #define EIO 5        /* I/O error */
  6769. + #define ENXIO 6        /* No such device or address */
  6770. + #define E2BIG 7        /* Arg list is too long */
  6771. + #define ENOEXEC 8    /* Exec format error */
  6772. + #define EBADF 9        /* Bad file number */
  6773. + #define ECHILD 10    /* No child process */
  6774. + #define EAGAIN 11    /* No more processes allowed */
  6775. + #define ENOMEM 12    /* No memory available */
  6776. + #define EACCES 13    /* Access denied */
  6777. + #define EFAULT 14    /* Bad address */
  6778. + #define ENOTBLK 15    /* Bulk device required */
  6779. + #define EBUSY 16    /* Resource is busy */
  6780. + #define EEXIST 17    /* File already exists */
  6781. + #define EXDEV 18    /* Cross-device link */
  6782. + #define ENODEV 19    /* No such device */
  6783. + #define ENOTDIR 20    /* Not a directory */
  6784. + #define EISDIR 21    /* Is a directory */
  6785. + #define EINVAL 22    /* Invalid argument */
  6786. + #define ENFILE 23    /* No more files (units) allowed */
  6787. + #define EMFILE 24    /* No more files (units) allowed for this process */
  6788. + #define ENOTTY 25    /* Not a terminal */
  6789. + #define ETXTBSY 26    /* Text file is busy */
  6790. + #define EFBIG 27    /* File is too large */
  6791. + #define ENOSPC 28    /* No space left */
  6792. + #define ESPIPE 29    /* Seek issued to pipe */
  6793. + #define EROFS 30    /* Read-only file system */
  6794. + #define EMLINK 31    /* Too many links */
  6795. + #define EPIPE 32    /* Broken pipe */
  6796. + #define EDOM 33        /* Math function argument error */
  6797. + #define ERANGE 34    /* Math function result is out of range */
  6798. + #define EWOULDBLOCK 35    /* Operation would block */
  6799. + #define ENAMETOOLONG 36 /* File name is too long */
  6800. + #define ENOTEMPTY 37    /* Directory is not empty */
  6801. + #define ELOOP 38    /* Too many soft links found */
  6802. + extern int errno, _OSERR;
  6803. + extern int sys_nerr;
  6804. + extern char *sys_errlist[];
  6805. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/fcntl.h emacs-18.59/amiga/unix/include/fcntl.h
  6806. *** /src/baseline/emacs-18.59/amiga/unix/include/fcntl.h    Thu Jan  1 00:00:00 1970
  6807. --- emacs-18.59/amiga/unix/include/fcntl.h    Thu Jul  9 22:05:10 1992
  6808. ***************
  6809. *** 0 ****
  6810. --- 1 ----
  6811. + #include <sys/fcntl.h>
  6812. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/grp.h emacs-18.59/amiga/unix/include/grp.h
  6813. *** /src/baseline/emacs-18.59/amiga/unix/include/grp.h    Thu Jan  1 00:00:00 1970
  6814. --- emacs-18.59/amiga/unix/include/grp.h    Wed Jul  8 21:23:48 1992
  6815. ***************
  6816. *** 0 ****
  6817. --- 1,12 ----
  6818. + #ifndef _GRP_H
  6819. + #define _GRP_H
  6820. + struct group {
  6821. +   char *gr_name;        /* name of the group */
  6822. +   char *gr_passwd;        /* encrypted password of the group */
  6823. +   gid_t gr_gid;            /* numerical group ID */
  6824. +   char **gr_mem;        /* null-terminated array of pointers to the
  6825. +                    individual member names */
  6826. + };
  6827. + #endif
  6828. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/internal/devices.h emacs-18.59/amiga/unix/include/internal/devices.h
  6829. *** /src/baseline/emacs-18.59/amiga/unix/include/internal/devices.h    Thu Jan  1 00:00:00 1970
  6830. --- emacs-18.59/amiga/unix/include/internal/devices.h    Sun Aug 16 11:07:18 1992
  6831. ***************
  6832. *** 0 ****
  6833. --- 1,9 ----
  6834. + #ifndef DEVICES_H
  6835. + #define DEVICES_H
  6836. + struct IORequest *_device_open(char *name, unsigned long unit, unsigned long flags,
  6837. +                    void *data, unsigned long data_len, int req_size);
  6838. + void _device_close(struct IORequest *ioreq);
  6839. + #endif
  6840. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/internal/files.h emacs-18.59/amiga/unix/include/internal/files.h
  6841. *** /src/baseline/emacs-18.59/amiga/unix/include/internal/files.h    Thu Jan  1 00:00:00 1970
  6842. --- emacs-18.59/amiga/unix/include/internal/files.h    Sun Dec  6 13:12:24 1992
  6843. ***************
  6844. *** 0 ****
  6845. --- 1,35 ----
  6846. + #ifndef FILES_H
  6847. + #define FILES_H
  6848. + struct fileinfo {
  6849. +   int flags;
  6850. +   void *userinfo;
  6851. +   unsigned long (*__regargs select_start)(void *userinfo, int rd, int wr);
  6852. +   void (*__regargs select_poll)(void *userinfo, int *rd, int *wr);
  6853. +   int (*__regargs read)(void *userinfo, void *buffer, unsigned int length);
  6854. +   int (*__regargs write)(void *userinfo, void *buffer, unsigned int length);
  6855. +   int (*__regargs lseek)(void *userinfo, long rpos, int mode);
  6856. +   int (*__regargs close)(void *userinfo, int internal);
  6857. +   int (*__regargs ioctl)(void *userinfo, int request, void *data);
  6858. + };
  6859. + /* FI_READ & WRITE replace O_RDONLY, WRONLY & RDWR. Other flags are left untouched */
  6860. + #define FI_READ 1
  6861. + #define FI_WRITE 2
  6862. + int _alloc_fd(void *userinfo, int flags,
  6863. +   unsigned long (*__regargs select_start)(void *userinfo, int rd, int wr),
  6864. +   void (*__regargs select_poll)(void *userinfo, int *rd, int *wr),
  6865. +   int (*__regargs read)(void *userinfo, void *buffer, unsigned int length),
  6866. +   int (*__regargs write)(void *userinfo, void *buffer, unsigned int length),
  6867. +   int (*__regargs lseek)(void *userinfo, long rpos, int mode),
  6868. +   int (*__regargs close)(void *userinfo, int internal),
  6869. +   int (*__regargs ioctl)(void *userinfo, int request, void *data)
  6870. + );
  6871. + void _free_fd(int fd);
  6872. + struct fileinfo *_find_fd(int fd);
  6873. + int _last_fd(void);
  6874. + #endif
  6875. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/internal/messages.h emacs-18.59/amiga/unix/include/internal/messages.h
  6876. *** /src/baseline/emacs-18.59/amiga/unix/include/internal/messages.h    Thu Jan  1 00:00:00 1970
  6877. --- emacs-18.59/amiga/unix/include/internal/messages.h    Sun Aug 16 12:43:04 1992
  6878. ***************
  6879. *** 0 ****
  6880. --- 1,9 ----
  6881. + void _message(char *format, ...);
  6882. + /* Display a message which is as visible as possible (either to the console
  6883. +    or to a requester).
  6884. +    Assume very little about library state */
  6885. + void _fail(char *format, ...);
  6886. + /* Display a message which is as visible as possible (either to the console
  6887. +    or to a requester).
  6888. +    Assume very little about library state.
  6889. +    Exit with error code RETURN_FAIL after that. */
  6890. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/internal/timers.h emacs-18.59/amiga/unix/include/internal/timers.h
  6891. *** /src/baseline/emacs-18.59/amiga/unix/include/internal/timers.h    Thu Jan  1 00:00:00 1970
  6892. --- emacs-18.59/amiga/unix/include/internal/timers.h    Sun Jul 19 17:47:02 1992
  6893. ***************
  6894. *** 0 ****
  6895. --- 1,20 ----
  6896. + #ifndef TIMERS_H
  6897. + #define TIMERS_H
  6898. + struct timeinfo {
  6899. +   struct timerequest *io;
  6900. +   int sent;
  6901. + };
  6902. + struct timeinfo *_alloc_timer(void);
  6903. + void _free_timer(struct timeinfo *timer);
  6904. + void _timer_abort(struct timeinfo *timer);
  6905. + ULONG _timer_sig(struct timeinfo *timer);
  6906. + void _timer_start(struct timeinfo *timer, int secs, int micros);
  6907. + /* _timer_start(timer, 0) stops a timer */
  6908. + int _timer_expired(struct timeinfo *timer);
  6909. + /* A non-started timer is defined to not have expired */
  6910. + #endif
  6911. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/internal/vars.h emacs-18.59/amiga/unix/include/internal/vars.h
  6912. *** /src/baseline/emacs-18.59/amiga/unix/include/internal/vars.h    Thu Jan  1 00:00:00 1970
  6913. --- emacs-18.59/amiga/unix/include/internal/vars.h    Sun Aug 16 10:58:12 1992
  6914. ***************
  6915. *** 0 ****
  6916. --- 1,11 ----
  6917. + #ifndef VARS_H
  6918. + #define VARS_H
  6919. + /* <_us, _startup_time> should be a pretty good unique identifier of
  6920. +    this process */
  6921. + extern struct Process *_us;
  6922. + extern long _stack_size;
  6923. + extern long _startup_time;
  6924. + extern int use_amiga_flags;
  6925. + #endif
  6926. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/pwd.h emacs-18.59/amiga/unix/include/pwd.h
  6927. *** /src/baseline/emacs-18.59/amiga/unix/include/pwd.h    Thu Jan  1 00:00:00 1970
  6928. --- emacs-18.59/amiga/unix/include/pwd.h    Wed Jul  8 20:19:36 1992
  6929. ***************
  6930. *** 0 ****
  6931. --- 1,19 ----
  6932. + #ifndef _PWD_H
  6933. + #define _PWD_H
  6934. + struct    passwd {
  6935. +   char *pw_name;
  6936. +   char *pw_passwd;
  6937. +   uid_t pw_uid;
  6938. +   gid_t pw_gid;
  6939. +   int  pw_quota;
  6940. +   char *pw_comment;
  6941. +   char *pw_gecos;
  6942. +   char *pw_dir;
  6943. +   char *pw_shell;
  6944. + };
  6945. + struct passwd *getpwuid(uid_t uid);
  6946. + struct passwd *getpwnam(char *name);
  6947. + #endif
  6948. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/setjmp.h emacs-18.59/amiga/unix/include/setjmp.h
  6949. *** /src/baseline/emacs-18.59/amiga/unix/include/setjmp.h    Thu Jan  1 00:00:00 1970
  6950. --- emacs-18.59/amiga/unix/include/setjmp.h    Sun Aug 16 11:57:38 1992
  6951. ***************
  6952. *** 0 ****
  6953. --- 1,55 ----
  6954. + /*-
  6955. +  * Copyright (c) 1990 The Regents of the University of California.
  6956. +  * All rights reserved.
  6957. +  *
  6958. +  * Redistribution and use in source and binary forms, with or without
  6959. +  * modification, are permitted provided that the following conditions
  6960. +  * are met:
  6961. +  * 1. Redistributions of source code must retain the above copyright
  6962. +  *    notice, this list of conditions and the following disclaimer.
  6963. +  * 2. Redistributions in binary form must reproduce the above copyright
  6964. +  *    notice, this list of conditions and the following disclaimer in the
  6965. +  *    documentation and/or other materials provided with the distribution.
  6966. +  * 3. All advertising materials mentioning features or use of this software
  6967. +  *    must display the following acknowledgement:
  6968. +  *    This product includes software developed by the University of
  6969. +  *    California, Berkeley and its contributors.
  6970. +  * 4. Neither the name of the University nor the names of its contributors
  6971. +  *    may be used to endorse or promote products derived from this software
  6972. +  *    without specific prior written permission.
  6973. +  *
  6974. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  6975. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  6976. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  6977. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  6978. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  6979. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  6980. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  6981. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  6982. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  6983. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  6984. +  * SUCH DAMAGE.
  6985. +  *
  6986. +  *    @(#)setjmp.h    5.5 (Berkeley) 6/8/91
  6987. +  */
  6988. + #ifndef _SETJMP_H_
  6989. + #define _SETJMP_H_
  6990. + #define _JBLEN 14
  6991. + typedef int jmp_buf[_JBLEN];
  6992. + #include <sys/cdefs.h>
  6993. + __BEGIN_DECLS
  6994. + int    setjmp __P((jmp_buf));
  6995. + void    longjmp __P((jmp_buf, int));
  6996. + #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
  6997. + int    _setjmp __P((jmp_buf));
  6998. + void    _longjmp __P((jmp_buf, int));
  6999. + #endif /* neither ANSI nor POSIX */
  7000. + __END_DECLS
  7001. + #endif /* !_SETJMP_H_ */
  7002. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/signal.h emacs-18.59/amiga/unix/include/signal.h
  7003. *** /src/baseline/emacs-18.59/amiga/unix/include/signal.h    Thu Jan  1 00:00:00 1970
  7004. --- emacs-18.59/amiga/unix/include/signal.h    Sun Oct 18 20:03:30 1992
  7005. ***************
  7006. *** 0 ****
  7007. --- 1,59 ----
  7008. + #ifndef _SIGNAL_H
  7009. + #define _SIGNAL_H
  7010. + #define NSIG 32            /* We define lots of signals (though most are never
  7011. +                    generated) */
  7012. + /* Signal number definitions */
  7013. + /* Those which can be generated other than by kill are described with
  7014. +     <name>, amiga: <cause> */
  7015. +    
  7016. + #define SIGHUP 1        /* hangup */
  7017. + #define SIGINT 2        /* interrupt, amiga: ctrl-c */
  7018. + #define SIGQUIT 3        /* quit, amiga: ctrl-d */
  7019. + #define SIGILL 4        /* illegal instruction */
  7020. + #define SIGTRAP 5        /* trace trap */
  7021. + #define SIGIOT 6        /* abort, amiga: abort() called */
  7022. + #define SIGEMT 7        /* emulator trap */
  7023. + #define SIGFPE 8        /* arithmetic exception, amiga: arith op */
  7024. + #define SIGKILL 9        /* kill */
  7025. + #define SIGBUS 10        /* bus error */
  7026. + #define SIGSEGV 11        /* segmentation violation */
  7027. + #define SIGSYS 12        /* bad argument to system call */
  7028. + #define SIGPIPE 13        /* write on pipe or socket with no reader,
  7029. +                    amiga: generated for 'pipe's or 'sktpair's */
  7030. + #define SIGALRM 14        /* alarm clock, amiga: see alarm */
  7031. + #define SIGTERM 15        /* software termination */
  7032. + #define SIGURG 16        /* urgent condition on socket */
  7033. + /* SIGSTOP, SIGTSTP, SIGCONT, SIGTTIN, SIGTTOU undefined to avoid creating the
  7034. +    belief that we support stopped processes */
  7035. + #define SIGCHLD 20        /* child status has changed */
  7036. + #define SIGIO 23        /* I/O possible on a descriptor */
  7037. + /* Less usual signals: SIGXCPU, SIGXFSZ, SIGVTALARM, SIGPROF, SIGLOST not defined */
  7038. + #define SIGWINCH 28        /* window changed */
  7039. + #define SIGUSR1 30        /* user-defined signal 1 */
  7040. + #define SIGUSR2 31        /* user-defined signal 2 */
  7041. + #define SIG_IGN (void *)0
  7042. + #define SIG_DFL (void *)1
  7043. + struct sigvec {
  7044. +   void (*sv_handler)();
  7045. +   long sv_mask;
  7046. +   /*int sv_flags;*/ /* Not implemented */
  7047. + };
  7048. + void (*signal(int sig,void (*fn)(int)))(int);
  7049. + int sigvec(int sig, struct sigvec *vec, struct sigvec *ovec);
  7050. + long sigsetmask(long mask);
  7051. + long sigblock(long mask);
  7052. + #define sigmask(s) (1 << (s))
  7053. + /* Only kill(getpid(), sig) works */
  7054. + /* Also, getpid() is a unique number for this process */
  7055. + int getpid(void);
  7056. + int kill(int pid, int sig);
  7057. + #endif
  7058. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/stat.h emacs-18.59/amiga/unix/include/stat.h
  7059. *** /src/baseline/emacs-18.59/amiga/unix/include/stat.h    Thu Jan  1 00:00:00 1970
  7060. --- emacs-18.59/amiga/unix/include/stat.h    Fri Dec  4 20:34:06 1992
  7061. ***************
  7062. *** 0 ****
  7063. --- 1 ----
  7064. + #include <sys/stat.h>
  7065. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/stdio.h emacs-18.59/amiga/unix/include/stdio.h
  7066. *** /src/baseline/emacs-18.59/amiga/unix/include/stdio.h    Thu Jan  1 00:00:00 1970
  7067. --- emacs-18.59/amiga/unix/include/stdio.h    Fri Dec  4 22:35:48 1992
  7068. ***************
  7069. *** 0 ****
  7070. --- 1,7 ----
  7071. + /* Avoid problems with conflicting declarations for mkdir */
  7072. + #define mkdir __fake_mkdir
  7073. + #include "include:stdio.h"
  7074. + #define P_tmpdir "t:"
  7075. + #undef mkdir
  7076. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/stdlib.h emacs-18.59/amiga/unix/include/stdlib.h
  7077. *** /src/baseline/emacs-18.59/amiga/unix/include/stdlib.h    Thu Jan  1 00:00:00 1970
  7078. --- emacs-18.59/amiga/unix/include/stdlib.h    Sat Sep 26 14:17:40 1992
  7079. ***************
  7080. *** 0 ****
  7081. --- 1,4 ----
  7082. + /* Avoid problems with conflicting declarations for mkdir */
  7083. + #define mkdir __fake_mkdir
  7084. + #include "include:stdlib.h"
  7085. + #undef mkdir
  7086. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/strings.h emacs-18.59/amiga/unix/include/strings.h
  7087. *** /src/baseline/emacs-18.59/amiga/unix/include/strings.h    Thu Jan  1 00:00:00 1970
  7088. --- emacs-18.59/amiga/unix/include/strings.h    Sat Aug  1 11:48:24 1992
  7089. ***************
  7090. *** 0 ****
  7091. --- 1 ----
  7092. + #include <string.h>
  7093. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/cdefs.h emacs-18.59/amiga/unix/include/sys/cdefs.h
  7094. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/cdefs.h    Thu Jan  1 00:00:00 1970
  7095. --- emacs-18.59/amiga/unix/include/sys/cdefs.h    Thu Jul  9 22:02:46 1992
  7096. ***************
  7097. *** 0 ****
  7098. --- 1,78 ----
  7099. + /*
  7100. +  * Copyright (c) 1991 The Regents of the University of California.
  7101. +  * All rights reserved.
  7102. +  *
  7103. +  * Redistribution and use in source and binary forms, with or without
  7104. +  * modification, are permitted provided that the following conditions
  7105. +  * are met:
  7106. +  * 1. Redistributions of source code must retain the above copyright
  7107. +  *    notice, this list of conditions and the following disclaimer.
  7108. +  * 2. Redistributions in binary form must reproduce the above copyright
  7109. +  *    notice, this list of conditions and the following disclaimer in the
  7110. +  *    documentation and/or other materials provided with the distribution.
  7111. +  * 3. All advertising materials mentioning features or use of this software
  7112. +  *    must display the following acknowledgement:
  7113. +  *    This product includes software developed by the University of
  7114. +  *    California, Berkeley and its contributors.
  7115. +  * 4. Neither the name of the University nor the names of its contributors
  7116. +  *    may be used to endorse or promote products derived from this software
  7117. +  *    without specific prior written permission.
  7118. +  *
  7119. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  7120. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  7121. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  7122. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  7123. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  7124. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  7125. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  7126. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  7127. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  7128. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  7129. +  * SUCH DAMAGE.
  7130. +  *
  7131. +  *    @(#)cdefs.h    7.6 (Berkeley) 5/4/91
  7132. +  */
  7133. + #ifndef    _CDEFS_H_
  7134. + #define    _CDEFS_H_
  7135. + #if defined(__cplusplus)
  7136. + #define    __BEGIN_DECLS    extern "C" {
  7137. + #define    __END_DECLS    };
  7138. + #else
  7139. + #define    __BEGIN_DECLS
  7140. + #define    __END_DECLS
  7141. + #endif
  7142. + /*
  7143. +  * The __CONCAT macro is used to concatenate parts of symbol names, e.g.
  7144. +  * with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
  7145. +  * The __CONCAT macro is a bit tricky -- make sure you don't put spaces
  7146. +  * in between its arguments.  __CONCAT can also concatenate double-quoted
  7147. +  * strings produced by the __STRING macro, but this only works with ANSI C.
  7148. +  */
  7149. + #if defined(__STDC__) || defined(__cplusplus)
  7150. + #define    __P(protos)    protos        /* full-blown ANSI C */
  7151. + #define    __CONCAT(x,y)    x ## y
  7152. + #define    __STRING(x)    #x
  7153. + #else    /* !(__STDC__ || __cplusplus) */
  7154. + #define    __P(protos)    ()        /* traditional C preprocessor */
  7155. + #define    __CONCAT(x,y)    x/**/y
  7156. + #define    __STRING(x)    "x"
  7157. + #ifdef __GNUC__
  7158. + #define    const        __const        /* GCC: ANSI C with -traditional */
  7159. + #define    inline        __inline
  7160. + #define    signed        __signed
  7161. + #define    volatile    __volatile
  7162. + #else    /* !__GNUC__ */
  7163. + #define    const                /* delete ANSI C keywords */
  7164. + #define    inline
  7165. + #define    signed
  7166. + #define    volatile
  7167. + #endif    /* !__GNUC__ */
  7168. + #endif    /* !(__STDC__ || __cplusplus) */
  7169. + #endif /* !_CDEFS_H_ */
  7170. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/fcntl.h emacs-18.59/amiga/unix/include/sys/fcntl.h
  7171. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/fcntl.h    Thu Jan  1 00:00:00 1970
  7172. --- emacs-18.59/amiga/unix/include/sys/fcntl.h    Sat Aug  9 09:22:26 2008
  7173. ***************
  7174. *** 0 ****
  7175. --- 1,193 ----
  7176. + /*-
  7177. +  * Copyright (c) 1983, 1990 The Regents of the University of California.
  7178. +  * All rights reserved.
  7179. +  *
  7180. +  * Redistribution and use in source and binary forms, with or without
  7181. +  * modification, are permitted provided that the following conditions
  7182. +  * are met:
  7183. +  * 1. Redistributions of source code must retain the above copyright
  7184. +  *    notice, this list of conditions and the following disclaimer.
  7185. +  * 2. Redistributions in binary form must reproduce the above copyright
  7186. +  *    notice, this list of conditions and the following disclaimer in the
  7187. +  *    documentation and/or other materials provided with the distribution.
  7188. +  * 3. All advertising materials mentioning features or use of this software
  7189. +  *    must display the following acknowledgement:
  7190. +  *    This product includes software developed by the University of
  7191. +  *    California, Berkeley and its contributors.
  7192. +  * 4. Neither the name of the University nor the names of its contributors
  7193. +  *    may be used to endorse or promote products derived from this software
  7194. +  *    without specific prior written permission.
  7195. +  *
  7196. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  7197. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  7198. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  7199. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  7200. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  7201. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  7202. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  7203. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  7204. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  7205. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  7206. +  * SUCH DAMAGE.
  7207. +  *
  7208. +  *    @(#)fcntl.h    5.14 (Berkeley) 7/1/91
  7209. +  */
  7210. + #ifndef _FCNTL_H_
  7211. + #define    _FCNTL_H_
  7212. + /*
  7213. +  * This file includes the definitions for open and fcntl
  7214. +  * described by POSIX for <fcntl.h>; it also includes
  7215. +  * related kernel definitions.
  7216. +  */
  7217. + #ifndef KERNEL
  7218. + #include <sys/types.h>
  7219. + #endif
  7220. + /*
  7221. +  * File status flags: these are used by open(2), fcntl(2).
  7222. +  * They are also used (indirectly) in the kernel file structure f_flags,
  7223. +  * which is a superset of the open/fcntl flags.  Open flags and f_flags
  7224. +  * are inter-convertible using OFLAGS(fflags) and FFLAGS(oflags).
  7225. +  * Open/fcntl flags begin with O_; kernel-internal flags begin with F.
  7226. +  */
  7227. + /* open-only flags */
  7228. + #define    O_RDONLY    0x0000        /* open for reading only */
  7229. + #define    O_WRONLY    0x0001        /* open for writing only */
  7230. + #define    O_RDWR        0x0002        /* open for reading and writing */
  7231. + #define    O_ACCMODE    0x0003        /* mask for above modes */
  7232. + #ifdef KERNEL
  7233. + /*
  7234. +  * Kernel encoding of open mode; separate read and write bits
  7235. +  * that are independently testable: 1 greater than the above.
  7236. +  */
  7237. + #define    FREAD        0x0001
  7238. + #define    FWRITE        0x0002
  7239. + #endif
  7240. + #define    O_NONBLOCK    0x0004        /* no delay */
  7241. + #define    O_APPEND    0x0008        /* set append mode */
  7242. + #ifndef _POSIX_SOURCE
  7243. + #define    O_SHLOCK    0x0010        /* open with shared file lock */
  7244. + #define    O_EXLOCK    0x0020        /* open with exclusive file lock */
  7245. + #define    O_ASYNC        0x0040        /* signal pgrp when data ready */
  7246. + #define    O_FSYNC        0x0080        /* synchronous writes */
  7247. + #endif
  7248. + #define    O_CREAT        0x0100        /* create if nonexistant */
  7249. + #define    O_TRUNC        0x0200        /* truncate to zero length */
  7250. + #define    O_EXCL        0x0400        /* error if already exists */
  7251. + #ifdef KERNEL
  7252. + #define    FMARK        0x1000        /* mark during gc() */
  7253. + #define    FDEFER        0x2000        /* defer for next gc pass */
  7254. + #define    FHASLOCK    0x4000        /* descriptor holds advisory lock */
  7255. + #endif
  7256. + /* defined by POSIX 1003.1; BSD default, so no bit required */
  7257. + #define    O_NOCTTY    0        /* don't assign controlling terminal */
  7258. + #ifdef KERNEL
  7259. + /* convert from open() flags to/from fflags; convert O_RD/WR to FREAD/FWRITE */
  7260. + #define    FFLAGS(oflags)    ((oflags) + 1)
  7261. + #define    OFLAGS(fflags)    ((fflags) - 1)
  7262. + /* bits to save after open */
  7263. + #define    FMASK        (FREAD|FWRITE|FAPPEND|FASYNC|FFSYNC|FNONBLOCK)
  7264. + /* bits settable by fcntl(F_SETFL, ...) */
  7265. + #define    FCNTLFLAGS    (FAPPEND|FASYNC|FFSYNC|FNONBLOCK)
  7266. + #endif
  7267. + /*
  7268. +  * The O_* flags used to have only F* names, which were used in the kernel
  7269. +  * and by fcntl.  We retain the F* names for the kernel f_flags field
  7270. +  * and for backward compatibility for fcntl.
  7271. +  */
  7272. + #ifndef _POSIX_SOURCE
  7273. + #define    FAPPEND        O_APPEND    /* kernel/compat */
  7274. + #define    FASYNC        O_ASYNC        /* kernel/compat */
  7275. + #define    FFSYNC        O_FSYNC        /* kernel */
  7276. + #define    FNONBLOCK    O_NONBLOCK    /* kernel */
  7277. + #define    FNDELAY        O_NONBLOCK    /* compat */
  7278. + #define    O_NDELAY    O_NONBLOCK    /* compat */
  7279. + #endif
  7280. + /*
  7281. +  * Constants used for fcntl(2)
  7282. +  */
  7283. + /* command values */
  7284. + #define    F_DUPFD        0        /* duplicate file descriptor */
  7285. + #define    F_GETFD        1        /* get file descriptor flags */
  7286. + #define    F_SETFD        2        /* set file descriptor flags */
  7287. + #define    F_GETFL        3        /* get file status flags */
  7288. + #define    F_SETFL        4        /* set file status flags */
  7289. + #ifndef _POSIX_SOURCE
  7290. + #define    F_GETOWN    5        /* get SIGIO/SIGURG proc/pgrp */
  7291. + #define F_SETOWN    6        /* set SIGIO/SIGURG proc/pgrp */
  7292. + #endif
  7293. + #define    F_GETLK        7        /* get record locking information */
  7294. + #define    F_SETLK        8        /* set record locking information */
  7295. + #define    F_SETLKW    9        /* F_SETLK; wait if blocked */
  7296. + /* file descriptor flags (F_GETFD, F_SETFD) */
  7297. + #define    FD_CLOEXEC    1        /* close-on-exec flag */
  7298. + /* record locking flags (F_GETLK, F_SETLK, F_SETLKW) */
  7299. + #define    F_RDLCK        1        /* shared or read lock */
  7300. + #define    F_UNLCK        2        /* unlock */
  7301. + #define    F_WRLCK        3        /* exclusive or write lock */
  7302. + #ifdef KERNEL
  7303. + #define    F_WAIT        0x010        /* Wait until lock is granted */
  7304. + #define    F_FLOCK        0x020         /* Use flock(2) semantics for lock */
  7305. + #define    F_POSIX        0x040         /* Use POSIX semantics for lock */
  7306. + #endif
  7307. + /*
  7308. +  * Advisory file segment locking data type -
  7309. +  * information passed to system by user
  7310. +  */
  7311. + struct flock {
  7312. +     short    l_type;        /* lock type: read/write, etc. */
  7313. +     short    l_whence;    /* type of l_start */
  7314. +     off_t    l_start;    /* starting offset */
  7315. +     off_t    l_len;        /* len = 0 means until end of file */
  7316. +     pid_t    l_pid;        /* lock owner */
  7317. + };
  7318. + #ifndef _POSIX_SOURCE
  7319. + /* lock operations for flock(2) */
  7320. + #define    LOCK_SH        0x01        /* shared file lock */
  7321. + #define    LOCK_EX        0x02        /* exclusive file lock */
  7322. + #define    LOCK_NB        0x04        /* don't block when locking */
  7323. + #define    LOCK_UN        0x08        /* unlock file */
  7324. + #endif
  7325. + #ifndef KERNEL
  7326. + #include <sys/cdefs.h>
  7327. + __BEGIN_DECLS
  7328. + int    open __P((const char *, int, ...));
  7329. + int    creat __P((const char *, mode_t));
  7330. + int    fcntl __P((int, int, ...));
  7331. + #ifndef _POSIX_SOURCE
  7332. + int    flock __P((int, int));
  7333. + #endif /* !_POSIX_SOURCE */
  7334. + __END_DECLS
  7335. + #endif
  7336. + #ifdef AMIGA
  7337. + #define O_NO_CLOSE 0x100    /* An available value, means don't close
  7338. +                    underlying resource */
  7339. + /* Note: S_ISVTX (sticky) is mapped to the pure bit.
  7340. +          The amiga script bit is mapped to world execute ...
  7341. +      user S_IWRITE is the and of the amiga write & delete bits.
  7342. +      group S_IWRITE is the amiga write bit.
  7343. +      world S_IWRITE is the amiga delete bit.
  7344. +      We always set the archive bit off.
  7345. + */
  7346. + #endif
  7347. + #endif /* !_FCNTL_H_ */
  7348. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/file.h emacs-18.59/amiga/unix/include/sys/file.h
  7349. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/file.h    Thu Jan  1 00:00:00 1970
  7350. --- emacs-18.59/amiga/unix/include/sys/file.h    Thu Aug 13 21:26:00 1992
  7351. ***************
  7352. *** 0 ****
  7353. --- 1,2 ----
  7354. + #include <fcntl.h>
  7355. + #include <sys/unistd.h>
  7356. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/filio.h emacs-18.59/amiga/unix/include/sys/filio.h
  7357. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/filio.h    Thu Jan  1 00:00:00 1970
  7358. --- emacs-18.59/amiga/unix/include/sys/filio.h    Sun Jul  5 14:26:20 1992
  7359. ***************
  7360. *** 0 ****
  7361. --- 1,3 ----
  7362. + #define FIONBIO 0        /* ioctl to change non blocking mode
  7363. +                    data (an int *) is a pointer a boolean,
  7364. +                    TRUE for non-blocking io */
  7365. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/ioctl.h emacs-18.59/amiga/unix/include/sys/ioctl.h
  7366. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/ioctl.h    Thu Jan  1 00:00:00 1970
  7367. --- emacs-18.59/amiga/unix/include/sys/ioctl.h    Tue Jul  7 20:44:40 1992
  7368. ***************
  7369. *** 0 ****
  7370. --- 1 ----
  7371. + #include <sys/termios.h>
  7372. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/param.h emacs-18.59/amiga/unix/include/sys/param.h
  7373. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/param.h    Thu Jan  1 00:00:00 1970
  7374. --- emacs-18.59/amiga/unix/include/sys/param.h    Fri Dec  4 22:38:06 1992
  7375. ***************
  7376. *** 0 ****
  7377. --- 1,11 ----
  7378. + #ifndef _PARAM_H
  7379. + #define _PARAM_H
  7380. + #define MAXPATHLEN 1024
  7381. + #define DEV_BSIZE 512
  7382. + #ifndef NULL
  7383. + #define NULL (0)
  7384. + #endif
  7385. + #endif
  7386. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/socket.h emacs-18.59/amiga/unix/include/sys/socket.h
  7387. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/socket.h    Thu Jan  1 00:00:00 1970
  7388. --- emacs-18.59/amiga/unix/include/sys/socket.h    Sat Jul  4 14:31:08 1992
  7389. ***************
  7390. *** 0 ****
  7391. --- 1,4 ----
  7392. + /* Support for socket pairs only */
  7393. + #define AF_UNIX 0
  7394. + #define SOCK_STREAM 0
  7395. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/stat.h emacs-18.59/amiga/unix/include/sys/stat.h
  7396. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/stat.h    Thu Jan  1 00:00:00 1970
  7397. --- emacs-18.59/amiga/unix/include/sys/stat.h    Fri Dec  4 20:34:52 1992
  7398. ***************
  7399. *** 0 ****
  7400. --- 1,133 ----
  7401. + #ifndef _STAT_H
  7402. + #define _STAT_H
  7403. + /*-
  7404. +  * Copyright (c) 1982, 1986, 1989 The Regents of the University of California.
  7405. +  * All rights reserved.
  7406. +  *
  7407. +  * Redistribution and use in source and binary forms, with or without
  7408. +  * modification, are permitted provided that the following conditions
  7409. +  * are met:
  7410. +  * 1. Redistributions of source code must retain the above copyright
  7411. +  *    notice, this list of conditions and the following disclaimer.
  7412. +  * 2. Redistributions in binary form must reproduce the above copyright
  7413. +  *    notice, this list of conditions and the following disclaimer in the
  7414. +  *    documentation and/or other materials provided with the distribution.
  7415. +  * 3. All advertising materials mentioning features or use of this software
  7416. +  *    must display the following acknowledgement:
  7417. +  *    This product includes software developed by the University of
  7418. +  *    California, Berkeley and its contributors.
  7419. +  * 4. Neither the name of the University nor the names of its contributors
  7420. +  *    may be used to endorse or promote products derived from this software
  7421. +  *    without specific prior written permission.
  7422. +  *
  7423. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  7424. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  7425. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  7426. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  7427. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  7428. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  7429. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  7430. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  7431. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  7432. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  7433. +  * SUCH DAMAGE.
  7434. +  *
  7435. +  *    @(#)stat.h    7.11 (Berkeley) 3/3/91
  7436. +  */
  7437. + struct stat
  7438. + {
  7439. +     dev_t    st_dev;            /* inode's device */
  7440. +     ino_t    st_ino;            /* inode's number */
  7441. +     mode_t    st_mode;        /* inode protection mode */
  7442. +     nlink_t    st_nlink;        /* number of hard links */
  7443. +     uid_t    st_uid;            /* user ID of the file's owner */
  7444. +     gid_t    st_gid;            /* group ID of the file's group */
  7445. +     dev_t    st_rdev;        /* device type */
  7446. +     off_t    st_size;        /* file size, in bytes */
  7447. +     time_t    st_atime;        /* time of last access */
  7448. +     long    st_spare1;
  7449. +     time_t    st_mtime;        /* time of last data modification */
  7450. +     long    st_spare2;
  7451. +     time_t    st_ctime;        /* time of last file status change */
  7452. +     long    st_spare3;
  7453. +     long    st_blksize;        /* optimal blocksize for I/O */
  7454. +     long    st_blocks;        /* blocks allocated for file */
  7455. +     u_long    st_flags;        /* user defined flags for file */
  7456. +     u_long    st_gen;            /* file generation number */
  7457. + };
  7458. + #define    S_ISUID    0004000            /* set user id on execution */
  7459. + #define    S_ISGID    0002000            /* set group id on execution */
  7460. + #ifndef _POSIX_SOURCE
  7461. + #define    S_ISTXT    0001000            /* sticky bit */
  7462. + #endif
  7463. + #define    S_IRWXU    0000700            /* RWX mask for owner */
  7464. + #define    S_IRUSR    0000400            /* R for owner */
  7465. + #define    S_IWUSR    0000200            /* W for owner */
  7466. + #define    S_IXUSR    0000100            /* X for owner */
  7467. + #ifndef _POSIX_SOURCE
  7468. + #define    S_IREAD        S_IRUSR
  7469. + #define    S_IWRITE    S_IWUSR
  7470. + #define    S_IEXEC        S_IXUSR
  7471. + #endif
  7472. + #define    S_IRWXG    0000070            /* RWX mask for group */
  7473. + #define    S_IRGRP    0000040            /* R for group */
  7474. + #define    S_IWGRP    0000020            /* W for group */
  7475. + #define    S_IXGRP    0000010            /* X for group */
  7476. + #define    S_IRWXO    0000007            /* RWX mask for other */
  7477. + #define    S_IROTH    0000004            /* R for other */
  7478. + #define    S_IWOTH    0000002            /* W for other */
  7479. + #define    S_IXOTH    0000001            /* X for other */
  7480. + #ifndef _POSIX_SOURCE
  7481. + #define    S_IFMT     0170000        /* type of file */
  7482. + #define    S_IFIFO     0010000        /* named pipe (fifo) */
  7483. + #define    S_IFCHR     0020000        /* character special */
  7484. + #define    S_IFDIR     0040000        /* directory */
  7485. + #define    S_IFBLK     0060000        /* block special */
  7486. + #define    S_IFREG     0100000        /* regular */
  7487. + #define    S_IFLNK     0120000        /* symbolic link */
  7488. + #define    S_IFSOCK 0140000        /* socket */
  7489. + #define    S_ISVTX     0001000        /* save swapped text even after use */
  7490. + #define S_BLKSIZE    512        /* block size used in the stat struct */
  7491. +                     /* 0666 */
  7492. + #define    DEFFILEMODE    (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
  7493. + #endif
  7494. + #define    S_ISDIR(m)    ((m & 0170000) == 0040000)    /* directory */
  7495. + #define    S_ISCHR(m)    ((m & 0170000) == 0020000)    /* char special */
  7496. + #define    S_ISBLK(m)    ((m & 0170000) == 0060000)    /* block special */
  7497. + #define    S_ISREG(m)    ((m & 0170000) == 0100000)    /* regular file */
  7498. + #define    S_ISFIFO(m)    ((m & 0170000) == 0010000)    /* fifo */
  7499. + #ifndef _POSIX_SOURCE
  7500. + #define    S_ISLNK(m)    ((m & 0170000) == 0120000)    /* symbolic link */
  7501. + #define    S_ISSOCK(m)    ((m & 0170000) == 0140000)    /* socket */
  7502. + #endif
  7503. + #ifndef KERNEL
  7504. + #include <sys/cdefs.h>
  7505. + __BEGIN_DECLS
  7506. + mode_t    umask __P((mode_t));
  7507. + int    chmod __P((const char *, mode_t));
  7508. + int    fstat __P((int, struct stat *));
  7509. + int    mkdir __P((char *, mode_t));
  7510. + int    mkfifo __P((char *, mode_t));
  7511. + int    stat __P((char *, struct stat *));
  7512. + #ifndef _POSIX_SOURCE
  7513. + int    fchmod __P((int, mode_t));
  7514. + int    lstat __P((char *, struct stat *));
  7515. + #endif /* not POSIX */
  7516. + __END_DECLS
  7517. + #endif
  7518. + #endif
  7519. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/termios.h emacs-18.59/amiga/unix/include/sys/termios.h
  7520. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/termios.h    Thu Jan  1 00:00:00 1970
  7521. --- emacs-18.59/amiga/unix/include/sys/termios.h    Thu Jul  9 21:49:32 1992
  7522. ***************
  7523. *** 0 ****
  7524. --- 1,15 ----
  7525. + #ifndef _TERMIOS_H
  7526. + #define _TERMIOS_H
  7527. + struct winsize {
  7528. +   unsigned short ws_row;    /* rows, in characters */
  7529. +   unsigned short ws_col;    /* columns, in characters */
  7530. +   unsigned short ws_xpixel;    /* horizontal size, pixels - not used */
  7531. +   unsigned short ws_ypixel;    /* vertical size, pixels - not used */
  7532. + };
  7533. + #define _TERMIO_IOCTL_BASE 1024
  7534. + #define TIOCGWINSZ (_TERMIO_IOCTL_BASE + 0)
  7535. + #endif
  7536. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/time.h emacs-18.59/amiga/unix/include/sys/time.h
  7537. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/time.h    Thu Jan  1 00:00:00 1970
  7538. --- emacs-18.59/amiga/unix/include/sys/time.h    Mon Aug 17 20:40:54 1992
  7539. ***************
  7540. *** 0 ****
  7541. --- 1,90 ----
  7542. + /*
  7543. +  * Copyright (c) 1982, 1986 The Regents of the University of California.
  7544. +  * All rights reserved.
  7545. +  *
  7546. +  * Redistribution and use in source and binary forms, with or without
  7547. +  * modification, are permitted provided that the following conditions
  7548. +  * are met:
  7549. +  * 1. Redistributions of source code must retain the above copyright
  7550. +  *    notice, this list of conditions and the following disclaimer.
  7551. +  * 2. Redistributions in binary form must reproduce the above copyright
  7552. +  *    notice, this list of conditions and the following disclaimer in the
  7553. +  *    documentation and/or other materials provided with the distribution.
  7554. +  * 3. All advertising materials mentioning features or use of this software
  7555. +  *    must display the following acknowledgement:
  7556. +  *    This product includes software developed by the University of
  7557. +  *    California, Berkeley and its contributors.
  7558. +  * 4. Neither the name of the University nor the names of its contributors
  7559. +  *    may be used to endorse or promote products derived from this software
  7560. +  *    without specific prior written permission.
  7561. +  *
  7562. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  7563. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  7564. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  7565. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  7566. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  7567. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  7568. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  7569. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  7570. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  7571. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  7572. +  * SUCH DAMAGE.
  7573. +  *
  7574. +  *    @(#)time.h    7.6 (Berkeley) 2/22/91
  7575. +  */
  7576. + #ifndef _SYS_TIME_H_
  7577. + #define _SYS_TIME_H_
  7578. + /*
  7579. +  * Structure returned by gettimeofday(2) system call,
  7580. +  * and used in other calls.
  7581. +  */
  7582. + /* This defines a struct timeval, with basically equivalent fields. So we use it */
  7583. + #undef LONGBITS            /* This is for emacs's sake */
  7584. + #include <devices/timer.h>
  7585. + #undef LONGBITS
  7586. + /* But we need these defines */
  7587. + #define tv_sec tv_secs
  7588. + #define tv_usec tv_micro
  7589. + struct timezone {
  7590. +     int    tz_minuteswest;    /* minutes west of Greenwich */
  7591. +     int    tz_dsttime;    /* type of dst correction */
  7592. + };
  7593. + #define    DST_NONE    0    /* not on dst */
  7594. + #define    DST_USA        1    /* USA style dst */
  7595. + #define    DST_AUST    2    /* Australian style dst */
  7596. + #define    DST_WET        3    /* Western European dst */
  7597. + #define    DST_MET        4    /* Middle European dst */
  7598. + #define    DST_EET        5    /* Eastern European dst */
  7599. + #define    DST_CAN        6    /* Canada */
  7600. + /*
  7601. +  * Operations on timevals.
  7602. +  *
  7603. +  * NB: timercmp does not work for >= or <=.
  7604. +  */
  7605. + #define    timerisset(tvp)        ((tvp)->tv_sec || (tvp)->tv_usec)
  7606. + #define    timercmp(tvp, uvp, cmp)    \
  7607. +     ((tvp)->tv_sec cmp (uvp)->tv_sec || \
  7608. +      (tvp)->tv_sec == (uvp)->tv_sec && (tvp)->tv_usec cmp (uvp)->tv_usec)
  7609. + #define    timerclear(tvp)        (tvp)->tv_sec = (tvp)->tv_usec = 0
  7610. + #ifndef KERNEL
  7611. + #include <time.h>
  7612. + #ifndef _POSIX_SOURCE
  7613. + #include <sys/cdefs.h>
  7614. + __BEGIN_DECLS
  7615. + int    adjtime __P((const struct timeval *, struct timeval *));
  7616. + int    gettimeofday __P((struct timeval *, struct timezone *));
  7617. + int    settimeofday __P((const struct timeval *, const struct timezone *));
  7618. + int    utimes __P((const char *, const struct timeval *));
  7619. + __END_DECLS
  7620. + #endif /* !POSIX */
  7621. + #endif /* !KERNEL */
  7622. + #endif /* !_SYS_TIME_H_ */
  7623. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/timeb.h emacs-18.59/amiga/unix/include/sys/timeb.h
  7624. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/timeb.h    Thu Jan  1 00:00:00 1970
  7625. --- emacs-18.59/amiga/unix/include/sys/timeb.h    Wed Jul  8 21:02:30 1992
  7626. ***************
  7627. *** 0 ****
  7628. --- 1,12 ----
  7629. + #ifndef _TIMEB_H
  7630. + #define _TIMEB_H
  7631. + struct timeb
  7632. + {
  7633. +   time_t   time;
  7634. +   unsigned short millitm;
  7635. +   short    timezone;
  7636. +   short    dstflag;
  7637. + };
  7638. + #endif
  7639. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/types.h emacs-18.59/amiga/unix/include/sys/types.h
  7640. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/types.h    Thu Jan  1 00:00:00 1970
  7641. --- emacs-18.59/amiga/unix/include/sys/types.h    Fri Aug 14 19:58:50 1992
  7642. ***************
  7643. *** 0 ****
  7644. --- 1,90 ----
  7645. + /*-
  7646. +  * Copyright (c) 1982, 1986, 1991 The Regents of the University of California.
  7647. +  * All rights reserved.
  7648. +  *
  7649. +  * Redistribution and use in source and binary forms, with or without
  7650. +  * modification, are permitted provided that the following conditions
  7651. +  * are met:
  7652. +  * 1. Redistributions of source code must retain the above copyright
  7653. +  *    notice, this list of conditions and the following disclaimer.
  7654. +  * 2. Redistributions in binary form must reproduce the above copyright
  7655. +  *    notice, this list of conditions and the following disclaimer in the
  7656. +  *    documentation and/or other materials provided with the distribution.
  7657. +  * 3. All advertising materials mentioning features or use of this software
  7658. +  *    must display the following acknowledgement:
  7659. +  *    This product includes software developed by the University of
  7660. +  *    California, Berkeley and its contributors.
  7661. +  * 4. Neither the name of the University nor the names of its contributors
  7662. +  *    may be used to endorse or promote products derived from this software
  7663. +  *    without specific prior written permission.
  7664. +  *
  7665. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  7666. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  7667. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  7668. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  7669. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  7670. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  7671. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  7672. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  7673. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  7674. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  7675. +  * SUCH DAMAGE.
  7676. +  *
  7677. +  *    @(#)types.h    7.17 (Berkeley) 5/6/91
  7678. +  */
  7679. + #ifndef _TYPES_H_
  7680. + #define    _TYPES_H_
  7681. + typedef    unsigned char    u_char;
  7682. + typedef    unsigned short    u_short;
  7683. + typedef    unsigned int    u_int;
  7684. + typedef    unsigned long    u_long;
  7685. + typedef    unsigned short    ushort;        /* Sys V compatibility */
  7686. + typedef    char *    caddr_t;        /* core address */
  7687. + typedef    long    daddr_t;        /* disk address */
  7688. + typedef    long    dev_t;            /* device number */
  7689. + typedef    u_long    ino_t;            /* inode number */
  7690. + typedef    long    off_t;            /* file offset (should be a quad) */
  7691. + typedef    u_short    nlink_t;        /* link count */
  7692. + typedef    long    swblk_t;        /* swap offset */
  7693. + typedef    long    segsz_t;        /* segment size */
  7694. + typedef    u_short    uid_t;            /* user id */
  7695. + typedef    u_short    gid_t;            /* group id */
  7696. + typedef    int    pid_t;            /* process id */
  7697. + typedef    int    mode_t;            /* permissions */
  7698. + typedef u_long    fixpt_t;        /* fixed point number */
  7699. + #ifndef _POSIX_SOURCE
  7700. + typedef    struct    _uquad    { u_long val[2]; } u_quad;
  7701. + typedef    struct    _quad    {   long val[2]; } quad;
  7702. + typedef    long *    qaddr_t;    /* should be typedef quad * qaddr_t; */
  7703. + #define    major(x)    ((int)(((u_int)(x) >> 8)&0xff))    /* major number */
  7704. + #define    minor(x)    ((int)((x)&0xff))        /* minor number */
  7705. + #define    makedev(x,y)    ((dev_t)(((x)<<8) | (y)))    /* create dev_t */
  7706. + #endif
  7707. + typedef    long clock_t;
  7708. + typedef long time_t;
  7709. + #ifndef _SIZE_T
  7710. + #define _SIZE_T
  7711. + typedef    unsigned int size_t;
  7712. + #endif
  7713. + #ifndef _POSIX_SOURCE
  7714. + /*
  7715. +  * My implementation only allows 32 fds in select.
  7716. +  */
  7717. + #define    FD_SETSIZE    32
  7718. + typedef    long fd_set;
  7719. + #define    FD_SET(n, p)    (*(p) |= (1 << (n)))
  7720. + #define    FD_CLR(n, p)    (*(p) &= ~(1 << (n)))
  7721. + #define    FD_ISSET(n, p)    (*(p) & (1 << (n)))
  7722. + #define    FD_ZERO(p)    bzero((char *)(p), sizeof(*(p)))
  7723. + #endif /* !_POSIX_SOURCE */
  7724. + #endif /* !_TYPES_H_ */
  7725. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/unistd.h emacs-18.59/amiga/unix/include/sys/unistd.h
  7726. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/unistd.h    Thu Jan  1 00:00:00 1970
  7727. --- emacs-18.59/amiga/unix/include/sys/unistd.h    Fri Dec  4 22:35:36 1992
  7728. ***************
  7729. *** 0 ****
  7730. --- 1,61 ----
  7731. + /*
  7732. +  * Copyright (c) 1989 The Regents of the University of California.
  7733. +  * All rights reserved.
  7734. +  *
  7735. +  * Redistribution and use in source and binary forms, with or without
  7736. +  * modification, are permitted provided that the following conditions
  7737. +  * are met:
  7738. +  * 1. Redistributions of source code must retain the above copyright
  7739. +  *    notice, this list of conditions and the following disclaimer.
  7740. +  * 2. Redistributions in binary form must reproduce the above copyright
  7741. +  *    notice, this list of conditions and the following disclaimer in the
  7742. +  *    documentation and/or other materials provided with the distribution.
  7743. +  * 3. All advertising materials mentioning features or use of this software
  7744. +  *    must display the following acknowledgement:
  7745. +  *    This product includes software developed by the University of
  7746. +  *    California, Berkeley and its contributors.
  7747. +  * 4. Neither the name of the University nor the names of its contributors
  7748. +  *    may be used to endorse or promote products derived from this software
  7749. +  *    without specific prior written permission.
  7750. +  *
  7751. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  7752. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  7753. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  7754. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  7755. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  7756. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  7757. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  7758. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  7759. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  7760. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  7761. +  * SUCH DAMAGE.
  7762. +  *
  7763. +  *    @(#)unistd.h    5.14 (Berkeley) 4/1/91
  7764. +  */
  7765. + #ifndef _SYS_UNISTD_H_
  7766. + #define    _SYS_UNISTD_H_
  7767. + /* compile-time symbolic constants */
  7768. + /* access function */
  7769. + #ifndef F_OK
  7770. + #define    F_OK        0    /* test for existence of file */
  7771. + #define    X_OK        0x01    /* test for execute or search permission */
  7772. + #define    W_OK        0x02    /* test for write permission */
  7773. + #define    R_OK        0x04    /* test for read permission */
  7774. + #endif
  7775. + /* whence values for lseek(2) */
  7776. + #define    SEEK_SET    0    /* set file offset to offset */
  7777. + #define    SEEK_CUR    1    /* set file offset to current plus offset */
  7778. + #define    SEEK_END    2    /* set file offset to EOF plus offset */
  7779. + #ifndef _POSIX_SOURCE
  7780. + /* whence values for lseek(2); renamed by POSIX 1003.1 */
  7781. + #define    L_SET        SEEK_SET
  7782. + #define    L_INCR        SEEK_CUR
  7783. + #define    L_XTND        SEEK_END
  7784. + #endif
  7785. + #endif /* !_SYS_UNISTD_H_ */
  7786. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/vlimit.h emacs-18.59/amiga/unix/include/sys/vlimit.h
  7787. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/vlimit.h    Thu Jan  1 00:00:00 1970
  7788. --- emacs-18.59/amiga/unix/include/sys/vlimit.h    Sat Jul  4 14:31:04 1992
  7789. ***************
  7790. *** 0 ****
  7791. --- 1,2 ----
  7792. + /* Dummy for Emacs so that we can run on VMS... */
  7793. + #define LIM_DATA 0
  7794. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/sys/wait.h emacs-18.59/amiga/unix/include/sys/wait.h
  7795. *** /src/baseline/emacs-18.59/amiga/unix/include/sys/wait.h    Thu Jan  1 00:00:00 1970
  7796. --- emacs-18.59/amiga/unix/include/sys/wait.h    Fri Aug 14 19:55:48 1992
  7797. ***************
  7798. *** 0 ****
  7799. --- 1,82 ----
  7800. + /*
  7801. +  * Copyright (c) 1982, 1986, 1989 The Regents of the University of California.
  7802. +  * All rights reserved.
  7803. +  *
  7804. +  * Redistribution and use in source and binary forms, with or without
  7805. +  * modification, are permitted provided that the following conditions
  7806. +  * are met:
  7807. +  * 1. Redistributions of source code must retain the above copyright
  7808. +  *    notice, this list of conditions and the following disclaimer.
  7809. +  * 2. Redistributions in binary form must reproduce the above copyright
  7810. +  *    notice, this list of conditions and the following disclaimer in the
  7811. +  *    documentation and/or other materials provided with the distribution.
  7812. +  * 3. All advertising materials mentioning features or use of this software
  7813. +  *    must display the following acknowledgement:
  7814. +  *    This product includes software developed by the University of
  7815. +  *    California, Berkeley and its contributors.
  7816. +  * 4. Neither the name of the University nor the names of its contributors
  7817. +  *    may be used to endorse or promote products derived from this software
  7818. +  *    without specific prior written permission.
  7819. +  *
  7820. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  7821. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  7822. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  7823. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  7824. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  7825. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  7826. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  7827. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  7828. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  7829. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  7830. +  * SUCH DAMAGE.
  7831. +  *
  7832. +  *    @(#)wait.h    7.17 (Berkeley) 6/19/91
  7833. +  */
  7834. + /*
  7835. +  * This file holds definitions relevent to the wait4 system call
  7836. +  * and the alternate interfaces that use it (wait, wait3, waitpid).
  7837. +  */
  7838. + /*
  7839. +  * Macros to test the exit status returned by wait
  7840. +  * and extract the relevant values.
  7841. +  */
  7842. + #define    _W_INT(i)    (i)
  7843. + #define    _WSTATUS(x)    (_W_INT(x) & 0177)
  7844. + #define    _WSTOPPED    0177        /* _WSTATUS if process is stopped */
  7845. + #define WIFSTOPPED(x)    (_WSTATUS(x) == _WSTOPPED)
  7846. + #define WSTOPSIG(x)    (_W_INT(x) >> 8)
  7847. + #define WIFSIGNALED(x)    (_WSTATUS(x) != _WSTOPPED && _WSTATUS(x) != 0)
  7848. + #define WTERMSIG(x)    (_WSTATUS(x))
  7849. + #define WIFEXITED(x)    (_WSTATUS(x) == 0)
  7850. + #define WEXITSTATUS(x)    (_W_INT(x) >> 8)
  7851. + #define    W_EXITCODE(ret, sig)    ((ret) << 8 | (sig))
  7852. + #define    W_STOPCODE(sig)        ((sig) << 8 | _WSTOPPED)
  7853. + /*
  7854. +  * Option bits for the second argument of wait4.  WNOHANG causes the
  7855. +  * wait to not hang if there are no stopped or terminated processes, rather
  7856. +  * returning an error indication in this case (pid==0).  WUNTRACED
  7857. +  * indicates that the caller should receive status about untraced children
  7858. +  * which stop due to signals.  If children are stopped and a wait without
  7859. +  * this option is done, it is as though they were still running... nothing
  7860. +  * about them is returned.
  7861. +  */
  7862. + #define WNOHANG        1    /* dont hang in wait */
  7863. + #define WUNTRACED    2    /* tell about stopped, untraced children */
  7864. + #ifndef KERNEL
  7865. + #include <sys/types.h>
  7866. + #include <sys/cdefs.h>
  7867. + __BEGIN_DECLS
  7868. + struct rusage;    /* forward declaration */
  7869. + pid_t    wait __P((int *));
  7870. + pid_t    waitpid __P((pid_t, int *, int));
  7871. + pid_t    wait3 __P((int *, int, struct rusage *));
  7872. + pid_t    wait4 __P((pid_t, int *, int, struct rusage *));
  7873. + __END_DECLS
  7874. + #endif
  7875. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/time.h emacs-18.59/amiga/unix/include/time.h
  7876. *** /src/baseline/emacs-18.59/amiga/unix/include/time.h    Thu Jan  1 00:00:00 1970
  7877. --- emacs-18.59/amiga/unix/include/time.h    Sat Aug  1 18:53:58 1992
  7878. ***************
  7879. *** 0 ****
  7880. --- 1,78 ----
  7881. + /*
  7882. +  * Copyright (c) 1989 The Regents of the University of California.
  7883. +  * All rights reserved.
  7884. +  *
  7885. +  * Redistribution and use in source and binary forms, with or without
  7886. +  * modification, are permitted provided that the following conditions
  7887. +  * are met:
  7888. +  * 1. Redistributions of source code must retain the above copyright
  7889. +  *    notice, this list of conditions and the following disclaimer.
  7890. +  * 2. Redistributions in binary form must reproduce the above copyright
  7891. +  *    notice, this list of conditions and the following disclaimer in the
  7892. +  *    documentation and/or other materials provided with the distribution.
  7893. +  * 3. All advertising materials mentioning features or use of this software
  7894. +  *    must display the following acknowledgement:
  7895. +  *    This product includes software developed by the University of
  7896. +  *    California, Berkeley and its contributors.
  7897. +  * 4. Neither the name of the University nor the names of its contributors
  7898. +  *    may be used to endorse or promote products derived from this software
  7899. +  *    without specific prior written permission.
  7900. +  *
  7901. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  7902. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  7903. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  7904. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  7905. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  7906. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  7907. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  7908. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  7909. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  7910. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  7911. +  * SUCH DAMAGE.
  7912. +  *
  7913. +  *    @(#)time.h    5.12 (Berkeley) 3/9/91
  7914. +  */
  7915. + #ifndef _TIME_H_
  7916. + #define    _TIME_H_
  7917. + #include <sys/types.h>
  7918. + struct tm {
  7919. +     int    tm_sec;        /* seconds after the minute [0-60] */
  7920. +     int    tm_min;        /* minutes after the hour [0-59] */
  7921. +     int    tm_hour;    /* hours since midnight [0-23] */
  7922. +     int    tm_mday;    /* day of the month [1-31] */
  7923. +     int    tm_mon;        /* months since January [0-11] */
  7924. +     int    tm_year;    /* years since 1900 */
  7925. +     int    tm_wday;    /* days since Sunday [0-6] */
  7926. +     int    tm_yday;    /* days since January 1 [0-365] */
  7927. +     int    tm_isdst;    /* Daylight Savings Time flag */
  7928. +     long    tm_gmtoff;    /* offset from CUT in seconds */
  7929. +     char    *tm_zone;    /* timezone abbreviation */
  7930. + };
  7931. + #include <sys/cdefs.h>
  7932. + __BEGIN_DECLS
  7933. + char *asctime __P((const struct tm *));
  7934. + clock_t clock __P((void));
  7935. + char *ctime __P((const time_t *));
  7936. + double difftime __P((time_t, time_t));
  7937. + struct tm *gmtime __P((const time_t *));
  7938. + struct tm *localtime __P((const time_t *));
  7939. + time_t mktime __P((struct tm *));
  7940. + size_t strftime __P((char *, size_t, const char *, const struct tm *));
  7941. + time_t time __P((time_t *));
  7942. + #ifndef _ANSI_SOURCE
  7943. + void tzset __P((void));
  7944. + #endif /* not ANSI */
  7945. + #if !defined(_ANSI_SOURCE) && !defined(_POSIX_SOURCE)
  7946. + /*char *timezone __P((int, int));*/
  7947. + void tzsetwall __P((void));
  7948. + #endif /* neither ANSI nor POSIX */
  7949. + __END_DECLS
  7950. + #endif /* !_TIME_H_ */
  7951. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/tzfile.h emacs-18.59/amiga/unix/include/tzfile.h
  7952. *** /src/baseline/emacs-18.59/amiga/unix/include/tzfile.h    Thu Jan  1 00:00:00 1970
  7953. --- emacs-18.59/amiga/unix/include/tzfile.h    Fri Jul 31 23:33:04 1992
  7954. ***************
  7955. *** 0 ****
  7956. --- 1,151 ----
  7957. + /*
  7958. +  * Copyright (c) 1988 Regents of the University of California.
  7959. +  * All rights reserved.
  7960. +  *
  7961. +  * This code is derived from software contributed to Berkeley by
  7962. +  * Arthur David Olson of the National Cancer Institute.
  7963. +  *
  7964. +  * Redistribution and use in source and binary forms, with or without
  7965. +  * modification, are permitted provided that the following conditions
  7966. +  * are met:
  7967. +  * 1. Redistributions of source code must retain the above copyright
  7968. +  *    notice, this list of conditions and the following disclaimer.
  7969. +  * 2. Redistributions in binary form must reproduce the above copyright
  7970. +  *    notice, this list of conditions and the following disclaimer in the
  7971. +  *    documentation and/or other materials provided with the distribution.
  7972. +  * 3. All advertising materials mentioning features or use of this software
  7973. +  *    must display the following acknowledgement:
  7974. +  *    This product includes software developed by the University of
  7975. +  *    California, Berkeley and its contributors.
  7976. +  * 4. Neither the name of the University nor the names of its contributors
  7977. +  *    may be used to endorse or promote products derived from this software
  7978. +  *    without specific prior written permission.
  7979. +  *
  7980. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  7981. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  7982. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  7983. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  7984. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  7985. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  7986. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  7987. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  7988. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  7989. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  7990. +  * SUCH DAMAGE.
  7991. +  *
  7992. +  *    @(#)tzfile.h    5.10 (Berkeley) 4/3/91
  7993. +  */
  7994. + #ifndef _TZFILE_H_
  7995. + #define    _TZFILE_H_
  7996. + /*
  7997. +  * Information about time zone files.
  7998. +  */
  7999. +             /* Time zone object file directory */
  8000. + #define TZDIR        "s:zoneinfo"
  8001. + #define TZDEFAULT    "s:localtime"
  8002. + #define TZDEFRULES    "posixrules"
  8003. + /*
  8004. + ** Each file begins with. . .
  8005. + */
  8006. + struct tzhead {
  8007. +     char    tzh_reserved[24];    /* reserved for future use */
  8008. +     char    tzh_ttisstdcnt[4];    /* coded number of trans. time flags */
  8009. +     char    tzh_leapcnt[4];        /* coded number of leap seconds */
  8010. +     char    tzh_timecnt[4];        /* coded number of transition times */
  8011. +     char    tzh_typecnt[4];        /* coded number of local time types */
  8012. +     char    tzh_charcnt[4];        /* coded number of abbr. chars */
  8013. + };
  8014. + /*
  8015. + ** . . .followed by. . .
  8016. + **
  8017. + **    tzh_timecnt (char [4])s        coded transition times a la time(2)
  8018. + **    tzh_timecnt (unsigned char)s    types of local time starting at above
  8019. + **    tzh_typecnt repetitions of
  8020. + **        one (char [4])        coded GMT offset in seconds
  8021. + **        one (unsigned char)    used to set tm_isdst
  8022. + **        one (unsigned char)    that's an abbreviation list index
  8023. + **    tzh_charcnt (char)s        '\0'-terminated zone abbreviations
  8024. + **    tzh_leapcnt repetitions of
  8025. + **        one (char [4])        coded leap second transition times
  8026. + **        one (char [4])        total correction after above
  8027. + **    tzh_ttisstdcnt (char)s        indexed by type; if TRUE, transition
  8028. + **                    time is standard time, if FALSE,
  8029. + **                    transition time is wall clock time
  8030. + **                    if absent, transition times are
  8031. + **                    assumed to be wall clock time
  8032. + */
  8033. + /*
  8034. + ** In the current implementation, "tzset()" refuses to deal with files that
  8035. + ** exceed any of the limits below.
  8036. + */
  8037. + /*
  8038. + ** The TZ_MAX_TIMES value below is enough to handle a bit more than a
  8039. + ** year's worth of solar time (corrected daily to the nearest second) or
  8040. + ** 138 years of Pacific Presidential Election time
  8041. + ** (where there are three time zone transitions every fourth year).
  8042. + */
  8043. + #define TZ_MAX_TIMES    370
  8044. + #define NOSOLAR            /* 4BSD doesn't currently handle solar time */
  8045. + #ifndef NOSOLAR
  8046. + #define TZ_MAX_TYPES    256    /* Limited by what (unsigned char)'s can hold */
  8047. + #else
  8048. + #define TZ_MAX_TYPES    10    /* Maximum number of local time types */
  8049. + #endif
  8050. + #define TZ_MAX_CHARS    50    /* Maximum number of abbreviation characters */
  8051. + #define    TZ_MAX_LEAPS    50    /* Maximum number of leap second corrections */
  8052. + #define SECSPERMIN    60
  8053. + #define MINSPERHOUR    60
  8054. + #define HOURSPERDAY    24
  8055. + #define DAYSPERWEEK    7
  8056. + #define DAYSPERNYEAR    365
  8057. + #define DAYSPERLYEAR    366
  8058. + #define SECSPERHOUR    (SECSPERMIN * MINSPERHOUR)
  8059. + #define SECSPERDAY    ((long) SECSPERHOUR * HOURSPERDAY)
  8060. + #define MONSPERYEAR    12
  8061. + #define TM_SUNDAY    0
  8062. + #define TM_MONDAY    1
  8063. + #define TM_TUESDAY    2
  8064. + #define TM_WEDNESDAY    3
  8065. + #define TM_THURSDAY    4
  8066. + #define TM_FRIDAY    5
  8067. + #define TM_SATURDAY    6
  8068. + #define TM_JANUARY    0
  8069. + #define TM_FEBRUARY    1
  8070. + #define TM_MARCH    2
  8071. + #define TM_APRIL    3
  8072. + #define TM_MAY        4
  8073. + #define TM_JUNE        5
  8074. + #define TM_JULY        6
  8075. + #define TM_AUGUST    7
  8076. + #define TM_SEPTEMBER    8
  8077. + #define TM_OCTOBER    9
  8078. + #define TM_NOVEMBER    10
  8079. + #define TM_DECEMBER    11
  8080. + #define TM_YEAR_BASE    1900
  8081. + #define EPOCH_YEAR    1970
  8082. + #define EPOCH_WDAY    TM_THURSDAY
  8083. + /*
  8084. + ** Accurate only for the past couple of centuries;
  8085. + ** that will probably do.
  8086. + */
  8087. + #define isleap(y) (((y) % 4) == 0 && ((y) % 100) != 0 || ((y) % 400) == 0)
  8088. + #endif /* !_TZFILE_H_ */
  8089. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/unistd.h emacs-18.59/amiga/unix/include/unistd.h
  8090. *** /src/baseline/emacs-18.59/amiga/unix/include/unistd.h    Thu Jan  1 00:00:00 1970
  8091. --- emacs-18.59/amiga/unix/include/unistd.h    Wed Dec  2 19:54:00 1992
  8092. ***************
  8093. *** 0 ****
  8094. --- 1,178 ----
  8095. + /*-
  8096. +  * Copyright (c) 1991 The Regents of the University of California.
  8097. +  * All rights reserved.
  8098. +  *
  8099. +  * Redistribution and use in source and binary forms, with or without
  8100. +  * modification, are permitted provided that the following conditions
  8101. +  * are met:
  8102. +  * 1. Redistributions of source code must retain the above copyright
  8103. +  *    notice, this list of conditions and the following disclaimer.
  8104. +  * 2. Redistributions in binary form must reproduce the above copyright
  8105. +  *    notice, this list of conditions and the following disclaimer in the
  8106. +  *    documentation and/or other materials provided with the distribution.
  8107. +  * 3. All advertising materials mentioning features or use of this software
  8108. +  *    must display the following acknowledgement:
  8109. +  *    This product includes software developed by the University of
  8110. +  *    California, Berkeley and its contributors.
  8111. +  * 4. Neither the name of the University nor the names of its contributors
  8112. +  *    may be used to endorse or promote products derived from this software
  8113. +  *    without specific prior written permission.
  8114. +  *
  8115. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  8116. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  8117. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  8118. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  8119. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  8120. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  8121. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  8122. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  8123. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  8124. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  8125. +  * SUCH DAMAGE.
  8126. +  *
  8127. +  *    @(#)unistd.h    5.13 (Berkeley) 6/17/91
  8128. +  */
  8129. + #ifndef _UNISTD_H_
  8130. + #define    _UNISTD_H_
  8131. + #include <sys/cdefs.h>
  8132. + #include <sys/types.h>
  8133. + #include <sys/unistd.h>
  8134. + #define     STDIN_FILENO    0    /* standard input file descriptor */
  8135. + #define    STDOUT_FILENO    1    /* standard output file descriptor */
  8136. + #define    STDERR_FILENO    2    /* standard error file descriptor */
  8137. + #ifndef NULL
  8138. + #define    NULL        0    /* null pointer constant */
  8139. + #endif
  8140. + typedef    int ssize_t;        /* count of bytes or error indication */
  8141. + __BEGIN_DECLS
  8142. + void     _exit __P((int));
  8143. + int     access __P((const char *, int));
  8144. + u_int     alarm __P((u_int));
  8145. + int     chdir __P((const char *));
  8146. + int     chown __P((const char *, uid_t, gid_t));
  8147. + int     close __P((int));
  8148. + char    *cuserid __P((char *));
  8149. + int     dup __P((int));
  8150. + int     dup2 __P((int, int));
  8151. + int     execl __P((const char *, const char *, ...));
  8152. + int     execle __P((const char *, const char *, ...));
  8153. + int     execlp __P((const char *, const char *, ...));
  8154. + int     execv __P((const char *, char * const *));
  8155. + int     execve __P((const char *, char * const *, char * const *));
  8156. + int     execvp __P((const char *, char * const *));
  8157. + pid_t     fork __P((void));
  8158. + long     fpathconf __P((int, int));        /* not yet */
  8159. + char    *getcwd __P((const char *, int));
  8160. + gid_t     getegid __P((void));
  8161. + uid_t     geteuid __P((void));
  8162. + gid_t     getgid __P((void));
  8163. + int     getgroups __P((int, int *));        /* XXX (gid_t *) */
  8164. + char    *getlogin __P((void));
  8165. + pid_t     getpgrp __P((void));
  8166. + pid_t     getpid __P((void));
  8167. + pid_t     getppid __P((void));
  8168. + uid_t     getuid __P((void));
  8169. + int     isatty __P((int));
  8170. + int     link __P((const char *, const char *));
  8171. + off_t     lseek __P((int, off_t, int));
  8172. + long     pathconf __P((const char *, int));    /* not yet */
  8173. + int     pause __P((void));
  8174. + int     pipe __P((int *));
  8175. + ssize_t     read __P((int, void *, size_t));
  8176. + int     rmdir __P((const char *));
  8177. + int     setgid __P((gid_t));
  8178. + int     setpgid __P((pid_t, pid_t));
  8179. + pid_t     setsid __P((void));
  8180. + int     setuid __P((uid_t));
  8181. + u_int     sleep __P((u_int));
  8182. + long     sysconf __P((int));            /* not yet */
  8183. + pid_t     tcgetpgrp __P((int));
  8184. + int     tcsetpgrp __P((int, pid_t));
  8185. + char    *ttyname __P((int));
  8186. + int     unlink __P((const char *));
  8187. + ssize_t     write __P((int, const void *, size_t));
  8188. + #ifndef    _POSIX_SOURCE
  8189. + /* structure timeval required for select() */
  8190. + #include <sys/time.h>
  8191. + int     acct __P((const char *));
  8192. + int     async_daemon __P((void));
  8193. + char    *brk __P((const char *));
  8194. + int     chflags __P((const char *, long));
  8195. + int     chroot __P((const char *));
  8196. + char    *crypt __P((const char *, const char *));
  8197. + int     des_cipher __P((const char *, char *, long, int));
  8198. + int     des_setkey __P((const char *key));
  8199. + int     encrypt __P((char *, int));
  8200. + void     endusershell __P((void));
  8201. + int     exect __P((const char *, char * const *, char * const *));
  8202. + int     fchdir __P((int));
  8203. + int     fchflags __P((int, long));
  8204. + int     fchown __P((int, int, int));
  8205. + int     fnmatch __P((const char *, const char *, int));
  8206. + int     fsync __P((int));
  8207. + int     ftruncate __P((int, off_t));
  8208. + int     getdtablesize __P((void));
  8209. + long     gethostid __P((void));
  8210. + int     gethostname __P((char *, int));
  8211. + mode_t     getmode __P((const void *, mode_t));
  8212. + int     getpagesize __P((void));
  8213. + char    *getpass __P((const char *));
  8214. + char    *getusershell __P((void));
  8215. + char    *getwd __P((char *));            /* obsoleted by getcwd() */
  8216. + int     initgroups __P((const char *, int));
  8217. + int     mknod __P((const char *, mode_t, dev_t));
  8218. + int     mkstemp __P((char *));
  8219. + char    *mktemp __P((char *));
  8220. + int     nfssvc __P((int));
  8221. + int     nice __P((int));
  8222. + void     psignal __P((u_int, const char *));
  8223. + extern char *sys_siglist[];
  8224. + int     profil __P((char *, int, int, int));
  8225. + int     rcmd __P((char **, int, const char *,
  8226. +         const char *, const char *, int *));
  8227. + char    *re_comp __P((const char *));
  8228. + int     re_exec __P((const char *));
  8229. + int     readlink __P((const char *, char *, int));
  8230. + int     reboot __P((int));
  8231. + int     revoke __P((const char *));
  8232. + int     rresvport __P((int *));
  8233. + int     ruserok __P((const char *, int, const char *, const char *));
  8234. + void    *sbrk __P((unsigned));
  8235. + int     select __P((int, fd_set *, fd_set *, fd_set *, struct timeval *));
  8236. + int     setegid __P((gid_t));
  8237. + int     seteuid __P((uid_t));
  8238. + int     setgroups __P((int, const int *));
  8239. + void     sethostid __P((long));
  8240. + int     sethostname __P((const char *, int));
  8241. + int     setkey __P((const char *));
  8242. + int     setlogin __P((const char *));
  8243. + void    *setmode __P((const char *));
  8244. + int     setpgrp __P((pid_t pid, pid_t pgrp));    /* obsoleted by setpgid() */
  8245. + int     setregid __P((int, int));
  8246. + int     setreuid __P((int, int));
  8247. + int     setrgid __P((gid_t));
  8248. + int     setruid __P((uid_t));
  8249. + void     setusershell __P((void));
  8250. + int     swapon __P((const char *));
  8251. + int     symlink __P((const char *, const char *));
  8252. + void     sync __P((void));
  8253. + int     syscall __P((int, ...));
  8254. + int     truncate __P((const char *, off_t));
  8255. + int     ttyslot __P((void));
  8256. + u_int     ualarm __P((u_int, u_int));
  8257. + void     usleep __P((u_int));
  8258. + int     vfork __P((void));
  8259. + #endif /* !_POSIX_SOURCE */
  8260. + __END_DECLS
  8261. + #endif /* !_UNISTD_H_ */
  8262. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/include/utime.h emacs-18.59/amiga/unix/include/utime.h
  8263. *** /src/baseline/emacs-18.59/amiga/unix/include/utime.h    Thu Jan  1 00:00:00 1970
  8264. --- emacs-18.59/amiga/unix/include/utime.h    Sun Jul  5 18:02:02 1992
  8265. ***************
  8266. *** 0 ****
  8267. --- 1,3 ----
  8268. + struct utimbuf { time_t actime, modtime; };
  8269. + int utime(char *path, struct utimbuf *times);
  8270. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/intro.doc emacs-18.59/amiga/unix/intro.doc
  8271. *** /src/baseline/emacs-18.59/amiga/unix/intro.doc    Thu Jan  1 00:00:00 1970
  8272. --- emacs-18.59/amiga/unix/intro.doc    Tue Sep 22 20:27:34 1992
  8273. ***************
  8274. *** 0 ****
  8275. --- 1,44 ----
  8276. + A quick guide to programs compiled with the unix library
  8277. + --------------------------------------------------------
  8278. + If you are using programs compiled with my unix library, you should note
  8279. + the following points:
  8280. + a) The following environment variables are taken into account by the unix library,
  8281. + and therefore by any program compiled with it:
  8282. + USER - A user name for the sole Amiga user (default "user").
  8283. + USERNAME - The full name of the sole Amiga user (default $USER).
  8284. + HOME - A "home" directory (default "s:") for programs that want one. Configuration
  8285. +        files will probably end up here ...
  8286. + SHELL - A program which behaves reasonably like a Unix shell (default "bin:sh").
  8287. +     You should copy the sh executable there if you don't have a Unix-like shell.
  8288. + HOSTNAME - The name of your machine (default "amiga").
  8289. + b) Command line parsing is a mixture of AmigaDOS and Unix conventions (this
  8290. + explanation assumes familiarity with Unix terminology ...) :
  8291. + - Arguments in single quotes (') are left as is.
  8292. + - Within arguments in double quotes ("), * acts as an escape character. Arguments
  8293. + cotaining wildcards are expanded into several arguments (note that this is a
  8294. + different from the Unix behaviour). ' must be used to escape wildcards (this is the
  8295. + standard AmigaDOS convention).
  8296. + - Within unquoted arguments, \ acts as an escape character for wildcards, spaces, 
  8297. + etc. Arguments containing wildcards are expanded into several arguments.
  8298. + As an example, assume that uecho is an unix-like echo command compiled with the
  8299. + unix library, and that the current directory contains one file, echo.c. Then
  8300. +   uecho 'f*un\' "#?.c" "*.c" "\mad" \*.c \\ \n
  8301. + displays
  8302. +   f*un\ echo.c .c \mad *.c \ n
  8303. + c) Timezones. If you install the timezone information (provided with the
  8304. + unix library), you must set your system clock to GMT. Otherwise the times
  8305. + displayed or set by the unix library will be incorrect. To compensate, you
  8306. + won't have to adjust your system clock for daylight savings time (the local
  8307. + time calculated from GMT will always be correct).
  8308. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/mkmkf emacs-18.59/amiga/unix/mkmkf
  8309. *** /src/baseline/emacs-18.59/amiga/unix/mkmkf    Thu Jan  1 00:00:00 1970
  8310. --- emacs-18.59/amiga/unix/mkmkf    Wed Sep 29 23:08:18 1993
  8311. ***************
  8312. *** 0 ****
  8313. --- 1,2 ----
  8314. + copy smakefile smakefile!
  8315. + perl src:unix/mkmkf.perl `glob *.c` >smakefile
  8316. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/mkmkf.perl emacs-18.59/amiga/unix/mkmkf.perl
  8317. *** /src/baseline/emacs-18.59/amiga/unix/mkmkf.perl    Thu Jan  1 00:00:00 1970
  8318. --- emacs-18.59/amiga/unix/mkmkf.perl    Wed Sep 29 23:08:32 1993
  8319. ***************
  8320. *** 0 ****
  8321. --- 1,72 ----
  8322. + print "OBJS= ";
  8323. + for ($i = $#ARGV; $i >= 0; $i--)
  8324. + {
  8325. +     ($objs[$i] = $ARGV[$i]) =~ s/\.\w*$/\.o/;
  8326. + }
  8327. + &colprint(6, " ", @objs);
  8328. + print "\n\n";
  8329. + if (-f "smakefile.base")
  8330. + {
  8331. +     open(BASE, "smakefile.base");
  8332. +     print while (<BASE>);
  8333. +     close(BASE);
  8334. + }
  8335. + foreach $file (@ARGV)
  8336. + {
  8337. +     $dest = $file;
  8338. +     $dest =~ s/\.\w*$/\.o/;
  8339. +     if ($file =~ /\.c$/)
  8340. +     {
  8341. +     printf("%s: %s", $dest, $file);
  8342. +     $colto = length($dest) + length($file) + 2;
  8343. +     # Search for included files
  8344. +     %seen = ();
  8345. +     &included($file, 0);
  8346. +     &colprint($colto, " ", keys(%seen));
  8347. +     print "\n";
  8348. +     }
  8349. +     else
  8350. +     {
  8351. +     printf("%s: %s\n\n", $dest, $file);
  8352. +     }
  8353. + }
  8354. + sub colprint
  8355. + {
  8356. +     local($colto, $sep, @names) = @_;
  8357. +     $col = $colto;
  8358. +     $sl = length($sep);
  8359. +     foreach $name (@names)
  8360. +     {
  8361. +     $nl = length($name);
  8362. +     if ($col + $nl + $sl > 78)
  8363. +     {
  8364. +         print " \\\n", " " x $colto;
  8365. +         $col = $colto;
  8366. +     }
  8367. +     print $sep, $name;
  8368. +     $col += $sl + $nl;
  8369. +     }
  8370. + }
  8371. + sub included
  8372. + {
  8373. +     local($file, $input) = @_;
  8374. +     $input++;
  8375. +     if (!open($input, $file))
  8376. +     {
  8377. +     print STDERR "Can't open $file: $!\n";
  8378. +     return;
  8379. +     }
  8380. +     while (<$input>)
  8381. +     {
  8382. +     if (/^#\s*include\s*"([^"]*)"/ && !$seen{$1} && -e $1)
  8383. +         {
  8384. +         $seen{$1} = 1;
  8385. +         &included($1, $input);
  8386. +     }
  8387. +     }
  8388. +     close($input);
  8389. + }
  8390. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/SCOPTIONS emacs-18.59/amiga/unix/src/SCOPTIONS
  8391. *** /src/baseline/emacs-18.59/amiga/unix/src/SCOPTIONS    Thu Jan  1 00:00:00 1970
  8392. --- emacs-18.59/amiga/unix/src/SCOPTIONS    Sat Dec  5 10:00:04 1992
  8393. ***************
  8394. *** 0 ****
  8395. --- 1,9 ----
  8396. + PARAMETERS=BOTH
  8397. + NOSTACKCHECK
  8398. + STRUCTUREEQUIVALENCE
  8399. + NOVERSION
  8400. + NOICONS
  8401. + INCLUDEDIR=/include/internal/
  8402. + INCLUDEDIR=/include/
  8403. + IGNORE=104
  8404. + IGNORE=74
  8405. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/_exit.c emacs-18.59/amiga/unix/src/_exit.c
  8406. *** /src/baseline/emacs-18.59/amiga/unix/src/_exit.c    Thu Jan  1 00:00:00 1970
  8407. --- emacs-18.59/amiga/unix/src/_exit.c    Fri Dec  4 22:18:52 1992
  8408. ***************
  8409. *** 0 ****
  8410. --- 1,30 ----
  8411. + #include "amiga.h"
  8412. + #include "files.h"
  8413. + #include "fifofd.h"
  8414. + #include "signals.h"
  8415. + #include "timers.h"
  8416. + #include <fcntl.h>
  8417. + void _close_all(void)
  8418. + {
  8419. +   int fd, lfd = _last_fd();
  8420. +   for (fd = 0; fd < lfd; fd++) close(fd);
  8421. + }
  8422. + #undef _exit
  8423. + void __exit(int rc)
  8424. + {
  8425. +   _close_all();
  8426. +   _cleanup_fifo();
  8427. +   _cleanup_signals();
  8428. +   _free_timer(_odd_timer);
  8429. +   XCEXIT(rc);
  8430. + }
  8431. + void _exit(int rc)
  8432. + {
  8433. +   return __exit(rc);
  8434. + }
  8435. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/_main.c emacs-18.59/amiga/unix/src/_main.c
  8436. *** /src/baseline/emacs-18.59/amiga/unix/src/_main.c    Thu Jan  1 00:00:00 1970
  8437. --- emacs-18.59/amiga/unix/src/_main.c    Sat Jun  5 15:25:10 1993
  8438. ***************
  8439. *** 0 ****
  8440. --- 1,471 ----
  8441. + #include "amiga.h"
  8442. + #include "signals.h"
  8443. + #include "fifofd.h"
  8444. + #include "timers.h"
  8445. + #include "amigados.h"
  8446. + #include <exec/execbase.h>
  8447. + #include <dos/var.h>
  8448. + #include <workbench/startup.h>
  8449. + #include <proto/timer.h>
  8450. + #include <stdlib.h>
  8451. + #include <string.h>
  8452. + #include <ctype.h>
  8453. + #include <sys/time.h>
  8454. + #include <pwd.h>
  8455. + struct Process *_us;
  8456. + struct timeinfo *_odd_timer;
  8457. + ULONG _odd_sig;
  8458. + long _startup_time;
  8459. + long _stack_size;
  8460. + struct Library *TimerBase;
  8461. + static char *empty_env = 0;    /* A default empty environment */
  8462. + char **environ;            /* Unix style environment variable list */
  8463. + char *_system_name;
  8464. + extern struct ExecBase *SysBase;
  8465. + extern struct passwd _amiga_user;
  8466. + extern main(int argc, char **argv, char **envp);
  8467. + static void nomem(void)
  8468. + {
  8469. +   _fail("No memory");
  8470. + }
  8471. + static void *_xmalloc(unsigned n)
  8472. + {
  8473. +     void *p = malloc(n);
  8474. +     if (!p) nomem();
  8475. +     return p;
  8476. + }
  8477. + static void *_xrealloc(void *p, unsigned n)
  8478. + {
  8479. +     void *p2 = realloc(p, n);
  8480. +     if (!p2) nomem();
  8481. +     return p2;
  8482. + }
  8483. + static char *safe_copystr(char *str)
  8484. + {
  8485. +     char *new;
  8486. +     if (!str) str = "";
  8487. +     new = malloc(strlen(str) + 1);
  8488. +     if (!new) return 0;
  8489. +     return strcpy(new, str);
  8490. + }
  8491. + static char *copystr(char *str)
  8492. + {
  8493. +     char *new = safe_copystr(str);
  8494. +     if (!new) nomem();
  8495. +     return new;
  8496. + }
  8497. + void make_environ(void)
  8498. + /* Effect: Builds a UNIX style environ variable from the AmigaDOS environment.
  8499. + */
  8500. + {
  8501. +     int env_count = 0;
  8502. +     long env_len = 0;
  8503. +     struct LocalVar *scan_env;
  8504. +     char **new_environ, *env_text;
  8505. +     for (scan_env = (struct LocalVar *)_us->pr_LocalVars.mlh_Head;
  8506. +      scan_env->lv_Node.ln_Succ;
  8507. +      scan_env = (struct LocalVar *)scan_env->lv_Node.ln_Succ)
  8508. +     if (scan_env->lv_Node.ln_Type == LV_VAR &&
  8509. +         !(scan_env->lv_Flags & (GVF_GLOBAL_ONLY | GVF_BINARY_VAR)))
  8510. +     {
  8511. +         /* We only handle local text variables */
  8512. +         env_count++;
  8513. +         env_len += 2 + strlen(scan_env->lv_Node.ln_Name) + scan_env->lv_Len;
  8514. +     }
  8515. +     new_environ = environ = (char **)_xmalloc(sizeof(char *) * (1 + env_count) +
  8516. +                           env_len);
  8517. +     env_text = (char *)(environ + (1 + env_count));
  8518. +     if (!environ) environ = &empty_env;
  8519. +     else
  8520. +     {
  8521. +     for (scan_env = (struct LocalVar *)_us->pr_LocalVars.mlh_Head;
  8522. +          scan_env->lv_Node.ln_Succ;
  8523. +          scan_env = (struct LocalVar *)scan_env->lv_Node.ln_Succ)
  8524. +         if (scan_env->lv_Node.ln_Type == LV_VAR &&
  8525. +         !(scan_env->lv_Flags & (GVF_GLOBAL_ONLY | GVF_BINARY_VAR)))
  8526. +         {
  8527. +         /* We only handle local text variables */
  8528. +         char *env_name = scan_env->lv_Node.ln_Name;
  8529. +         int env_len = scan_env->lv_Len;
  8530. +         *new_environ++ = env_text;
  8531. +         while (*env_name) *env_text++ = *env_name++;
  8532. +         *env_text++ = '=';
  8533. +         env_name = scan_env->lv_Value;
  8534. +         while (env_len--) *env_text++ = *env_name++;
  8535. +         *env_text++ = '\0';
  8536. +         }
  8537. +     *new_environ = 0;
  8538. +     }
  8539. + }
  8540. + /* _main routine.
  8541. +    Hides the differences between wb & cli.
  8542. +    Provides a unix-like environment (including coomand-line parsing &
  8543. +    wildcard expansion)
  8544. + */
  8545. + #define DEFPATLEN 256
  8546. + #define NAMELEN 1024
  8547. + struct args
  8548. + {
  8549. +     int size;
  8550. +     int argc;
  8551. +     char **argv;
  8552. + };
  8553. + static void make_argv(struct args *args, int argc)
  8554. + {
  8555. +     args->size = argc;
  8556. +     args->argc = 0;
  8557. +     args->argv = _xmalloc(sizeof(char *) * argc);
  8558. + }
  8559. + static int safe_add_arg(struct args *args, char *argument, int copy)
  8560. + {
  8561. +     char *arg_copy;
  8562. +     if (copy) arg_copy = safe_copystr(argument);
  8563. +     else arg_copy = argument;
  8564. +     if (!arg_copy) return 0;
  8565. +     if (args->argc >= args->size)
  8566. +     {
  8567. +     /* Make argv bigger */
  8568. +     if (args->size * 2 < args->size + 16) args->size += 16;
  8569. +     else args->size *= 2;
  8570. +     args->argv = realloc(args->argv, sizeof(char *) * args->size);
  8571. +     if (!args->argv) return 0;
  8572. +     }
  8573. +     args->argv[args->argc++] = arg_copy;
  8574. +     return 1;
  8575. + }
  8576. + static void add_arg(struct args *args, char *argument, int copy)
  8577. + {
  8578. +     if (!safe_add_arg(args, argument, copy)) nomem();
  8579. + }
  8580. + static void concat_args(struct args *args, struct args *add)
  8581. + {
  8582. +     if (args->argc + add->argc > args->size)
  8583. +     {
  8584. +     args->size = (args->argc + add->argc) * 2;
  8585. +     args->argv = _xrealloc(args->argv, sizeof(char *) * args->size);
  8586. +     }
  8587. +     memcpy(args->argv + args->argc, add->argv, add->argc * sizeof(char *));
  8588. +     args->argc += add->argc;
  8589. +     free(add->argv);
  8590. + }
  8591. + typedef enum { quote_none, quote_single, quote_double } quote_type;
  8592. + typedef enum { extract_normal, extract_test, extract_pattern } extract_type;
  8593. + static void extract(char *buf, char *start, char *end,
  8594. +             quote_type type, extract_type extract)
  8595. + {
  8596. +   char *res = buf;
  8597. +   switch (type)
  8598. +     {
  8599. +     case quote_single:
  8600. +       if (extract != extract_test)
  8601. +     {
  8602. +       buf[end - start] = '\0';
  8603. +       memcpy(buf, start, end - start);
  8604. +     }
  8605. +       else strcpy(buf, "a");    /* Things in quotes are never patterns */
  8606. +       break;
  8607. +     case quote_none:
  8608. +       while (start < end)
  8609. +     {
  8610. +       if (start[0] == '\\' && start[1])
  8611. +         {
  8612. +           start += 2;
  8613. +           /* Wildcard are escaped */
  8614. +           if (extract == extract_test) *res++ = 'a';
  8615. +           else if (extract == extract_pattern)
  8616. +         switch (start[-1])
  8617. +           {
  8618. +           case '?': case '#': case '(': case ')': case '|': case '[':
  8619. +           case ']': case '~': case '%': case '*': case '\'':
  8620. +             *res++ = '\'';
  8621. +           default:
  8622. +             *res++ = start[-1];
  8623. +             break;
  8624. +           }
  8625. +           else *res++ = start[-1];
  8626. +         }
  8627. +       else *res++ = *start++;
  8628. +     }
  8629. +       *res++ = '\0';
  8630. +       break;
  8631. +     case quote_double:
  8632. +       while (start < end)
  8633. +     {
  8634. +       if (start[0] == '*' && start[1])
  8635. +         {
  8636. +           start += 2;
  8637. +           switch (start[-1])
  8638. +         {
  8639. +         case 'n': *res++ = '\n'; break;
  8640. +         case 'e': *res++ = '\x1b'; break;
  8641. +         default: *res++ = start[-1]; break;
  8642. +         }
  8643. +         }
  8644. +       else *res++ = *start++;
  8645. +     }
  8646. +       *res++ = '\0';
  8647. +       break;
  8648. +     }
  8649. + }
  8650. + void __stdargs _main(char *line)
  8651. + /* Effect: Call unix_main with wildcards in argc & argv expanded (like unix)
  8652. +      Also, do some early amiga initialisation for emacs.
  8653. + */
  8654. + {
  8655. +   struct args args, wildargs;
  8656. +   char *pattern, *arg_start, *arg_end, *arg;
  8657. +   quote_type arg_quoted;
  8658. +   long patlen = DEFPATLEN;
  8659. +   struct AnchorPath *anchor;
  8660. +   struct timeval now;
  8661. +   if (SysBase->LibNode.lib_Version < 37) XCEXIT(20);
  8662. +   stdin->_file = 0;
  8663. +   stdin->_flag = _IOREAD;
  8664. +   stdout->_file = 1;
  8665. +   stdout->_flag = _IOWRT;
  8666. +   stderr->_file = 2;
  8667. +   stderr->_flag = _IORW | _IONBF;
  8668. +   _us = (struct Process *)FindTask(0);
  8669. +   _odd_timer = _alloc_timer();
  8670. +   if (!_odd_timer) _fail("Failed to create timer");
  8671. +   _odd_sig = _timer_sig(_odd_timer);
  8672. +   TimerBase = _odd_timer->io->tr_node.io_Device;
  8673. +   GetSysTime(&now);
  8674. +   _startup_time = now.tv_secs;
  8675. +   /* These use _startup_time, so must be here */
  8676. +   _init_fifo();
  8677. +   _init_signals();
  8678. +   if (_us->pr_CLI) _stack_size = ((struct CommandLineInterface *)BADDR(_us->pr_CLI))->cli_DefaultStack << 2;
  8679. +   else _stack_size = _us->pr_StackSize;
  8680. +   /* Make unix-like argc, argv (expand wildcards) */
  8681. +   if (!line[0])            /* Workbench, create argc & argv from files passed */
  8682. +     {
  8683. +       extern struct WBStartup *_WBenchMsg;
  8684. +       int i;
  8685. +       BPTR nilin = Open("NIL:",MODE_NEWFILE);
  8686. +       BPTR nilout = Open("NIL:",MODE_NEWFILE);
  8687. +       BPTR nilerr = Open("NIL:",MODE_NEWFILE);
  8688. +       /* Initialise I/O. Nothing is available */
  8689. +       if (!nilin || !nilout || !nilerr)
  8690. +     {
  8691. +       if (nilin) Close(nilin);
  8692. +       if (nilout) Close(nilout);
  8693. +       if (nilerr) Close(nilerr);
  8694. +       nomem();
  8695. +     }
  8696. +       _init_unixio(nilin, TRUE, nilout, TRUE, nilerr, TRUE);
  8697. +       /* Make argc, argv from Workbench parameters */
  8698. +       make_argv(&args, _WBenchMsg->sm_NumArgs);
  8699. +       for (i = 0; i < _WBenchMsg->sm_NumArgs; i++)
  8700. +     {
  8701. +       char filename[256];
  8702. +       if (_WBenchMsg->sm_ArgList[i].wa_Lock &&
  8703. +           NameFromLock(_WBenchMsg->sm_ArgList[i].wa_Lock, filename, 256))
  8704. +         {
  8705. +           if (_WBenchMsg->sm_ArgList[i].wa_Name)
  8706. +         AddPart(filename, _WBenchMsg->sm_ArgList[i].wa_Name, 256);
  8707. +           add_arg(&args, filename, TRUE);
  8708. +         }
  8709. +       /* else A parameter was lost, cry, cry, cry */
  8710. +     }
  8711. +     }
  8712. +   else                /* From CLI expand wildcards (with unix-like command line parsing) */
  8713. +     {
  8714. +       int close_error;
  8715. +       BPTR in, out, error;
  8716. +       /* Initialise I/O. Copy CLI info */
  8717. +       in = Input();
  8718. +       out = Output();
  8719. +       close_error = FALSE;
  8720. +       if ((error = _us->pr_CES) == 0)
  8721. +     {
  8722. +       close_error = TRUE;
  8723. +       if ((error = Open("*", MODE_OLDFILE)) == 0)
  8724. +         if ((error = Open("NIL:", MODE_OLDFILE)) == 0) nomem();
  8725. +     }
  8726. +       _init_unixio(in, FALSE, out, FALSE, error, close_error);
  8727. +       make_argv(&args, 1);
  8728. +       anchor = _xmalloc(sizeof(struct AnchorPath) + NAMELEN);
  8729. +       anchor->ap_Strlen = NAMELEN;
  8730. +       pattern = _xmalloc(DEFPATLEN);
  8731. +       while (1)
  8732. +     {
  8733. +       long new_patlen;
  8734. +       int wild;
  8735. +       /* Skip white space */
  8736. +       while (isspace(*line)) line++;
  8737. +       if (!*line) break;    /* End of command line */
  8738. +       /* Extract next word */
  8739. +       /* Words in double quotes are handled AmigaDOS style
  8740. +          (+ filename expansion) */
  8741. +       if (*line == '"')
  8742. +         {
  8743. +           line++;
  8744. +           arg_start = line;
  8745. +           /* Find end of word */
  8746. +           while (*line && *line != '"')
  8747. +         {
  8748. +           /* * is an escape character inside double quotes
  8749. +              (AmigaDOS compatibility) */
  8750. +           if ((*line == '*') && line[1]) line++;
  8751. +           line++;
  8752. +         }
  8753. +           arg_end = line;
  8754. +           if (*line == '"') line++;
  8755. +           arg_quoted = quote_double;
  8756. +         }
  8757. +       /* Words in single quotes are handled unix style */
  8758. +       else if (*line == '\'')
  8759. +         {
  8760. +           line++;
  8761. +           arg_start = line;
  8762. +           /* Find end of word */
  8763. +           while (*line && *line != '\'') line++;
  8764. +           arg_end = line;
  8765. +           if (*line == '\'') line++;
  8766. +           arg_quoted = quote_single;
  8767. +         }
  8768. +       /* Unquoted words are handled unix style */
  8769. +       else            /* Plain word */
  8770. +         {
  8771. +           arg_start = line;
  8772. +           /* Find end of word */
  8773. +           while (*line && *line != ' ' && *line != '\n' && *line != '\t')
  8774. +         {
  8775. +           if (*line == '\\' && line[1]) line++;
  8776. +           line++;
  8777. +         }
  8778. +           arg_end = line;
  8779. +           arg_quoted = quote_none;
  8780. +         }
  8781. +       arg = _xmalloc(arg_end - arg_start + 1);
  8782. +       if (args.argc == 0)    /* Command name is left untouched */
  8783. +         {
  8784. +           strncpy(arg, arg_start, arg_end - arg_start);
  8785. +           arg[arg_end - arg_start] = 0;
  8786. +           add_arg(&args, arg, FALSE);
  8787. +         }
  8788. +       else
  8789. +         {
  8790. +           new_patlen = (arg_end - arg_start) * 2 + 16;
  8791. +           if (new_patlen > patlen)
  8792. +         {
  8793. +           free(pattern);
  8794. +           pattern = _xmalloc(new_patlen);
  8795. +           patlen = new_patlen;
  8796. +         }
  8797. +           extract(arg, arg_start, arg_end, arg_quoted, extract_test);
  8798. +           wild = ParsePattern(arg, pattern, patlen);
  8799. +           if (wild < 0)
  8800. +         {
  8801. +           *arg_end = 0;
  8802. +           _fail("Invalid wildcard %s", arg_start);
  8803. +         }
  8804. +           if (!wild)
  8805. +         {
  8806. +           extract(arg, arg_start, arg_end, arg_quoted, extract_normal);
  8807. +           add_arg(&args, arg, FALSE);
  8808. +         }
  8809. +           else
  8810. +         {
  8811. +           int none = TRUE;
  8812. +           long error;
  8813. +           anchor->ap_Flags = anchor->ap_Reserved = anchor->ap_BreakBits = 0;
  8814. +           extract(arg, arg_start, arg_end, arg_quoted, extract_pattern);
  8815. +           make_argv(&wildargs, 16);
  8816. +           if (!(error = MatchFirst(arg, anchor)))
  8817. +             {
  8818. +               while (!error)
  8819. +             {
  8820. +               none = FALSE;
  8821. +               if (!safe_add_arg(&wildargs, anchor->ap_Buf, TRUE))
  8822. +                 {
  8823. +                   error = ERROR_NO_FREE_STORE;
  8824. +                   break;
  8825. +                 }
  8826. +               error = MatchNext(anchor);
  8827. +             }
  8828. +               MatchEnd(anchor);
  8829. +             }
  8830. +           if (error != ERROR_NO_MORE_ENTRIES)
  8831. +               _fail("Error expanding arguments");
  8832. +           if (none)
  8833. +             {
  8834. +               extract(arg, arg_start, arg_end, arg_quoted, extract_normal);
  8835. +               add_arg(&args, arg, FALSE);
  8836. +             }
  8837. +           else
  8838. +             {
  8839. +               tqsort(wildargs.argv, wildargs.argc);
  8840. +               concat_args(&args, &wildargs);
  8841. +               free(arg);
  8842. +             }
  8843. +         }
  8844. +         }
  8845. +     }
  8846. +       free(pattern);
  8847. +       free(anchor);
  8848. +     }
  8849. +   make_environ();
  8850. +   if (!(_amiga_user.pw_name = getenv("USER"))) _amiga_user.pw_name = "user";
  8851. +   if (!(_amiga_user.pw_gecos = getenv("USERNAME")))
  8852. +     _amiga_user.pw_gecos = _amiga_user.pw_name;
  8853. +   if (!(_amiga_user.pw_dir = getenv("HOME"))) _amiga_user.pw_dir = "s:";
  8854. +   if (!(_amiga_user.pw_shell = getenv("SHELL"))) _amiga_user.pw_shell = "bin:sh";
  8855. +   if (!(_system_name = getenv("HOSTNAME"))) _system_name = "amiga";
  8856. +     
  8857. +   main(args.argc, args.argv, environ);
  8858. +   exit(0);
  8859. + }
  8860. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/_setjmp.asm emacs-18.59/amiga/unix/src/_setjmp.asm
  8861. *** /src/baseline/emacs-18.59/amiga/unix/src/_setjmp.asm    Thu Jan  1 00:00:00 1970
  8862. --- emacs-18.59/amiga/unix/src/_setjmp.asm    Sat Dec  5 18:18:18 1992
  8863. ***************
  8864. *** 0 ****
  8865. --- 1,27 ----
  8866. +     XDEF    __setjmp
  8867. +     XDEF    __longjmp
  8868. +     XDEF    @_setjmp
  8869. +     XDEF    @_longjmp
  8870. +     
  8871. +     csect    text,0,,2,2
  8872. + __setjmp:
  8873. +     move.l    4(a7),a0        ; Get jmp_buf
  8874. + @_setjmp
  8875. +     move.l    (a7),(a0)+        ; Save return address
  8876. +     movem.l    a2-a7/d2-d7,(a0)    ; Save registers
  8877. +     moveq    #0,d0
  8878. +     rts
  8879. + __longjmp:
  8880. +     move.l    4(a7),a0        ; Get jmp_buf
  8881. +     move.l    8(a7),d0        ; Get result
  8882. + @_longjmp
  8883. +     bne.s    ok
  8884. +     moveq    #1,d0            ; Return must be != 0
  8885. + ok    move.l    (a0)+,a1        ; Get return address
  8886. +     movem.l    (a0),a2-a7/d2-d7    ; Get registers
  8887. +     addq.l    #4,a7            ; Pop return address
  8888. +     jmp    (a1)            ; And return to setjmp call
  8889. +     end
  8890. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/abort.c emacs-18.59/amiga/unix/src/abort.c
  8891. *** /src/baseline/emacs-18.59/amiga/unix/src/abort.c    Thu Jan  1 00:00:00 1970
  8892. --- emacs-18.59/amiga/unix/src/abort.c    Sun Jul 19 17:47:02 1992
  8893. ***************
  8894. *** 0 ****
  8895. --- 1,11 ----
  8896. + #include "amiga.h"
  8897. + #include <signal.h>
  8898. + extern void _close_all(void);
  8899. + void abort(void)
  8900. + {
  8901. +   chkabort();
  8902. +   _close_all();
  8903. +   kill(getpid(), SIGIOT);
  8904. + }
  8905. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/access.c emacs-18.59/amiga/unix/src/access.c
  8906. *** /src/baseline/emacs-18.59/amiga/unix/src/access.c    Thu Jan  1 00:00:00 1970
  8907. --- emacs-18.59/amiga/unix/src/access.c    Fri Dec  4 22:18:18 1992
  8908. ***************
  8909. *** 0 ****
  8910. --- 1,29 ----
  8911. + #include "amiga.h"
  8912. + #include "fibstat.h"
  8913. + #include <sys/types.h>
  8914. + #include <sys/stat.h>
  8915. + #undef access
  8916. + int __access(const char *name, int mode)
  8917. + {
  8918. +   int ret = -1;
  8919. +   struct stat sbuf;
  8920. +   chkabort();
  8921. +   if (_fibstat(name, &sbuf) == 0)
  8922. +     {
  8923. +       int fmode = (sbuf.st_mode & (S_IREAD | S_IEXEC)) >> 6 |
  8924. +     (sbuf.st_mode & (S_IWRITE >> 3)) >> 3;
  8925. +       if ((fmode & mode) == mode) ret = 0;
  8926. +       else errno = EACCES;
  8927. +     }
  8928. +   return ret;
  8929. + }
  8930. + int access(const char *name, int mode)
  8931. + {
  8932. +   return __access(name, mode);
  8933. + }
  8934. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/alloca.c emacs-18.59/amiga/unix/src/alloca.c
  8935. *** /src/baseline/emacs-18.59/amiga/unix/src/alloca.c    Thu Jan  1 00:00:00 1970
  8936. --- emacs-18.59/amiga/unix/src/alloca.c    Sun Jul 19 17:47:02 1992
  8937. ***************
  8938. *** 0 ****
  8939. --- 1,194 ----
  8940. + /*
  8941. +     alloca -- (mostly) portable public-domain implementation -- D A Gwyn
  8942. +     last edit:    86/05/30    rms
  8943. +        include config.h, since on VMS it renames some symbols.
  8944. +        Use xmalloc instead of malloc.
  8945. +     This implementation of the PWB library alloca() function,
  8946. +     which is used to allocate space off the run-time stack so
  8947. +     that it is automatically reclaimed upon procedure exit, 
  8948. +     was inspired by discussions with J. Q. Johnson of Cornell.
  8949. +     It should work under any C implementation that uses an
  8950. +     actual procedure stack (as opposed to a linked list of
  8951. +     frames).  There are some preprocessor constants that can
  8952. +     be defined when compiling for your specific system, for
  8953. +     improved efficiency; however, the defaults should be okay.
  8954. +     The general concept of this implementation is to keep
  8955. +     track of all alloca()-allocated blocks, and reclaim any
  8956. +     that are found to be deeper in the stack than the current
  8957. +     invocation.  This heuristic does not reclaim storage as
  8958. +     soon as it becomes invalid, but it will do so eventually.
  8959. +     As a special case, alloca(0) reclaims storage without
  8960. +     allocating any.  It is a good idea to use alloca(0) in
  8961. +     your main control loop, etc. to force garbage collection.
  8962. + */
  8963. + #ifndef lint
  8964. + static char    SCCSid[] = "@(#)alloca.c    1.1";    /* for the "what" utility */
  8965. + #endif
  8966. + #ifdef emacs
  8967. + #include "config.h"
  8968. + #ifdef static
  8969. + /* actually, only want this if static is defined as ""
  8970. +    -- this is for usg, in which emacs must undefine static
  8971. +    in order to make unexec workable
  8972. +    */
  8973. + #ifndef STACK_DIRECTION
  8974. + you
  8975. + lose
  8976. + -- must know STACK_DIRECTION at compile-time
  8977. + #endif /* STACK_DIRECTION undefined */
  8978. + #endif static
  8979. + #endif emacs
  8980. + #ifndef alloca  /* If compiling with GCC, this file's not needed.  */
  8981. + #ifdef __STDC__
  8982. + typedef void    *pointer;        /* generic pointer type */
  8983. + #else
  8984. + typedef char    *pointer;        /* generic pointer type */
  8985. + #endif
  8986. + #define    NULL    0            /* null pointer constant */
  8987. + extern void    free();
  8988. + extern pointer    malloc();
  8989. + /*
  8990. +     Define STACK_DIRECTION if you know the direction of stack
  8991. +     growth for your system; otherwise it will be automatically
  8992. +     deduced at run-time.
  8993. +     STACK_DIRECTION > 0 => grows toward higher addresses
  8994. +     STACK_DIRECTION < 0 => grows toward lower addresses
  8995. +     STACK_DIRECTION = 0 => direction of growth unknown
  8996. + */
  8997. + #ifndef STACK_DIRECTION
  8998. + #define    STACK_DIRECTION    0        /* direction unknown */
  8999. + #endif
  9000. + #if (STACK_DIRECTION) != 0
  9001. + #define    STACK_DIR    STACK_DIRECTION    /* known at compile-time */
  9002. + #else    /* STACK_DIRECTION == 0; need run-time code */
  9003. + static int    stack_dir;        /* 1 or -1 once known */
  9004. + #define    STACK_DIR    stack_dir
  9005. + static void
  9006. + find_stack_direction (/* void */)
  9007. + {
  9008. +   static char    *addr = NULL;    /* address of first
  9009. +                    `dummy', once known */
  9010. +   auto char    dummy;        /* to get stack address */
  9011. +   if (addr == NULL)
  9012. +     {                /* initial entry */
  9013. +       addr = &dummy;
  9014. +       find_stack_direction ();    /* recurse once */
  9015. +     }
  9016. +   else                /* second entry */
  9017. +     if (&dummy > addr)
  9018. +       stack_dir = 1;        /* stack grew upward */
  9019. +     else
  9020. +       stack_dir = -1;        /* stack grew downward */
  9021. + }
  9022. + #endif    /* STACK_DIRECTION == 0 */
  9023. + /*
  9024. +     An "alloca header" is used to:
  9025. +     (a) chain together all alloca()ed blocks;
  9026. +     (b) keep track of stack depth.
  9027. +     It is very important that sizeof(header) agree with malloc()
  9028. +     alignment chunk size.  The following default should work okay.
  9029. + */
  9030. + #ifndef    ALIGN_SIZE
  9031. + #define    ALIGN_SIZE    sizeof(double)
  9032. + #endif
  9033. + typedef union hdr
  9034. + {
  9035. +   char    align[ALIGN_SIZE];    /* to force sizeof(header) */
  9036. +   struct
  9037. +     {
  9038. +       union hdr *next;        /* for chaining headers */
  9039. +       char *deep;        /* for stack depth measure */
  9040. +     } h;
  9041. + } header;
  9042. + /*
  9043. +     alloca( size ) returns a pointer to at least `size' bytes of
  9044. +     storage which will be automatically reclaimed upon exit from
  9045. +     the procedure that called alloca().  Originally, this space
  9046. +     was supposed to be taken from the current stack frame of the
  9047. +     caller, but that method cannot be made to work for some
  9048. +     implementations of C, for example under Gould's UTX/32.
  9049. + */
  9050. + static header *last_alloca_header = NULL; /* -> last alloca header */
  9051. + pointer
  9052. + alloca (size)            /* returns pointer to storage */
  9053. +      unsigned    size;        /* # bytes to allocate */
  9054. + {
  9055. +   auto char    probe;        /* probes stack depth: */
  9056. +   register char    *depth = &probe;
  9057. + #if STACK_DIRECTION == 0
  9058. +   if (STACK_DIR == 0)        /* unknown growth direction */
  9059. +     find_stack_direction ();
  9060. + #endif
  9061. +                 /* Reclaim garbage, defined as all alloca()ed storage that
  9062. +                    was allocated from deeper in the stack than currently. */
  9063. +   {
  9064. +     register header    *hp;    /* traverses linked list */
  9065. +     for (hp = last_alloca_header; hp != NULL;)
  9066. +       if (STACK_DIR > 0 && hp->h.deep > depth
  9067. +       || STACK_DIR < 0 && hp->h.deep < depth)
  9068. +     {
  9069. +       register header    *np = hp->h.next;
  9070. +       free ((pointer) hp);    /* collect garbage */
  9071. +       hp = np;        /* -> next header */
  9072. +     }
  9073. +       else
  9074. +     break;            /* rest are not deeper */
  9075. +     last_alloca_header = hp;    /* -> last valid storage */
  9076. +   }
  9077. +   if (size == 0)
  9078. +     return NULL;        /* no allocation required */
  9079. +   /* Allocate combined header + user data storage. */
  9080. +   {
  9081. +     register pointer    new = malloc (sizeof (header) + size);
  9082. +     /* address of header */
  9083. +     ((header *)new)->h.next = last_alloca_header;
  9084. +     ((header *)new)->h.deep = depth;
  9085. +     last_alloca_header = (header *)new;
  9086. +     /* User storage begins just after header. */
  9087. +     return (pointer)((char *)new + sizeof(header));
  9088. +   }
  9089. + }
  9090. + #endif /* no alloca */
  9091. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/allocdos.c emacs-18.59/amiga/unix/src/allocdos.c
  9092. *** /src/baseline/emacs-18.59/amiga/unix/src/allocdos.c    Thu Jan  1 00:00:00 1970
  9093. --- emacs-18.59/amiga/unix/src/allocdos.c    Sun Oct 11 13:04:22 1992
  9094. ***************
  9095. *** 0 ****
  9096. --- 1,6 ----
  9097. + #include <proto/dos.h>
  9098. + void *AllocDosObjectTags(ULONG type, ULONG tag1, ...)
  9099. + {
  9100. +   return AllocDosObject(type, &tag1);
  9101. + }
  9102. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/amiga.h emacs-18.59/amiga/unix/src/amiga.h
  9103. *** /src/baseline/emacs-18.59/amiga/unix/src/amiga.h    Thu Jan  1 00:00:00 1970
  9104. --- emacs-18.59/amiga/unix/src/amiga.h    Wed Dec  2 20:12:34 1992
  9105. ***************
  9106. *** 0 ****
  9107. --- 1,39 ----
  9108. + #include <exec/types.h>
  9109. + #include <dos/dos.h>
  9110. + #include <proto/dos.h>
  9111. + #include <proto/exec.h>
  9112. + #include <errno.h>
  9113. + #include <stddef.h>
  9114. + #include <stdlib.h>
  9115. + #include <stdio.h>
  9116. + #include <sys/types.h>
  9117. + #include <internal/vars.h>
  9118. + extern struct timeinfo *_odd_timer;
  9119. + extern ULONG _odd_sig;
  9120. + extern struct Library *TimerBase;
  9121. + int convert_oserr(int ioerr);
  9122. + void _seterr(void);
  9123. + void chkabort(void);
  9124. + #define ERROR do { _seterr(); return -1; } while(0)
  9125. + #define AMIGA_UID 1
  9126. + #define AMIGA_GID 0
  9127. + int _make_protection(int mode);
  9128. + int _make_mode(int protection);
  9129. + void _message(char *format, ...);
  9130. + /* Display a message which is as visible as possible (either to the console
  9131. +    or to as a requester).
  9132. +    Assume very little about library state */
  9133. + void _fail(char *format, ...);
  9134. + /* Display a message which is as visible as possible (either to the console
  9135. +    or to as a requester).
  9136. +    Assume very little about library state.
  9137. +    Exit with error code RETURN_FAIL after that. */
  9138. + void _sprintf(char *dest, char *format, ...);
  9139. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/amigados.c emacs-18.59/amiga/unix/src/amigados.c
  9140. *** /src/baseline/emacs-18.59/amiga/unix/src/amigados.c    Thu Jan  1 00:00:00 1970
  9141. --- emacs-18.59/amiga/unix/src/amigados.c    Sun Dec  6 13:14:12 1992
  9142. ***************
  9143. *** 0 ****
  9144. --- 1,299 ----
  9145. + #include "amiga.h"
  9146. + #include "files.h"
  9147. + #include "signals.h"
  9148. + #include <exec/memory.h>
  9149. + #include <fcntl.h>
  9150. + #include <sys/termios.h>
  9151. + #include <amiga/ioctl.h>
  9152. + #include <string.h>
  9153. + /* Code for fd's describing AmigaDOS files */
  9154. + struct amigainfo
  9155. + {
  9156. +     BPTR fh;
  9157. +     BPTR lock;            /* A lock on the file (may be null) */
  9158. +     long protection;        /* To be set when file is closed, -1 for none */
  9159. +     char interactive;        /* True if file was interactive */
  9160. +     char deleted;        /* True if file has been deleted but not closed */
  9161. + };
  9162. + static ULONG __regargs file_select_start(void *userinfo, int rd, int wr)
  9163. + {
  9164. +   /* Input always immediately available, gniark */
  9165. +   return (ULONG)-1;
  9166. + }
  9167. + static void __regargs file_select_poll(void *userinfo, int *rd, int *wr)
  9168. + {
  9169. +   /* Input always immediately available, gniark */
  9170. + }
  9171. + static int __regargs file_read(void *userinfo, void *buffer, unsigned int length)
  9172. + {
  9173. +   struct amigainfo *info = userinfo;
  9174. +   BPTR fh = info->fh;
  9175. +   LONG cnt;
  9176. +   if (info->deleted) return 0;
  9177. +   if ((cnt = Read(fh, buffer, length)) == -1) ERROR;
  9178. +   return (int)cnt;
  9179. + }
  9180. + static int __regargs file_write(void *userinfo, void *buffer, unsigned int length)
  9181. + {
  9182. +   struct amigainfo *info = userinfo;
  9183. +   BPTR fh = info->fh;
  9184. +   int cnt;
  9185. +   if (info->deleted) return 0;
  9186. +   if (info->interactive)
  9187. +     {
  9188. +       char *bufend = (char *)buffer + length;
  9189. +       /* Write by lines, more pleasant for user */
  9190. +       cnt = 0;
  9191. +       while (length)
  9192. +     {
  9193. +       char *end = buffer;
  9194. +       long nb;
  9195. +       unsigned len;
  9196. +       while (end < bufend && *end != '\n') end++;
  9197. +       if (end == bufend) len = end - (char *)buffer;
  9198. +       else len = end + 1 - (char *)buffer;
  9199. +       if ((nb = Write(fh, buffer, len)) == -1) ERROR;
  9200. +       cnt += nb;
  9201. +       if (nb != len) break;
  9202. +       buffer = end + 1;
  9203. +       length -= nb;
  9204. +       /* Interrupt write ? */
  9205. +       if (_handle_signals(_check_signals(0))) break;
  9206. +     }
  9207. +     }
  9208. +   else if ((cnt = Write(fh, buffer, length)) == -1) ERROR;
  9209. +   return cnt;
  9210. + }
  9211. + static int __regargs file_lseek(void *userinfo, long rpos, int mode)
  9212. + {
  9213. +   struct amigainfo *info = userinfo;
  9214. +   BPTR fh = info->fh;
  9215. +   LONG pos, err;
  9216. +   if (info->deleted) return 0;
  9217. +   pos = Seek(fh, rpos, mode - 1);
  9218. +   err = IoErr();
  9219. +   if (pos == -1 || err)
  9220. +     {
  9221. +       errno = convert_oserr(err);
  9222. +       return -1;
  9223. +     }
  9224. +   pos = Seek(fh, 0, OFFSET_CURRENT);
  9225. +   if (pos == -1 || err)
  9226. +     {
  9227. +       errno = convert_oserr(err);
  9228. +       return -1;
  9229. +     }
  9230. +   return pos;
  9231. + }
  9232. + static int __regargs file_close(void *userinfo, int internal)
  9233. + {
  9234. +   struct amigainfo *info = userinfo;
  9235. +   BPTR fh = info->fh;
  9236. +   long protection = info->protection;
  9237. +   char name[256];
  9238. +   int ok, deleted;
  9239. +   if (info->lock) UnLock(info->lock);
  9240. +   deleted = info->deleted;
  9241. +   free(info);
  9242. +   if (deleted) return 0;
  9243. +   ok = NameFromFH(fh, name, 256);
  9244. +   if (internal || Close(fh))
  9245. +     if (!ok || protection == -1 || SetProtection(name, protection)) return 0;
  9246. +   ERROR;
  9247. + }
  9248. + static int isfifo(BPTR fh)
  9249. + /* Requires: IsInteractive(fh) */
  9250. + /* Try & find out if fh is a fifo: file */
  9251. + {
  9252. +     WaitForChar(fh, 0);
  9253. +     return IoErr() == ERROR_ACTION_NOT_KNOWN;
  9254. + }
  9255. + static int GetWinBounds (BPTR fh, long *width, long *height)
  9256. + {
  9257. +   char buffer[16];
  9258. +   int ok = 0;
  9259. +   if (!isfifo(fh) && SetMode (fh, 1))
  9260. +     {
  9261. +       if ((Write (fh, "\x9b" "0 q", 4) == 4) &&
  9262. +       WaitForChar (fh, 10000L) &&
  9263. +       (Read (fh, buffer, sizeof (buffer)) > 9) &&
  9264. +       (buffer[0] == '\x9b'))
  9265. +     {
  9266. +       int y = StrToLong (buffer+5, height);
  9267. +       int x = StrToLong (buffer+5+y+1, width);
  9268. +       if ((x != -1) && (y != -1)) ok = 1;
  9269. +     }
  9270. +       SetMode (fh, 0);
  9271. +     }
  9272. +   return ok;
  9273. + }
  9274. + int _do_truncate(BPTR fh, off_t length)
  9275. + {
  9276. +   int err, ret = -1;
  9277. +   long oldsize, oldpos;
  9278. +   oldpos = Seek(fh, 0, OFFSET_END);
  9279. +   oldsize = Seek(fh, 0, OFFSET_END);
  9280. +   if (!(err = IoErr()) &&
  9281. +       SetFileSize(fh, length, OFFSET_BEGINNING) == length)
  9282. +     {
  9283. +       if (oldsize < length)
  9284. +     {
  9285. +       /* Zero extra bytes */
  9286. +       off_t bufsize = length - oldsize, left = bufsize;
  9287. +       char *buf;
  9288. +       char reserve[512];
  9289. +       if (!(buf = AllocMem(bufsize, MEMF_CLEAR)))
  9290. +         {
  9291. +           bufsize = AvailMem(MEMF_LARGEST) / 2;
  9292. +           if (bufsize < 512 || !(buf = AllocMem(bufsize, MEMF_CLEAR)))
  9293. +         {
  9294. +           bufsize = 512;
  9295. +           buf = reserve;
  9296. +           memset(reserve, 0, 512);
  9297. +         }
  9298. +         }
  9299. +       while (left > 0)
  9300. +         {
  9301. +           long count = left > bufsize ? bufsize : left;
  9302. +           chkabort();
  9303. +           if (Write(fh, buf, count) != count)
  9304. +         {
  9305. +           err = IoErr();
  9306. +           break;
  9307. +         }
  9308. +           left -= count;
  9309. +         }
  9310. +       if (buf != reserve) FreeMem(buf, bufsize);
  9311. +     }
  9312. +       if (!err) ret = 0;
  9313. +     }
  9314. +   if (oldpos < length) Seek(fh, oldpos, OFFSET_BEGINNING);
  9315. +   if (ret) errno = convert_oserr(err);
  9316. +   return ret;
  9317. + }
  9318. + static int __regargs file_ioctl(void *userinfo, int request, void *data)
  9319. + {
  9320. +   struct amigainfo *info = userinfo;
  9321. +   BPTR fh = info->fh;
  9322. +   if (!info->deleted)
  9323. +     switch (request)
  9324. +       {
  9325. +       case TIOCGWINSZ: {
  9326. +     struct winsize *ws = data;
  9327. +     long col, row;
  9328. +     if (info->interactive && GetWinBounds(fh, &col, &row))
  9329. +       {
  9330. +         ws->ws_col = col; ws->ws_row = row;
  9331. +         return 0;
  9332. +       }
  9333. +     errno = ENOTTY;
  9334. +     return -1;
  9335. +       }
  9336. +       case _AMIGA_INTERACTIVE: {
  9337. +     int *inter = data;
  9338. +     *inter = IsInteractive(fh);
  9339. +     return 0;
  9340. +       }
  9341. +       case _AMIGA_GET_FH: {
  9342. +     BPTR *gotfh = data;
  9343. +     *gotfh = fh;
  9344. +     return 0;
  9345. +       }
  9346. +       case _AMIGA_FREE_FH: return 0;
  9347. +       case _AMIGA_TRUNCATE: {
  9348. +     off_t length = *(off_t *)data;
  9349. +     return _do_truncate(fh, length);
  9350. +       }
  9351. +       case _AMIGA_SETPROTECTION:
  9352. +     info->protection = *(long *)data;
  9353. +     return 0;
  9354. +       case _AMIGA_DELETE_IF_ME: {
  9355. +     BPTR nlock = *(BPTR *)data;
  9356. +     if (!info->lock) info->lock = DupLockFromFH(info->fh);
  9357. +     if (info->lock && SameLock(nlock, info->lock) == LOCK_SAME)
  9358. +       {
  9359. +         char name[256];
  9360. +         if (NameFromFH(fh, name, 256))
  9361. +           {
  9362. +         UnLock(nlock);
  9363. +         UnLock(info->lock);
  9364. +         Close(fh);
  9365. +         SetProtection(name, 0);
  9366. +         info->deleted = TRUE;
  9367. +         info->lock = info->fh = 0;
  9368. +         if (DeleteFile(name)) return 0;
  9369. +           }
  9370. +       }
  9371. +     ERROR;
  9372. +       }
  9373. +       }
  9374. +   errno = EINVAL;
  9375. +   return -1;
  9376. + }
  9377. + int _alloc_amigafd(BPTR fh, long protection, long flags)
  9378. + {
  9379. +   struct amigainfo *new = (struct amigainfo *)malloc(sizeof(struct amigainfo));
  9380. +   int fd;
  9381. +   if (!new) { errno = ENOMEM; return -1; }
  9382. +   new->fh = fh;
  9383. +   new->lock = NULL;
  9384. +   new->protection = protection;
  9385. +   new->deleted = FALSE;
  9386. +   new->interactive = IsInteractive(fh);
  9387. +   fd = _alloc_fd(new, flags,
  9388. +          file_select_start, file_select_poll, file_read, file_write,
  9389. +          file_lseek, file_close, file_ioctl);
  9390. +   if (fd < 0) free(new);
  9391. +   return fd;
  9392. + }
  9393. + void _init_unixio(BPTR in, int close_in, BPTR out, int close_out,
  9394. +           BPTR error, int close_error)
  9395. + {
  9396. +   if (_alloc_amigafd(in, -1, FI_READ | (close_in ? 0 : O_NO_CLOSE)) == 0 &&
  9397. +       _alloc_amigafd(out, -1, FI_WRITE | (close_out ? 0 : O_NO_CLOSE)) == 1 &&
  9398. +       _alloc_amigafd(error, -1, FI_WRITE | (close_error ? 0 : O_NO_CLOSE)) == 2)
  9399. +       return;
  9400. +   _fail("Failed to initialise I/O");
  9401. + }
  9402. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/amigados.h emacs-18.59/amiga/unix/src/amigados.h
  9403. *** /src/baseline/emacs-18.59/amiga/unix/src/amigados.h    Thu Jan  1 00:00:00 1970
  9404. --- emacs-18.59/amiga/unix/src/amigados.h    Sun Jul 19 17:47:02 1992
  9405. ***************
  9406. *** 0 ****
  9407. --- 1,10 ----
  9408. + #ifndef AMIGADOS_H
  9409. + #define AMIGADOS_H
  9410. + int _alloc_amigafd(BPTR fh, long protection, long flags);
  9411. + void _init_unixio(BPTR in, int close_in, BPTR out, int close_out,
  9412. +           BPTR error, int close_error);
  9413. + int _do_truncate(BPTR fh, off_t length);
  9414. + #endif
  9415. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/amigatime.c emacs-18.59/amiga/unix/src/amigatime.c
  9416. *** /src/baseline/emacs-18.59/amiga/unix/src/amigatime.c    Thu Jan  1 00:00:00 1970
  9417. --- emacs-18.59/amiga/unix/src/amigatime.c    Tue Aug 25 22:08:14 1992
  9418. ***************
  9419. *** 0 ****
  9420. --- 1,55 ----
  9421. + #include "amiga.h"
  9422. + #include "timeconvert.h"
  9423. + #include <sys/time.h>
  9424. + #include <sys/timeb.h>
  9425. + #include <string.h>
  9426. + extern char *tzname[2];
  9427. + extern int daylight;
  9428. + int gettimeofday(struct timeval *tp, struct timezone *tzp)
  9429. + {
  9430. +   struct timeval now;
  9431. +   chkabort();
  9432. +   _gettime(&now);
  9433. +   if (tp) *tp = now;
  9434. +   if (tzp)
  9435. +     {
  9436. +       int dst;
  9437. +       struct tm *local;
  9438. +       local = localtime(&now.tv_secs);
  9439. +       
  9440. +       tzp->tz_minuteswest = -local->tm_gmtoff / 60;
  9441. +       /* Guess a value for tz_dsttime, based on tzname[1] */
  9442. +       /* These guesses are not very good. */
  9443. +       dst = DST_NONE;
  9444. +       if (!strcmp(tzname[1], "MET DST")) dst = DST_MET;
  9445. +       else if (!strcmp(tzname[1], "WET DST")) dst = DST_WET;
  9446. +       else if (!strcmp(tzname[1], "EET DST")) dst = DST_EET;
  9447. +       else if (!strcmp(tzname[1], "EDT")) dst = DST_USA;
  9448. +       else if (!strcmp(tzname[1], "CDT")) dst = DST_USA;
  9449. +       else if (!strcmp(tzname[1], "MDT")) dst = DST_USA;
  9450. +       else if (!strcmp(tzname[1], "PDT")) dst = DST_USA;
  9451. +       else if (!strcmp(tzname[1], "AKDT")) dst = DST_USA;
  9452. +       tzp->tz_dsttime = dst;
  9453. +     }
  9454. +   return 0;
  9455. + }
  9456. + int ftime(struct timeb *ft)
  9457. + {
  9458. +   struct timeval now;
  9459. +   struct timezone zone;
  9460. +   gettimeofday(&now, &zone);
  9461. +   ft->time = now.tv_sec;
  9462. +   ft->millitm = now.tv_usec;
  9463. +   ft->timezone = zone.tz_minuteswest;
  9464. +   ft->dstflag = daylight;
  9465. +   return 0;
  9466. + }
  9467. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/bcmp.c emacs-18.59/amiga/unix/src/bcmp.c
  9468. *** /src/baseline/emacs-18.59/amiga/unix/src/bcmp.c    Thu Jan  1 00:00:00 1970
  9469. --- emacs-18.59/amiga/unix/src/bcmp.c    Wed Dec  2 19:59:32 1992
  9470. ***************
  9471. *** 0 ****
  9472. --- 1,9 ----
  9473. + #include "amiga.h"
  9474. + #include <string.h>
  9475. + #undef bcmp
  9476. + int bcmp(char *b1, char *b2, int length)
  9477. + {
  9478. +   return length == 0 ? 0 : memcmp(b2, b1, length);
  9479. + }
  9480. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/bcopy.c emacs-18.59/amiga/unix/src/bcopy.c
  9481. *** /src/baseline/emacs-18.59/amiga/unix/src/bcopy.c    Thu Jan  1 00:00:00 1970
  9482. --- emacs-18.59/amiga/unix/src/bcopy.c    Wed Dec  2 19:59:46 1992
  9483. ***************
  9484. *** 0 ****
  9485. --- 1,10 ----
  9486. + #include "amiga.h"
  9487. + #include <string.h>
  9488. + #undef bcopy
  9489. + void bcopy(char *b1, char *b2, int length)
  9490. + {
  9491. +   /* Unoptimised version */
  9492. +   memmove(b2, b1, length);
  9493. + }
  9494. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/bzero.c emacs-18.59/amiga/unix/src/bzero.c
  9495. *** /src/baseline/emacs-18.59/amiga/unix/src/bzero.c    Thu Jan  1 00:00:00 1970
  9496. --- emacs-18.59/amiga/unix/src/bzero.c    Wed Dec  2 19:59:04 1992
  9497. ***************
  9498. *** 0 ****
  9499. --- 1,9 ----
  9500. + #include "amiga.h"
  9501. + #include <string.h>
  9502. + #undef bzero
  9503. + void bzero(char *b, int length)
  9504. + {
  9505. +   memset(b, 0, length);
  9506. + }
  9507. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/chmod.c emacs-18.59/amiga/unix/src/chmod.c
  9508. *** /src/baseline/emacs-18.59/amiga/unix/src/chmod.c    Thu Jan  1 00:00:00 1970
  9509. --- emacs-18.59/amiga/unix/src/chmod.c    Wed Dec  2 19:52:06 1992
  9510. ***************
  9511. *** 0 ****
  9512. --- 1,8 ----
  9513. + #include "amiga.h"
  9514. + int chmod(const char *name, int mode)
  9515. + {
  9516. +   chkabort();
  9517. +   if (SetProtection(name, _make_protection(mode))) return 0;
  9518. +   ERROR;
  9519. + }
  9520. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/chown.c emacs-18.59/amiga/unix/src/chown.c
  9521. *** /src/baseline/emacs-18.59/amiga/unix/src/chown.c    Thu Jan  1 00:00:00 1970
  9522. --- emacs-18.59/amiga/unix/src/chown.c    Sun Jul 19 17:47:02 1992
  9523. ***************
  9524. *** 0 ****
  9525. --- 1,4 ----
  9526. + #include "amiga.h"
  9527. + int chown(char *path, int owner, int group) { return 0; }
  9528. + int fchown(int fd, int owner, int group) { return 0; }
  9529. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/close.c emacs-18.59/amiga/unix/src/close.c
  9530. *** /src/baseline/emacs-18.59/amiga/unix/src/close.c    Thu Jan  1 00:00:00 1970
  9531. --- emacs-18.59/amiga/unix/src/close.c    Fri Dec  4 22:17:50 1992
  9532. ***************
  9533. *** 0 ****
  9534. --- 1,26 ----
  9535. + #include "amiga.h"
  9536. + #include "files.h"
  9537. + #include <fcntl.h>
  9538. + #undef close
  9539. + int __close(int fd)
  9540. + {
  9541. +   struct fileinfo *fi;
  9542. +   chkabort();
  9543. +   if (fi = _find_fd(fd))
  9544. +     {
  9545. +       int err = fi->close(fi->userinfo, fi->flags & O_NO_CLOSE);
  9546. +       _free_fd(fd);
  9547. +       return err;
  9548. +     }
  9549. +   return -1;
  9550. + }
  9551. + int close(int fd)
  9552. + {
  9553. +   return __close(fd);
  9554. + }
  9555. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/creat.c emacs-18.59/amiga/unix/src/creat.c
  9556. *** /src/baseline/emacs-18.59/amiga/unix/src/creat.c    Thu Jan  1 00:00:00 1970
  9557. --- emacs-18.59/amiga/unix/src/creat.c    Fri Dec  4 22:17:08 1992
  9558. ***************
  9559. *** 0 ****
  9560. --- 1,17 ----
  9561. + #include "amiga.h"
  9562. + #include "files.h"
  9563. + #include <fcntl.h>
  9564. + #undef creat
  9565. + int __creat(const char *file, int prot)
  9566. + {
  9567. +   chkabort();
  9568. +   return open(file, O_WRONLY | O_CREAT | O_TRUNC, prot);
  9569. + }
  9570. + int creat(const char *file, int prot)
  9571. + {
  9572. +   return __creat(file, prot);
  9573. + }
  9574. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/ctime.c emacs-18.59/amiga/unix/src/ctime.c
  9575. *** /src/baseline/emacs-18.59/amiga/unix/src/ctime.c    Thu Jan  1 00:00:00 1970
  9576. --- emacs-18.59/amiga/unix/src/ctime.c    Sat Dec  5 11:00:58 1992
  9577. ***************
  9578. *** 0 ****
  9579. --- 1,1381 ----
  9580. + /*
  9581. +  * Copyright (c) 1987, 1989 Regents of the University of California.
  9582. +  * All rights reserved.
  9583. +  *
  9584. +  * This code is derived from software contributed to Berkeley by
  9585. +  * Arthur David Olson of the National Cancer Institute.
  9586. +  *
  9587. +  * Redistribution and use in source and binary forms, with or without
  9588. +  * modification, are permitted provided that the following conditions
  9589. +  * are met:
  9590. +  * 1. Redistributions of source code must retain the above copyright
  9591. +  *    notice, this list of conditions and the following disclaimer.
  9592. +  * 2. Redistributions in binary form must reproduce the above copyright
  9593. +  *    notice, this list of conditions and the following disclaimer in the
  9594. +  *    documentation and/or other materials provided with the distribution.
  9595. +  * 3. All advertising materials mentioning features or use of this software
  9596. +  *    must display the following acknowledgement:
  9597. +  *    This product includes software developed by the University of
  9598. +  *    California, Berkeley and its contributors.
  9599. +  * 4. Neither the name of the University nor the names of its contributors
  9600. +  *    may be used to endorse or promote products derived from this software
  9601. +  *    without specific prior written permission.
  9602. +  *
  9603. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  9604. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  9605. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  9606. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  9607. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  9608. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  9609. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  9610. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  9611. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  9612. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  9613. +  * SUCH DAMAGE.
  9614. +  */
  9615. + #if defined(LIBC_SCCS) && !defined(lint)
  9616. + static char sccsid[] = "@(#)ctime.c    5.26 (Berkeley) 2/23/91";
  9617. + #endif /* LIBC_SCCS and not lint */
  9618. + /*
  9619. + ** Leap second handling from Bradley White (bww@k.gp.cs.cmu.edu).
  9620. + ** POSIX-style TZ environment variable handling from Guy Harris
  9621. + ** (guy@auspex.com).
  9622. + */
  9623. + /*LINTLIBRARY*/
  9624. + #include <sys/param.h>
  9625. + #include <fcntl.h>
  9626. + #include <time.h>
  9627. + #include <tzfile.h>
  9628. + #include <string.h>
  9629. + #include <ctype.h>
  9630. + #include <stdio.h>
  9631. + #include <unistd.h>
  9632. + #ifdef __STDC__
  9633. + #include <stdlib.h>
  9634. + #define P(s)        s
  9635. + #define alloc_size_t    size_t
  9636. + #define qsort_size_t    size_t
  9637. + #define fread_size_t    size_t
  9638. + #define fwrite_size_t    size_t
  9639. + #else /* !defined __STDC__ */
  9640. + #define P(s)        ()
  9641. + typedef char *        genericptr_t;
  9642. + typedef unsigned    alloc_size_t;
  9643. + typedef int        qsort_size_t;
  9644. + typedef int        fread_size_t;
  9645. + typedef int        fwrite_size_t;
  9646. + extern char *    calloc();
  9647. + extern char *    malloc();
  9648. + extern char *    realloc();
  9649. + extern char *    getenv();
  9650. + #endif /* !defined __STDC__ */
  9651. + extern time_t    time();
  9652. + #define ACCESS_MODE    O_RDONLY
  9653. + #define OPEN_MODE    O_RDONLY
  9654. + #ifndef WILDABBR
  9655. + /*
  9656. + ** Someone might make incorrect use of a time zone abbreviation:
  9657. + **    1.    They might reference tzname[0] before calling tzset (explicitly
  9658. + **         or implicitly).
  9659. + **    2.    They might reference tzname[1] before calling tzset (explicitly
  9660. + **         or implicitly).
  9661. + **    3.    They might reference tzname[1] after setting to a time zone
  9662. + **        in which Daylight Saving Time is never observed.
  9663. + **    4.    They might reference tzname[0] after setting to a time zone
  9664. + **        in which Standard Time is never observed.
  9665. + **    5.    They might reference tm.TM_ZONE after calling offtime.
  9666. + ** What's best to do in the above cases is open to debate;
  9667. + ** for now, we just set things up so that in any of the five cases
  9668. + ** WILDABBR is used.  Another possibility:  initialize tzname[0] to the
  9669. + ** string "tzname[0] used before set", and similarly for the other cases.
  9670. + ** And another:  initialize tzname[0] to "ERA", with an explanation in the
  9671. + ** manual page of what this "time zone abbreviation" means (doing this so
  9672. + ** that tzname[0] has the "normal" length of three characters).
  9673. + */
  9674. + #define WILDABBR    "   "
  9675. + #endif /* !defined WILDABBR */
  9676. + #ifndef TRUE
  9677. + #define TRUE        1
  9678. + #define FALSE        0
  9679. + #endif /* !defined TRUE */
  9680. + static const char GMT[] = "GMT";
  9681. + struct ttinfo {                /* time type information */
  9682. +     long        tt_gmtoff;    /* GMT offset in seconds */
  9683. +     int        tt_isdst;    /* used to set tm_isdst */
  9684. +     int        tt_abbrind;    /* abbreviation list index */
  9685. +     int        tt_ttisstd;    /* TRUE if transition is std time */
  9686. + };
  9687. + struct lsinfo {                /* leap second information */
  9688. +     time_t        ls_trans;    /* transition time */
  9689. +     long        ls_corr;    /* correction to apply */
  9690. + };
  9691. + struct state {
  9692. +     int        leapcnt;
  9693. +     int        timecnt;
  9694. +     int        typecnt;
  9695. +     int        charcnt;
  9696. +     time_t        ats[TZ_MAX_TIMES];
  9697. +     unsigned char    types[TZ_MAX_TIMES];
  9698. +     struct ttinfo    ttis[TZ_MAX_TYPES];
  9699. +     char        chars[(TZ_MAX_CHARS + 1 > sizeof GMT) ?
  9700. +                 TZ_MAX_CHARS + 1 : sizeof GMT];
  9701. +     struct lsinfo    lsis[TZ_MAX_LEAPS];
  9702. + };
  9703. + struct rule {
  9704. +     int        r_type;        /* type of rule--see below */
  9705. +     int        r_day;        /* day number of rule */
  9706. +     int        r_week;        /* week number of rule */
  9707. +     int        r_mon;        /* month number of rule */
  9708. +     long        r_time;        /* transition time of rule */
  9709. + };
  9710. + #define    JULIAN_DAY        0    /* Jn - Julian day */
  9711. + #define    DAY_OF_YEAR        1    /* n - day of year */
  9712. + #define    MONTH_NTH_DAY_OF_WEEK    2    /* Mm.n.d - month, week, day of week */
  9713. + /*
  9714. + ** Prototypes for static functions.
  9715. + */
  9716. + static long        detzcode P((const char * codep));
  9717. + static const char *    getzname P((const char * strp));
  9718. + static const char *    getnum P((const char * strp, int * nump, int min,
  9719. +                 int max));
  9720. + static const char *    getsecs P((const char * strp, long * secsp));
  9721. + static const char *    getoffset P((const char * strp, long * offsetp));
  9722. + static const char *    getrule P((const char * strp, struct rule * rulep));
  9723. + static void        gmtload P((struct state * sp));
  9724. + static void        gmtsub P((const time_t * timep, long offset,
  9725. +                 struct tm * tmp));
  9726. + static void        localsub P((const time_t * timep, long offset,
  9727. +                 struct tm * tmp));
  9728. + static void        normalize P((int * tensptr, int * unitsptr, int base));
  9729. + static void        settzname P((void));
  9730. + static time_t        time1 P((struct tm * tmp, void (* funcp)(),
  9731. +                 long offset));
  9732. + static time_t        time2 P((struct tm *tmp, void (* funcp)(),
  9733. +                 long offset, int * okayp));
  9734. + static void        timesub P((const time_t * timep, long offset,
  9735. +                 const struct state * sp, struct tm * tmp));
  9736. + static int        tmcomp P((const struct tm * atmp,
  9737. +                 const struct tm * btmp));
  9738. + static time_t        transtime P((time_t janfirst, int year,
  9739. +                 const struct rule * rulep, long offset));
  9740. + static int        tzload P((const char * name, struct state * sp));
  9741. + static int        tzparse P((const char * name, struct state * sp,
  9742. +                 int lastditch));
  9743. + #ifdef ALL_STATE
  9744. + static struct state *    lclptr;
  9745. + static struct state *    gmtptr;
  9746. + #endif /* defined ALL_STATE */
  9747. + #ifndef ALL_STATE
  9748. + static struct state    lclmem;
  9749. + static struct state    gmtmem;
  9750. + #define lclptr        (&lclmem)
  9751. + #define gmtptr        (&gmtmem)
  9752. + #endif /* State Farm */
  9753. + static int        lcl_is_set;
  9754. + static int        gmt_is_set;
  9755. + char *            tzname[2] = {
  9756. +     WILDABBR,
  9757. +     WILDABBR
  9758. + };
  9759. + time_t            timezone = 0;
  9760. + int            daylight = 0;
  9761. + #ifdef ALTZONE
  9762. + time_t            altzone = 0;
  9763. + #endif /* defined ALTZONE */
  9764. + static long
  9765. + detzcode(codep)
  9766. + const char * const    codep;
  9767. + {
  9768. +     register long    result;
  9769. +     register int    i;
  9770. +     result = 0;
  9771. +     for (i = 0; i < 4; ++i)
  9772. +         result = (result << 8) | (codep[i] & 0xff);
  9773. +     return result;
  9774. + }
  9775. + static void
  9776. + settzname()
  9777. + {
  9778. +     register const struct state * const    sp = lclptr;
  9779. +     register int                i;
  9780. +     tzname[0] = WILDABBR;
  9781. +     tzname[1] = WILDABBR;
  9782. +     daylight = 0;
  9783. +     timezone = 0;
  9784. + #ifdef ALTZONE
  9785. +     altzone = 0;
  9786. + #endif /* defined ALTZONE */
  9787. + #ifdef ALL_STATE
  9788. +     if (sp == NULL) {
  9789. +         tzname[0] = tzname[1] = GMT;
  9790. +         return;
  9791. +     }
  9792. + #endif /* defined ALL_STATE */
  9793. +     for (i = 0; i < sp->typecnt; ++i) {
  9794. +         register const struct ttinfo * const    ttisp = &sp->ttis[i];
  9795. +         tzname[ttisp->tt_isdst] =
  9796. +             (char *) &sp->chars[ttisp->tt_abbrind];
  9797. +         if (ttisp->tt_isdst)
  9798. +             daylight = 1;
  9799. +         if (i == 0 || !ttisp->tt_isdst)
  9800. +             timezone = -(ttisp->tt_gmtoff);
  9801. + #ifdef ALTZONE
  9802. +         if (i == 0 || ttisp->tt_isdst)
  9803. +             altzone = -(ttisp->tt_gmtoff);
  9804. + #endif /* defined ALTZONE */
  9805. +     }
  9806. +     /*
  9807. +     ** And to get the latest zone names into tzname. . .
  9808. +     */
  9809. +     for (i = 0; i < sp->timecnt; ++i) {
  9810. +         register const struct ttinfo * const    ttisp =
  9811. +                             &sp->ttis[sp->types[i]];
  9812. +         tzname[ttisp->tt_isdst] =
  9813. +             (char *) &sp->chars[ttisp->tt_abbrind];
  9814. +     }
  9815. + }
  9816. + static int
  9817. + tzload(name, sp)
  9818. + register const char *        name;
  9819. + register struct state * const    sp;
  9820. + {
  9821. +     register const char *    p;
  9822. +     register int        i;
  9823. +     register int        fid;
  9824. +     if (name == NULL && (name = TZDEFAULT) == NULL)
  9825. +         return -1;
  9826. +     {
  9827. +         char        fullname[FILENAME_MAX + 1];
  9828. +         if (name[0] == ':')
  9829. +             ++name;
  9830. +         if (!strchr(name, ':')) {
  9831. +             if ((p = TZDIR) == NULL)
  9832. +                 return -1;
  9833. +             if ((strlen(p) + strlen(name) + 1) >= sizeof fullname)
  9834. +                 return -1;
  9835. +             (void) strcpy(fullname, p);
  9836. +             (void) strcat(fullname, "/");
  9837. +             (void) strcat(fullname, name);
  9838. +             name = fullname;
  9839. +         }
  9840. +         if ((fid = open(name, OPEN_MODE)) == -1)
  9841. +             return -1;
  9842. +     }
  9843. +     {
  9844. +         register const struct tzhead *    tzhp;
  9845. +         char                buf[sizeof *sp + sizeof *tzhp];
  9846. +         int                ttisstdcnt;
  9847. +         i = read(fid, buf, sizeof buf);
  9848. +         if (close(fid) != 0 || i < sizeof *tzhp)
  9849. +             return -1;
  9850. +         tzhp = (struct tzhead *) buf;
  9851. +         ttisstdcnt = (int) detzcode(tzhp->tzh_ttisstdcnt);
  9852. +         sp->leapcnt = (int) detzcode(tzhp->tzh_leapcnt);
  9853. +         sp->timecnt = (int) detzcode(tzhp->tzh_timecnt);
  9854. +         sp->typecnt = (int) detzcode(tzhp->tzh_typecnt);
  9855. +         sp->charcnt = (int) detzcode(tzhp->tzh_charcnt);
  9856. +         if (sp->leapcnt < 0 || sp->leapcnt > TZ_MAX_LEAPS ||
  9857. +             sp->typecnt <= 0 || sp->typecnt > TZ_MAX_TYPES ||
  9858. +             sp->timecnt < 0 || sp->timecnt > TZ_MAX_TIMES ||
  9859. +             sp->charcnt < 0 || sp->charcnt > TZ_MAX_CHARS ||
  9860. +             (ttisstdcnt != sp->typecnt && ttisstdcnt != 0))
  9861. +                 return -1;
  9862. +         if (i < sizeof *tzhp +
  9863. +             sp->timecnt * (4 + sizeof (char)) +
  9864. +             sp->typecnt * (4 + 2 * sizeof (char)) +
  9865. +             sp->charcnt * sizeof (char) +
  9866. +             sp->leapcnt * 2 * 4 +
  9867. +             ttisstdcnt * sizeof (char))
  9868. +                 return -1;
  9869. +         p = buf + sizeof *tzhp;
  9870. +         for (i = 0; i < sp->timecnt; ++i) {
  9871. +             sp->ats[i] = detzcode(p);
  9872. +             p += 4;
  9873. +         }
  9874. +         for (i = 0; i < sp->timecnt; ++i) {
  9875. +             sp->types[i] = (unsigned char) *p++;
  9876. +             if (sp->types[i] >= sp->typecnt)
  9877. +                 return -1;
  9878. +         }
  9879. +         for (i = 0; i < sp->typecnt; ++i) {
  9880. +             register struct ttinfo *    ttisp;
  9881. +             ttisp = &sp->ttis[i];
  9882. +             ttisp->tt_gmtoff = detzcode(p);
  9883. +             p += 4;
  9884. +             ttisp->tt_isdst = (unsigned char) *p++;
  9885. +             if (ttisp->tt_isdst != 0 && ttisp->tt_isdst != 1)
  9886. +                 return -1;
  9887. +             ttisp->tt_abbrind = (unsigned char) *p++;
  9888. +             if (ttisp->tt_abbrind < 0 ||
  9889. +                 ttisp->tt_abbrind > sp->charcnt)
  9890. +                     return -1;
  9891. +         }
  9892. +         for (i = 0; i < sp->charcnt; ++i)
  9893. +             sp->chars[i] = *p++;
  9894. +         sp->chars[i] = '\0';    /* ensure '\0' at end */
  9895. +         for (i = 0; i < sp->leapcnt; ++i) {
  9896. +             register struct lsinfo *    lsisp;
  9897. +             lsisp = &sp->lsis[i];
  9898. +             lsisp->ls_trans = detzcode(p);
  9899. +             p += 4;
  9900. +             lsisp->ls_corr = detzcode(p);
  9901. +             p += 4;
  9902. +         }
  9903. +         for (i = 0; i < sp->typecnt; ++i) {
  9904. +             register struct ttinfo *    ttisp;
  9905. +             ttisp = &sp->ttis[i];
  9906. +             if (ttisstdcnt == 0)
  9907. +                 ttisp->tt_ttisstd = FALSE;
  9908. +             else {
  9909. +                 ttisp->tt_ttisstd = *p++;
  9910. +                 if (ttisp->tt_ttisstd != TRUE &&
  9911. +                     ttisp->tt_ttisstd != FALSE)
  9912. +                         return -1;
  9913. +             }
  9914. +         }
  9915. +     }
  9916. +     return 0;
  9917. + }
  9918. + static const int    mon_lengths[2][MONSPERYEAR] = {
  9919. +     31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
  9920. +     31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
  9921. + };
  9922. + static const int    year_lengths[2] = {
  9923. +     DAYSPERNYEAR, DAYSPERLYEAR
  9924. + };
  9925. + /*
  9926. + ** Given a pointer into a time zone string, scan until a character that is not
  9927. + ** a valid character in a zone name is found.  Return a pointer to that
  9928. + ** character.
  9929. + */
  9930. + static const char *
  9931. + getzname(strp)
  9932. + register const char *    strp;
  9933. + {
  9934. +     register char    c;
  9935. +     while ((c = *strp) != '\0' && !isdigit(c) && c != ',' && c != '-' &&
  9936. +         c != '+')
  9937. +             ++strp;
  9938. +     return strp;
  9939. + }
  9940. + /*
  9941. + ** Given a pointer into a time zone string, extract a number from that string.
  9942. + ** Check that the number is within a specified range; if it is not, return
  9943. + ** NULL.
  9944. + ** Otherwise, return a pointer to the first character not part of the number.
  9945. + */
  9946. + static const char *
  9947. + getnum(strp, nump, min, max)
  9948. + register const char *    strp;
  9949. + int * const        nump;
  9950. + const int        min;
  9951. + const int        max;
  9952. + {
  9953. +     register char    c;
  9954. +     register int    num;
  9955. +     if (strp == NULL || !isdigit(*strp))
  9956. +         return NULL;
  9957. +     num = 0;
  9958. +     while ((c = *strp) != '\0' && isdigit(c)) {
  9959. +         num = num * 10 + (c - '0');
  9960. +         if (num > max)
  9961. +             return NULL;    /* illegal value */
  9962. +         ++strp;
  9963. +     }
  9964. +     if (num < min)
  9965. +         return NULL;        /* illegal value */
  9966. +     *nump = num;
  9967. +     return strp;
  9968. + }
  9969. + /*
  9970. + ** Given a pointer into a time zone string, extract a number of seconds,
  9971. + ** in hh[:mm[:ss]] form, from the string.
  9972. + ** If any error occurs, return NULL.
  9973. + ** Otherwise, return a pointer to the first character not part of the number
  9974. + ** of seconds.
  9975. + */
  9976. + static const char *
  9977. + getsecs(strp, secsp)
  9978. + register const char *    strp;
  9979. + long * const        secsp;
  9980. + {
  9981. +     int    num;
  9982. +     strp = getnum(strp, &num, 0, HOURSPERDAY);
  9983. +     if (strp == NULL)
  9984. +         return NULL;
  9985. +     *secsp = num * SECSPERHOUR;
  9986. +     if (*strp == ':') {
  9987. +         ++strp;
  9988. +         strp = getnum(strp, &num, 0, MINSPERHOUR - 1);
  9989. +         if (strp == NULL)
  9990. +             return NULL;
  9991. +         *secsp += num * SECSPERMIN;
  9992. +         if (*strp == ':') {
  9993. +             ++strp;
  9994. +             strp = getnum(strp, &num, 0, SECSPERMIN - 1);
  9995. +             if (strp == NULL)
  9996. +                 return NULL;
  9997. +             *secsp += num;
  9998. +         }
  9999. +     }
  10000. +     return strp;
  10001. + }
  10002. + /*
  10003. + ** Given a pointer into a time zone string, extract an offset, in
  10004. + ** [+-]hh[:mm[:ss]] form, from the string.
  10005. + ** If any error occurs, return NULL.
  10006. + ** Otherwise, return a pointer to the first character not part of the time.
  10007. + */
  10008. + static const char *
  10009. + getoffset(strp, offsetp)
  10010. + register const char *    strp;
  10011. + long * const        offsetp;
  10012. + {
  10013. +     register int    neg;
  10014. +     if (*strp == '-') {
  10015. +         neg = 1;
  10016. +         ++strp;
  10017. +     } else if (isdigit(*strp) || *strp++ == '+')
  10018. +         neg = 0;
  10019. +     else    return NULL;        /* illegal offset */
  10020. +     strp = getsecs(strp, offsetp);
  10021. +     if (strp == NULL)
  10022. +         return NULL;        /* illegal time */
  10023. +     if (neg)
  10024. +         *offsetp = -*offsetp;
  10025. +     return strp;
  10026. + }
  10027. + /*
  10028. + ** Given a pointer into a time zone string, extract a rule in the form
  10029. + ** date[/time].  See POSIX section 8 for the format of "date" and "time".
  10030. + ** If a valid rule is not found, return NULL.
  10031. + ** Otherwise, return a pointer to the first character not part of the rule.
  10032. + */
  10033. + static const char *
  10034. + getrule(strp, rulep)
  10035. + const char *            strp;
  10036. + register struct rule * const    rulep;
  10037. + {
  10038. +     if (*strp == 'J') {
  10039. +         /*
  10040. +         ** Julian day.
  10041. +         */
  10042. +         rulep->r_type = JULIAN_DAY;
  10043. +         ++strp;
  10044. +         strp = getnum(strp, &rulep->r_day, 1, DAYSPERNYEAR);
  10045. +     } else if (*strp == 'M') {
  10046. +         /*
  10047. +         ** Month, week, day.
  10048. +         */
  10049. +         rulep->r_type = MONTH_NTH_DAY_OF_WEEK;
  10050. +         ++strp;
  10051. +         strp = getnum(strp, &rulep->r_mon, 1, MONSPERYEAR);
  10052. +         if (strp == NULL)
  10053. +             return NULL;
  10054. +         if (*strp++ != '.')
  10055. +             return NULL;
  10056. +         strp = getnum(strp, &rulep->r_week, 1, 5);
  10057. +         if (strp == NULL)
  10058. +             return NULL;
  10059. +         if (*strp++ != '.')
  10060. +             return NULL;
  10061. +         strp = getnum(strp, &rulep->r_day, 0, DAYSPERWEEK - 1);
  10062. +     } else if (isdigit(*strp)) {
  10063. +         /*
  10064. +         ** Day of year.
  10065. +         */
  10066. +         rulep->r_type = DAY_OF_YEAR;
  10067. +         strp = getnum(strp, &rulep->r_day, 0, DAYSPERLYEAR - 1);
  10068. +     } else    return NULL;        /* invalid format */
  10069. +     if (strp == NULL)
  10070. +         return NULL;
  10071. +     if (*strp == '/') {
  10072. +         /*
  10073. +         ** Time specified.
  10074. +         */
  10075. +         ++strp;
  10076. +         strp = getsecs(strp, &rulep->r_time);
  10077. +     } else    rulep->r_time = 2 * SECSPERHOUR;    /* default = 2:00:00 */
  10078. +     return strp;
  10079. + }
  10080. + /*
  10081. + ** Given the Epoch-relative time of January 1, 00:00:00 GMT, in a year, the
  10082. + ** year, a rule, and the offset from GMT at the time that rule takes effect,
  10083. + ** calculate the Epoch-relative time that rule takes effect.
  10084. + */
  10085. + static time_t
  10086. + transtime(janfirst, year, rulep, offset)
  10087. + const time_t                janfirst;
  10088. + const int                year;
  10089. + register const struct rule * const    rulep;
  10090. + const long                offset;
  10091. + {
  10092. +     register int    leapyear;
  10093. +     register time_t    value;
  10094. +     register int    i;
  10095. +     int        d, m1, yy0, yy1, yy2, dow;
  10096. +     leapyear = isleap(year);
  10097. +     switch (rulep->r_type) {
  10098. +     case JULIAN_DAY:
  10099. +         /*
  10100. +         ** Jn - Julian day, 1 == January 1, 60 == March 1 even in leap
  10101. +         ** years.
  10102. +         ** In non-leap years, or if the day number is 59 or less, just
  10103. +         ** add SECSPERDAY times the day number-1 to the time of
  10104. +         ** January 1, midnight, to get the day.
  10105. +         */
  10106. +         value = janfirst + (rulep->r_day - 1) * SECSPERDAY;
  10107. +         if (leapyear && rulep->r_day >= 60)
  10108. +             value += SECSPERDAY;
  10109. +         break;
  10110. +     case DAY_OF_YEAR:
  10111. +         /*
  10112. +         ** n - day of year.
  10113. +         ** Just add SECSPERDAY times the day number to the time of
  10114. +         ** January 1, midnight, to get the day.
  10115. +         */
  10116. +         value = janfirst + rulep->r_day * SECSPERDAY;
  10117. +         break;
  10118. +     case MONTH_NTH_DAY_OF_WEEK:
  10119. +         /*
  10120. +         ** Mm.n.d - nth "dth day" of month m.
  10121. +         */
  10122. +         value = janfirst;
  10123. +         for (i = 0; i < rulep->r_mon - 1; ++i)
  10124. +             value += mon_lengths[leapyear][i] * SECSPERDAY;
  10125. +         /*
  10126. +         ** Use Zeller's Congruence to get day-of-week of first day of
  10127. +         ** month.
  10128. +         */
  10129. +         m1 = (rulep->r_mon + 9) % 12 + 1;
  10130. +         yy0 = (rulep->r_mon <= 2) ? (year - 1) : year;
  10131. +         yy1 = yy0 / 100;
  10132. +         yy2 = yy0 % 100;
  10133. +         dow = ((26 * m1 - 2) / 10 +
  10134. +             1 + yy2 + yy2 / 4 + yy1 / 4 - 2 * yy1) % 7;
  10135. +         if (dow < 0)
  10136. +             dow += DAYSPERWEEK;
  10137. +         /*
  10138. +         ** "dow" is the day-of-week of the first day of the month.  Get
  10139. +         ** the day-of-month (zero-origin) of the first "dow" day of the
  10140. +         ** month.
  10141. +         */
  10142. +         d = rulep->r_day - dow;
  10143. +         if (d < 0)
  10144. +             d += DAYSPERWEEK;
  10145. +         for (i = 1; i < rulep->r_week; ++i) {
  10146. +             if (d + DAYSPERWEEK >=
  10147. +                 mon_lengths[leapyear][rulep->r_mon - 1])
  10148. +                     break;
  10149. +             d += DAYSPERWEEK;
  10150. +         }
  10151. +         /*
  10152. +         ** "d" is the day-of-month (zero-origin) of the day we want.
  10153. +         */
  10154. +         value += d * SECSPERDAY;
  10155. +         break;
  10156. +     }
  10157. +     /*
  10158. +     ** "value" is the Epoch-relative time of 00:00:00 GMT on the day in
  10159. +     ** question.  To get the Epoch-relative time of the specified local
  10160. +     ** time on that day, add the transition time and the current offset
  10161. +     ** from GMT.
  10162. +     */
  10163. +     return value + rulep->r_time + offset;
  10164. + }
  10165. + /*
  10166. + ** Given a POSIX section 8-style TZ string, fill in the rule tables as
  10167. + ** appropriate.
  10168. + */
  10169. + static int
  10170. + tzparse(name, sp, lastditch)
  10171. + const char *            name;
  10172. + register struct state * const    sp;
  10173. + const int            lastditch;
  10174. + {
  10175. +     const char *            stdname;
  10176. +     const char *            dstname;
  10177. +     int                stdlen;
  10178. +     int                dstlen;
  10179. +     long                stdoffset;
  10180. +     long                dstoffset;
  10181. +     register time_t *        atp;
  10182. +     register unsigned char *    typep;
  10183. +     register char *            cp;
  10184. +     register int            load_result;
  10185. +     stdname = name;
  10186. +     if (lastditch) {
  10187. +         stdlen = strlen(name);    /* length of standard zone name */
  10188. +         name += stdlen;
  10189. +         if (stdlen >= sizeof sp->chars)
  10190. +             stdlen = (sizeof sp->chars) - 1;
  10191. +     } else {
  10192. +         name = getzname(name);
  10193. +         stdlen = name - stdname;
  10194. +         if (stdlen < 3)
  10195. +             return -1;
  10196. +     }
  10197. +     if (*name == '\0')
  10198. +         return -1;
  10199. +     else {
  10200. +         name = getoffset(name, &stdoffset);
  10201. +         if (name == NULL)
  10202. +             return -1;
  10203. +     }
  10204. +     load_result = tzload(TZDEFRULES, sp);
  10205. +     if (load_result != 0)
  10206. +         sp->leapcnt = 0;        /* so, we're off a little */
  10207. +     if (*name != '\0') {
  10208. +         dstname = name;
  10209. +         name = getzname(name);
  10210. +         dstlen = name - dstname;    /* length of DST zone name */
  10211. +         if (dstlen < 3)
  10212. +             return -1;
  10213. +         if (*name != '\0' && *name != ',' && *name != ';') {
  10214. +             name = getoffset(name, &dstoffset);
  10215. +             if (name == NULL)
  10216. +                 return -1;
  10217. +         } else    dstoffset = stdoffset - SECSPERHOUR;
  10218. +         if (*name == ',' || *name == ';') {
  10219. +             struct rule    start;
  10220. +             struct rule    end;
  10221. +             register int    year;
  10222. +             register time_t    janfirst;
  10223. +             time_t        starttime;
  10224. +             time_t        endtime;
  10225. +             ++name;
  10226. +             if ((name = getrule(name, &start)) == NULL)
  10227. +                 return -1;
  10228. +             if (*name++ != ',')
  10229. +                 return -1;
  10230. +             if ((name = getrule(name, &end)) == NULL)
  10231. +                 return -1;
  10232. +             if (*name != '\0')
  10233. +                 return -1;
  10234. +             sp->typecnt = 2;    /* standard time and DST */
  10235. +             /*
  10236. +             ** Two transitions per year, from EPOCH_YEAR to 2037.
  10237. +             */
  10238. +             sp->timecnt = 2 * (2037 - EPOCH_YEAR + 1);
  10239. +             if (sp->timecnt > TZ_MAX_TIMES)
  10240. +                 return -1;
  10241. +             sp->ttis[0].tt_gmtoff = -dstoffset;
  10242. +             sp->ttis[0].tt_isdst = 1;
  10243. +             sp->ttis[0].tt_abbrind = stdlen + 1;
  10244. +             sp->ttis[1].tt_gmtoff = -stdoffset;
  10245. +             sp->ttis[1].tt_isdst = 0;
  10246. +             sp->ttis[1].tt_abbrind = 0;
  10247. +             atp = sp->ats;
  10248. +             typep = sp->types;
  10249. +             janfirst = 0;
  10250. +             for (year = EPOCH_YEAR; year <= 2037; ++year) {
  10251. +                 starttime = transtime(janfirst, year, &start,
  10252. +                     stdoffset);
  10253. +                 endtime = transtime(janfirst, year, &end,
  10254. +                     dstoffset);
  10255. +                 if (starttime > endtime) {
  10256. +                     *atp++ = endtime;
  10257. +                     *typep++ = 1;    /* DST ends */
  10258. +                     *atp++ = starttime;
  10259. +                     *typep++ = 0;    /* DST begins */
  10260. +                 } else {
  10261. +                     *atp++ = starttime;
  10262. +                     *typep++ = 0;    /* DST begins */
  10263. +                     *atp++ = endtime;
  10264. +                     *typep++ = 1;    /* DST ends */
  10265. +                 }
  10266. +                 janfirst +=
  10267. +                     year_lengths[isleap(year)] * SECSPERDAY;
  10268. +             }
  10269. +         } else {
  10270. +             int        sawstd;
  10271. +             int        sawdst;
  10272. +             long        stdfix;
  10273. +             long        dstfix;
  10274. +             long        oldfix;
  10275. +             int        isdst;
  10276. +             register int    i;
  10277. +             if (*name != '\0')
  10278. +                 return -1;
  10279. +             if (load_result != 0)
  10280. +                 return -1;
  10281. +             /*
  10282. +             ** Compute the difference between the real and
  10283. +             ** prototype standard and summer time offsets
  10284. +             ** from GMT, and put the real standard and summer
  10285. +             ** time offsets into the rules in place of the
  10286. +             ** prototype offsets.
  10287. +             */
  10288. +             sawstd = FALSE;
  10289. +             sawdst = FALSE;
  10290. +             stdfix = 0;
  10291. +             dstfix = 0;
  10292. +             for (i = 0; i < sp->typecnt; ++i) {
  10293. +                 if (sp->ttis[i].tt_isdst) {
  10294. +                     oldfix = dstfix;
  10295. +                     dstfix =
  10296. +                         sp->ttis[i].tt_gmtoff + dstoffset;
  10297. +                     if (sawdst && (oldfix != dstfix))
  10298. +                         return -1;
  10299. +                     sp->ttis[i].tt_gmtoff = -dstoffset;
  10300. +                     sp->ttis[i].tt_abbrind = stdlen + 1;
  10301. +                     sawdst = TRUE;
  10302. +                 } else {
  10303. +                     oldfix = stdfix;
  10304. +                     stdfix =
  10305. +                         sp->ttis[i].tt_gmtoff + stdoffset;
  10306. +                     if (sawstd && (oldfix != stdfix))
  10307. +                         return -1;
  10308. +                     sp->ttis[i].tt_gmtoff = -stdoffset;
  10309. +                     sp->ttis[i].tt_abbrind = 0;
  10310. +                     sawstd = TRUE;
  10311. +                 }
  10312. +             }
  10313. +             /*
  10314. +             ** Make sure we have both standard and summer time.
  10315. +             */
  10316. +             if (!sawdst || !sawstd)
  10317. +                 return -1;
  10318. +             /*
  10319. +             ** Now correct the transition times by shifting
  10320. +             ** them by the difference between the real and
  10321. +             ** prototype offsets.  Note that this difference
  10322. +             ** can be different in standard and summer time;
  10323. +             ** the prototype probably has a 1-hour difference
  10324. +             ** between standard and summer time, but a different
  10325. +             ** difference can be specified in TZ.
  10326. +             */
  10327. +             isdst = FALSE;    /* we start in standard time */
  10328. +             for (i = 0; i < sp->timecnt; ++i) {
  10329. +                 register const struct ttinfo *    ttisp;
  10330. +                 /*
  10331. +                 ** If summer time is in effect, and the
  10332. +                 ** transition time was not specified as
  10333. +                 ** standard time, add the summer time
  10334. +                 ** offset to the transition time;
  10335. +                 ** otherwise, add the standard time offset
  10336. +                 ** to the transition time.
  10337. +                 */
  10338. +                 ttisp = &sp->ttis[sp->types[i]];
  10339. +                 sp->ats[i] +=
  10340. +                     (isdst && !ttisp->tt_ttisstd) ?
  10341. +                         dstfix : stdfix;
  10342. +                 isdst = ttisp->tt_isdst;
  10343. +             }
  10344. +         }
  10345. +     } else {
  10346. +         dstlen = 0;
  10347. +         sp->typecnt = 1;        /* only standard time */
  10348. +         sp->timecnt = 0;
  10349. +         sp->ttis[0].tt_gmtoff = -stdoffset;
  10350. +         sp->ttis[0].tt_isdst = 0;
  10351. +         sp->ttis[0].tt_abbrind = 0;
  10352. +     }
  10353. +     sp->charcnt = stdlen + 1;
  10354. +     if (dstlen != 0)
  10355. +         sp->charcnt += dstlen + 1;
  10356. +     if (sp->charcnt > sizeof sp->chars)
  10357. +         return -1;
  10358. +     cp = sp->chars;
  10359. +     (void) strncpy(cp, stdname, stdlen);
  10360. +     cp += stdlen;
  10361. +     *cp++ = '\0';
  10362. +     if (dstlen != 0) {
  10363. +         (void) strncpy(cp, dstname, dstlen);
  10364. +         *(cp + dstlen) = '\0';
  10365. +     }
  10366. +     return 0;
  10367. + }
  10368. + static void
  10369. + gmtload(sp)
  10370. + struct state * const    sp;
  10371. + {
  10372. +     if (tzload(GMT, sp) != 0)
  10373. +         (void) tzparse(GMT, sp, TRUE);
  10374. + }
  10375. + void
  10376. + tzset()
  10377. + {
  10378. +     register const char *    name;
  10379. +     void tzsetwall();
  10380. +     name = getenv("UNIXTZ");
  10381. +     if (name == NULL) {
  10382. +         tzsetwall();
  10383. +         return;
  10384. +     }
  10385. +     lcl_is_set = TRUE;
  10386. + #ifdef ALL_STATE
  10387. +     if (lclptr == NULL) {
  10388. +         lclptr = (struct state *) malloc(sizeof *lclptr);
  10389. +         if (lclptr == NULL) {
  10390. +             settzname();    /* all we can do */
  10391. +             return;
  10392. +         }
  10393. +     }
  10394. + #endif /* defined ALL_STATE */
  10395. +     if (*name == '\0') {
  10396. +         /*
  10397. +         ** User wants it fast rather than right.
  10398. +         */
  10399. +         lclptr->leapcnt = 0;        /* so, we're off a little */
  10400. +         lclptr->timecnt = 0;
  10401. +         lclptr->ttis[0].tt_gmtoff = 0;
  10402. +         lclptr->ttis[0].tt_abbrind = 0;
  10403. +         (void) strcpy(lclptr->chars, GMT);
  10404. +     } else if (tzload(name, lclptr) != 0)
  10405. +         if (name[0] == ':' || tzparse(name, lclptr, FALSE) != 0)
  10406. +             (void) gmtload(lclptr);
  10407. +     settzname();
  10408. + }
  10409. + void
  10410. + tzsetwall()
  10411. + {
  10412. +     lcl_is_set = TRUE;
  10413. + #ifdef ALL_STATE
  10414. +     if (lclptr == NULL) {
  10415. +         lclptr = (struct state *) malloc(sizeof *lclptr);
  10416. +         if (lclptr == NULL) {
  10417. +             settzname();    /* all we can do */
  10418. +             return;
  10419. +         }
  10420. +     }
  10421. + #endif /* defined ALL_STATE */
  10422. +     if (tzload((char *) NULL, lclptr) != 0)
  10423. +         gmtload(lclptr);
  10424. +     settzname();
  10425. + }
  10426. + /*
  10427. + ** The easy way to behave "as if no library function calls" localtime
  10428. + ** is to not call it--so we drop its guts into "localsub", which can be
  10429. + ** freely called.  (And no, the PANS doesn't require the above behavior--
  10430. + ** but it *is* desirable.)
  10431. + **
  10432. + ** The unused offset argument is for the benefit of mktime variants.
  10433. + */
  10434. + /*ARGSUSED*/
  10435. + static void
  10436. + localsub(timep, offset, tmp)
  10437. + const time_t * const    timep;
  10438. + const long        offset;
  10439. + struct tm * const    tmp;
  10440. + {
  10441. +     register struct state *    sp;
  10442. +     register const struct ttinfo *    ttisp;
  10443. +     register int            i;
  10444. +     const time_t            t = *timep;
  10445. +     if (!lcl_is_set)
  10446. +         tzset();
  10447. +     sp = lclptr;
  10448. + #ifdef ALL_STATE
  10449. +     if (sp == NULL) {
  10450. +         gmtsub(timep, offset, tmp);
  10451. +         return;
  10452. +     }
  10453. + #endif /* defined ALL_STATE */
  10454. +     if (sp->timecnt == 0 || t < sp->ats[0]) {
  10455. +         i = 0;
  10456. +         while (sp->ttis[i].tt_isdst)
  10457. +             if (++i >= sp->typecnt) {
  10458. +                 i = 0;
  10459. +                 break;
  10460. +             }
  10461. +     } else {
  10462. +         for (i = 1; i < sp->timecnt; ++i)
  10463. +             if (t < sp->ats[i])
  10464. +                 break;
  10465. +         i = sp->types[i - 1];
  10466. +     }
  10467. +     ttisp = &sp->ttis[i];
  10468. +     /*
  10469. +     ** To get (wrong) behavior that's compatible with System V Release 2.0
  10470. +     ** you'd replace the statement below with
  10471. +     **    t += ttisp->tt_gmtoff;
  10472. +     **    timesub(&t, 0L, sp, tmp);
  10473. +     */
  10474. +     timesub(&t, ttisp->tt_gmtoff, sp, tmp);
  10475. +     tmp->tm_isdst = ttisp->tt_isdst;
  10476. +     tzname[tmp->tm_isdst] = (char *) &sp->chars[ttisp->tt_abbrind];
  10477. +     tmp->tm_zone = &sp->chars[ttisp->tt_abbrind];
  10478. + }
  10479. + struct tm *
  10480. + localtime(timep)
  10481. + const time_t * const    timep;
  10482. + {
  10483. +     static struct tm    tm;
  10484. +     localsub(timep, 0L, &tm);
  10485. +     return &tm;
  10486. + }
  10487. + /*
  10488. + ** gmtsub is to gmtime as localsub is to localtime.
  10489. + */
  10490. + static void
  10491. + gmtsub(timep, offset, tmp)
  10492. + const time_t * const    timep;
  10493. + const long        offset;
  10494. + struct tm * const    tmp;
  10495. + {
  10496. +     if (!gmt_is_set) {
  10497. +         gmt_is_set = TRUE;
  10498. + #ifdef ALL_STATE
  10499. +         gmtptr = (struct state *) malloc(sizeof *gmtptr);
  10500. +         if (gmtptr != NULL)
  10501. + #endif /* defined ALL_STATE */
  10502. +             gmtload(gmtptr);
  10503. +     }
  10504. +     timesub(timep, offset, gmtptr, tmp);
  10505. +     /*
  10506. +     ** Could get fancy here and deliver something such as
  10507. +     ** "GMT+xxxx" or "GMT-xxxx" if offset is non-zero,
  10508. +     ** but this is no time for a treasure hunt.
  10509. +     */
  10510. +     if (offset != 0)
  10511. +         tmp->tm_zone = WILDABBR;
  10512. +     else {
  10513. + #ifdef ALL_STATE
  10514. +         if (gmtptr == NULL)
  10515. +             tmp->TM_ZONE = GMT;
  10516. +         else    tmp->TM_ZONE = gmtptr->chars;
  10517. + #endif /* defined ALL_STATE */
  10518. + #ifndef ALL_STATE
  10519. +         tmp->tm_zone = gmtptr->chars;
  10520. + #endif /* State Farm */
  10521. +     }
  10522. + }
  10523. + struct tm *
  10524. + gmtime(timep)
  10525. + const time_t * const    timep;
  10526. + {
  10527. +     static struct tm    tm;
  10528. +     gmtsub(timep, 0L, &tm);
  10529. +     return &tm;
  10530. + }
  10531. + static void
  10532. + timesub(timep, offset, sp, tmp)
  10533. + const time_t * const            timep;
  10534. + const long                offset;
  10535. + register const struct state * const    sp;
  10536. + register struct tm * const        tmp;
  10537. + {
  10538. +     register const struct lsinfo *    lp;
  10539. +     register long            days;
  10540. +     register long            rem;
  10541. +     register int            y;
  10542. +     register int            yleap;
  10543. +     register const int *        ip;
  10544. +     register long            corr;
  10545. +     register int            hit;
  10546. +     register int            i;
  10547. +     corr = 0;
  10548. +     hit = FALSE;
  10549. + #ifdef ALL_STATE
  10550. +     i = (sp == NULL) ? 0 : sp->leapcnt;
  10551. + #endif /* defined ALL_STATE */
  10552. + #ifndef ALL_STATE
  10553. +     i = sp->leapcnt;
  10554. + #endif /* State Farm */
  10555. +     while (--i >= 0) {
  10556. +         lp = &sp->lsis[i];
  10557. +         if (*timep >= lp->ls_trans) {
  10558. +             if (*timep == lp->ls_trans)
  10559. +                 hit = ((i == 0 && lp->ls_corr > 0) ||
  10560. +                     lp->ls_corr > sp->lsis[i - 1].ls_corr);
  10561. +             corr = lp->ls_corr;
  10562. +             break;
  10563. +         }
  10564. +     }
  10565. +     days = *timep / SECSPERDAY;
  10566. +     rem = *timep % SECSPERDAY;
  10567. + #ifdef mc68k
  10568. +     if (*timep == 0x80000000) {
  10569. +         /*
  10570. +         ** A 3B1 muffs the division on the most negative number.
  10571. +         */
  10572. +         days = -24855;
  10573. +         rem = -11648;
  10574. +     }
  10575. + #endif /* mc68k */
  10576. +     rem += (offset - corr);
  10577. +     while (rem < 0) {
  10578. +         rem += SECSPERDAY;
  10579. +         --days;
  10580. +     }
  10581. +     while (rem >= SECSPERDAY) {
  10582. +         rem -= SECSPERDAY;
  10583. +         ++days;
  10584. +     }
  10585. +     tmp->tm_hour = (int) (rem / SECSPERHOUR);
  10586. +     rem = rem % SECSPERHOUR;
  10587. +     tmp->tm_min = (int) (rem / SECSPERMIN);
  10588. +     tmp->tm_sec = (int) (rem % SECSPERMIN);
  10589. +     if (hit)
  10590. +         /*
  10591. +         ** A positive leap second requires a special
  10592. +         ** representation.  This uses "... ??:59:60".
  10593. +         */
  10594. +         ++(tmp->tm_sec);
  10595. +     tmp->tm_wday = (int) ((EPOCH_WDAY + days) % DAYSPERWEEK);
  10596. +     if (tmp->tm_wday < 0)
  10597. +         tmp->tm_wday += DAYSPERWEEK;
  10598. +     y = EPOCH_YEAR;
  10599. +     if (days >= 0)
  10600. +         for ( ; ; ) {
  10601. +             yleap = isleap(y);
  10602. +             if (days < (long) year_lengths[yleap])
  10603. +                 break;
  10604. +             ++y;
  10605. +             days = days - (long) year_lengths[yleap];
  10606. +         }
  10607. +     else do {
  10608. +         --y;
  10609. +         yleap = isleap(y);
  10610. +         days = days + (long) year_lengths[yleap];
  10611. +     } while (days < 0);
  10612. +     tmp->tm_year = y - TM_YEAR_BASE;
  10613. +     tmp->tm_yday = (int) days;
  10614. +     ip = mon_lengths[yleap];
  10615. +     for (tmp->tm_mon = 0; days >= (long) ip[tmp->tm_mon]; ++(tmp->tm_mon))
  10616. +         days = days - (long) ip[tmp->tm_mon];
  10617. +     tmp->tm_mday = (int) (days + 1);
  10618. +     tmp->tm_isdst = 0;
  10619. +     tmp->tm_gmtoff = offset;
  10620. + }
  10621. + /*
  10622. + ** A la X3J11
  10623. + */
  10624. + char *
  10625. + asctime(timeptr)
  10626. + register const struct tm *    timeptr;
  10627. + {
  10628. +     static const char    wday_name[DAYSPERWEEK][3] = {
  10629. +         "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"
  10630. +     };
  10631. +     static const char    mon_name[MONSPERYEAR][3] = {
  10632. +         "Jan", "Feb", "Mar", "Apr", "May", "Jun",
  10633. +         "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"
  10634. +     };
  10635. +     static char    result[26];
  10636. +     (void) sprintf(result, "%.3s %.3s%3d %02.2d:%02.2d:%02.2d %d\n",
  10637. +         wday_name[timeptr->tm_wday],
  10638. +         mon_name[timeptr->tm_mon],
  10639. +         timeptr->tm_mday, timeptr->tm_hour,
  10640. +         timeptr->tm_min, timeptr->tm_sec,
  10641. +         TM_YEAR_BASE + timeptr->tm_year);
  10642. +     return result;
  10643. + }
  10644. + char *
  10645. + ctime(timep)
  10646. + const time_t * const    timep;
  10647. + {
  10648. +     return asctime(localtime(timep));
  10649. + }
  10650. + /*
  10651. + ** Adapted from code provided by Robert Elz, who writes:
  10652. + **    The "best" way to do mktime I think is based on an idea of Bob
  10653. + **    Kridle's (so its said...) from a long time ago. (mtxinu!kridle now).
  10654. + **    It does a binary search of the time_t space.  Since time_t's are
  10655. + **    just 32 bits, its a max of 32 iterations (even at 64 bits it
  10656. + **    would still be very reasonable).
  10657. + */
  10658. + #ifndef WRONG
  10659. + #define WRONG    (-1)
  10660. + #endif /* !defined WRONG */
  10661. + static void
  10662. + normalize(tensptr, unitsptr, base)
  10663. + int * const    tensptr;
  10664. + int * const    unitsptr;
  10665. + const int    base;
  10666. + {
  10667. +     if (*unitsptr >= base) {
  10668. +         *tensptr += *unitsptr / base;
  10669. +         *unitsptr %= base;
  10670. +     } else if (*unitsptr < 0) {
  10671. +         --*tensptr;
  10672. +         *unitsptr += base;
  10673. +         if (*unitsptr < 0) {
  10674. +             *tensptr -= 1 + (-*unitsptr) / base;
  10675. +             *unitsptr = base - (-*unitsptr) % base;
  10676. +         }
  10677. +     }
  10678. + }
  10679. + static int
  10680. + tmcomp(atmp, btmp)
  10681. + register const struct tm * const atmp;
  10682. + register const struct tm * const btmp;
  10683. + {
  10684. +     register int    result;
  10685. +     if ((result = (atmp->tm_year - btmp->tm_year)) == 0 &&
  10686. +         (result = (atmp->tm_mon - btmp->tm_mon)) == 0 &&
  10687. +         (result = (atmp->tm_mday - btmp->tm_mday)) == 0 &&
  10688. +         (result = (atmp->tm_hour - btmp->tm_hour)) == 0 &&
  10689. +         (result = (atmp->tm_min - btmp->tm_min)) == 0)
  10690. +             result = atmp->tm_sec - btmp->tm_sec;
  10691. +     return result;
  10692. + }
  10693. + static time_t
  10694. + time2(tmp, funcp, offset, okayp)
  10695. + struct tm * const    tmp;
  10696. + void (* const        funcp)();
  10697. + const long        offset;
  10698. + int * const        okayp;
  10699. + {
  10700. +     register const struct state *    sp;
  10701. +     register int            dir;
  10702. +     register int            bits;
  10703. +     register int            i, j ;
  10704. +     register int            saved_seconds;
  10705. +     time_t                newt;
  10706. +     time_t                t;
  10707. +     struct tm            yourtm, mytm;
  10708. +     *okayp = FALSE;
  10709. +     yourtm = *tmp;
  10710. +     if (yourtm.tm_sec >= SECSPERMIN + 2 || yourtm.tm_sec < 0)
  10711. +         normalize(&yourtm.tm_min, &yourtm.tm_sec, SECSPERMIN);
  10712. +     normalize(&yourtm.tm_hour, &yourtm.tm_min, MINSPERHOUR);
  10713. +     normalize(&yourtm.tm_mday, &yourtm.tm_hour, HOURSPERDAY);
  10714. +     normalize(&yourtm.tm_year, &yourtm.tm_mon, MONSPERYEAR);
  10715. +     while (yourtm.tm_mday <= 0) {
  10716. +         --yourtm.tm_year;
  10717. +         yourtm.tm_mday +=
  10718. +             year_lengths[isleap(yourtm.tm_year + TM_YEAR_BASE)];
  10719. +     }
  10720. +     for ( ; ; ) {
  10721. +         i = mon_lengths[isleap(yourtm.tm_year +
  10722. +             TM_YEAR_BASE)][yourtm.tm_mon];
  10723. +         if (yourtm.tm_mday <= i)
  10724. +             break;
  10725. +         yourtm.tm_mday -= i;
  10726. +         if (++yourtm.tm_mon >= MONSPERYEAR) {
  10727. +             yourtm.tm_mon = 0;
  10728. +             ++yourtm.tm_year;
  10729. +         }
  10730. +     }
  10731. +     saved_seconds = yourtm.tm_sec;
  10732. +     yourtm.tm_sec = 0;
  10733. +     /*
  10734. +     ** Calculate the number of magnitude bits in a time_t
  10735. +     ** (this works regardless of whether time_t is
  10736. +     ** signed or unsigned, though lint complains if unsigned).
  10737. +     */
  10738. +     for (bits = 0, t = 1; t > 0; ++bits, t <<= 1)
  10739. +         ;
  10740. +     /*
  10741. +     ** If time_t is signed, then 0 is the median value,
  10742. +     ** if time_t is unsigned, then 1 << bits is median.
  10743. +     */
  10744. +     t = (t < 0) ? 0 : ((time_t) 1 << bits);
  10745. +     for ( ; ; ) {
  10746. +         (*funcp)(&t, offset, &mytm);
  10747. +         dir = tmcomp(&mytm, &yourtm);
  10748. +         if (dir != 0) {
  10749. +             if (bits-- < 0)
  10750. +                 return WRONG;
  10751. +             if (bits < 0)
  10752. +                 --t;
  10753. +             else if (dir > 0)
  10754. +                 t -= (time_t) 1 << bits;
  10755. +             else    t += (time_t) 1 << bits;
  10756. +             continue;
  10757. +         }
  10758. +         if (yourtm.tm_isdst < 0 || mytm.tm_isdst == yourtm.tm_isdst)
  10759. +             break;
  10760. +         /*
  10761. +         ** Right time, wrong type.
  10762. +         ** Hunt for right time, right type.
  10763. +         ** It's okay to guess wrong since the guess
  10764. +         ** gets checked.
  10765. +         */
  10766. +         sp = (const struct state *)
  10767. +             ((funcp == localsub) ? lclptr : gmtptr);
  10768. + #ifdef ALL_STATE
  10769. +         if (sp == NULL)
  10770. +             return WRONG;
  10771. + #endif /* defined ALL_STATE */
  10772. +         for (i = 0; i < sp->typecnt; ++i) {
  10773. +             if (sp->ttis[i].tt_isdst != yourtm.tm_isdst)
  10774. +                 continue;
  10775. +             for (j = 0; j < sp->typecnt; ++j) {
  10776. +                 if (sp->ttis[j].tt_isdst == yourtm.tm_isdst)
  10777. +                     continue;
  10778. +                 newt = t + sp->ttis[j].tt_gmtoff -
  10779. +                     sp->ttis[i].tt_gmtoff;
  10780. +                 (*funcp)(&newt, offset, &mytm);
  10781. +                 if (tmcomp(&mytm, &yourtm) != 0)
  10782. +                     continue;
  10783. +                 if (mytm.tm_isdst != yourtm.tm_isdst)
  10784. +                     continue;
  10785. +                 /*
  10786. +                 ** We have a match.
  10787. +                 */
  10788. +                 t = newt;
  10789. +                 goto label;
  10790. +             }
  10791. +         }
  10792. +         return WRONG;
  10793. +     }
  10794. + label:
  10795. +     t += saved_seconds;
  10796. +     (*funcp)(&t, offset, tmp);
  10797. +     *okayp = TRUE;
  10798. +     return t;
  10799. + }
  10800. + static time_t
  10801. + time1(tmp, funcp, offset)
  10802. + struct tm * const    tmp;
  10803. + void (* const        funcp)();
  10804. + const long        offset;
  10805. + {
  10806. +     register time_t            t;
  10807. +     register const struct state *    sp;
  10808. +     register int            samei, otheri;
  10809. +     int                okay;
  10810. +     if (tmp->tm_isdst > 1)
  10811. +         tmp->tm_isdst = 1;
  10812. +     t = time2(tmp, funcp, offset, &okay);
  10813. +     if (okay || tmp->tm_isdst < 0)
  10814. +         return t;
  10815. +     /*
  10816. +     ** We're supposed to assume that somebody took a time of one type
  10817. +     ** and did some math on it that yielded a "struct tm" that's bad.
  10818. +     ** We try to divine the type they started from and adjust to the
  10819. +     ** type they need.
  10820. +     */
  10821. +     sp = (const struct state *) ((funcp == localsub) ? lclptr : gmtptr);
  10822. + #ifdef ALL_STATE
  10823. +     if (sp == NULL)
  10824. +         return WRONG;
  10825. + #endif /* defined ALL_STATE */
  10826. +     for (samei = 0; samei < sp->typecnt; ++samei) {
  10827. +         if (sp->ttis[samei].tt_isdst != tmp->tm_isdst)
  10828. +             continue;
  10829. +         for (otheri = 0; otheri < sp->typecnt; ++otheri) {
  10830. +             if (sp->ttis[otheri].tt_isdst == tmp->tm_isdst)
  10831. +                 continue;
  10832. +             tmp->tm_sec += sp->ttis[otheri].tt_gmtoff -
  10833. +                     sp->ttis[samei].tt_gmtoff;
  10834. +             tmp->tm_isdst = !tmp->tm_isdst;
  10835. +             t = time2(tmp, funcp, offset, &okay);
  10836. +             if (okay)
  10837. +                 return t;
  10838. +             tmp->tm_sec -= sp->ttis[otheri].tt_gmtoff -
  10839. +                     sp->ttis[samei].tt_gmtoff;
  10840. +             tmp->tm_isdst = !tmp->tm_isdst;
  10841. +         }
  10842. +     }
  10843. +     return WRONG;
  10844. + }
  10845. + time_t
  10846. + mktime(tmp)
  10847. + struct tm * const    tmp;
  10848. + {
  10849. +     return time1(tmp, localsub, 0L);
  10850. + }
  10851. + /* Call tzset() if necessary */
  10852. + void _tzset(void)
  10853. + {
  10854. +   if (!lcl_is_set) tzset();
  10855. + }
  10856. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/devices.c emacs-18.59/amiga/unix/src/devices.c
  10857. *** /src/baseline/emacs-18.59/amiga/unix/src/devices.c    Thu Jan  1 00:00:00 1970
  10858. --- emacs-18.59/amiga/unix/src/devices.c    Sun Jul 19 17:47:02 1992
  10859. ***************
  10860. *** 0 ****
  10861. --- 1,33 ----
  10862. + #include "amiga.h"
  10863. + #include "devices.h"
  10864. + struct IORequest *_device_open(char *name, ULONG unit, ULONG flags,
  10865. +                    APTR data, ULONG data_len, int req_size)
  10866. + {
  10867. +     struct MsgPort *port;
  10868. +     struct IORequest *ioreq;
  10869. +     if ((port = CreateMsgPort()) && (ioreq = CreateIORequest(port, req_size)))
  10870. +     {
  10871. +     if (data)
  10872. +     {
  10873. +         struct IOStdReq *io2 = (struct IOStdReq *)ioreq;
  10874. +         io2->io_Data = data;
  10875. +         io2->io_Length = data_len;
  10876. +     }
  10877. +     if (OpenDevice(name, unit, ioreq, flags) == 0) return ioreq;
  10878. +     }
  10879. +     if (ioreq) DeleteIORequest(ioreq);
  10880. +     if (port) DeletePort(port);
  10881. +     return 0;
  10882. + }
  10883. + void _device_close(struct IORequest *ioreq)
  10884. + {
  10885. +     if (ioreq)
  10886. +     {
  10887. +     CloseDevice(ioreq);
  10888. +     DeletePort(ioreq->io_Message.mn_ReplyPort);
  10889. +     DeleteIORequest(ioreq);
  10890. +     }
  10891. + }
  10892. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/dir.c emacs-18.59/amiga/unix/src/dir.c
  10893. *** /src/baseline/emacs-18.59/amiga/unix/src/dir.c    Thu Jan  1 00:00:00 1970
  10894. --- emacs-18.59/amiga/unix/src/dir.c    Fri Dec  4 20:32:28 1992
  10895. ***************
  10896. *** 0 ****
  10897. --- 1,177 ----
  10898. + #include "amiga.h"
  10899. + #include "dir_data.h"
  10900. + #include <string.h>
  10901. + /* opendir/readdir/etc ... emulation w/ stat support hack */
  10902. + static void free_entries(iDIR *info)
  10903. + {
  10904. +   struct idirent *scan = info->files;
  10905. +   
  10906. +   while (scan)
  10907. +     {
  10908. +       struct idirent *next = scan->next;
  10909. +       
  10910. +       free(scan);
  10911. +       scan = next;
  10912. +     }
  10913. + }
  10914. + static int gobble_dir(DIR *dir)
  10915. + {
  10916. +   iDIR *info = (iDIR *)dir->dd_buf;
  10917. +   long ioerr;
  10918. +   struct idirent **last = &info->files;
  10919. +   struct FileLock *dirlock;
  10920. +   
  10921. +   free_entries(info);
  10922. +   last_dir = 0;
  10923. +   info->files = 0;
  10924. +   dir->dd_loc = 0;
  10925. +   /* Find a value for st_dev of stat() calls */
  10926. +   dirlock = BADDR(dir->dd_fd);
  10927. +   info->task = dirlock->fl_Task;
  10928. +   while (ExNext(dir->dd_fd, &info->fib))
  10929. +     {
  10930. +       u_short namlen = strlen(info->fib.fib_FileName);
  10931. +       u_short reclen = namlen + 1 + offsetof(struct idirent, entry.d_name);
  10932. +       struct idirent *newentry = (struct idirent *)malloc(reclen);
  10933. +       struct dirent *entry;
  10934. +       
  10935. +       if (!newentry)
  10936. +     {
  10937. +       errno = ENOMEM;
  10938. +       return 0;
  10939. +     }
  10940. +       newentry->next = 0;
  10941. +       *last = newentry;
  10942. +       last = &newentry->next;
  10943. +       
  10944. +       newentry->numblocks = info->fib.fib_NumBlocks;
  10945. +       newentry->size = info->fib.fib_Size;
  10946. +       newentry->date = info->fib.fib_Date;
  10947. +       newentry->type = info->fib.fib_DirEntryType;
  10948. +       newentry->protection = info->fib.fib_Protection;
  10949. +       
  10950. +       entry = &newentry->entry;
  10951. +       entry->d_reclen = reclen;
  10952. +       entry->d_namlen = namlen;
  10953. +       entry->d_off = dir->dd_loc++;
  10954. +       strcpy(entry->d_name, info->fib.fib_FileName);
  10955. +       entry->d_ino = info->fib.fib_DiskKey;
  10956. +     }
  10957. +   info->pos = info->files;
  10958. +   dir->dd_loc = 0;
  10959. +   ioerr = IoErr();
  10960. +   if (ioerr == ERROR_NO_MORE_ENTRIES) return 1;
  10961. +   
  10962. +   errno = convert_oserr(ioerr);
  10963. +   return 0;
  10964. + }
  10965. + DIR *opendir(char *dirname)
  10966. + {
  10967. +   DIR *new = (DIR *)malloc(sizeof *new);
  10968. +   iDIR *info = (iDIR *)malloc(sizeof *info);
  10969. +   char *dircopy = malloc(strlen(dirname) + 1);
  10970. +   chkabort();
  10971. +   if (new && dircopy && info)
  10972. +     {
  10973. +       new->dd_buf = (char *)info;
  10974. +       new->dd_size = sizeof *info;
  10975. +       
  10976. +       info->files = info->pos = 0;
  10977. +       info->seeked = 0;
  10978. +       info->dirname = dircopy;
  10979. +       strcpy(dircopy, dirname);
  10980. +       info->cdir = _get_cd();
  10981. +       
  10982. +       if ((new->dd_fd = Lock(dirname, ACCESS_READ)) &&
  10983. +       Examine(new->dd_fd, &info->fib))
  10984. +     {
  10985. +       if (gobble_dir(new)) return new;
  10986. +     }
  10987. +       else errno = convert_oserr(IoErr());
  10988. +       closedir(new);
  10989. +       return 0;
  10990. +     }
  10991. +   
  10992. +   errno = ENOMEM;
  10993. +   if (new) free(new);
  10994. +   if (dircopy) free(dircopy);
  10995. +   if (info) free(info);
  10996. +   
  10997. +   return 0;
  10998. + }
  10999. + void closedir(DIR *dir)
  11000. + {
  11001. +   iDIR *info = (iDIR *)dir->dd_buf;
  11002. +   
  11003. +   chkabort();
  11004. +   last_dir = 0;
  11005. +   free_entries(info);
  11006. +   free(info->dirname);
  11007. +   if (dir->dd_fd) UnLock(dir->dd_fd);
  11008. +   free(dir->dd_buf);
  11009. +   free(dir);
  11010. + }
  11011. + struct dirent *readdir(DIR *dir)
  11012. + {
  11013. +   iDIR *info = (iDIR *)dir->dd_buf;
  11014. +   struct dirent *entry = 0;
  11015. +   
  11016. +   chkabort();
  11017. +   if (info->seeked)
  11018. +     {
  11019. +       long cloc = 0;
  11020. +       struct idirent *pos;
  11021. +       
  11022. +       pos = info->files;
  11023. +       
  11024. +       while (cloc < dir->dd_loc && pos)
  11025. +     {
  11026. +       cloc++; pos = pos->next;
  11027. +     }
  11028. +       /*if (cloc != dir->dd_loc) error ...
  11029. +     This doesn't seem to be defined very precisely */
  11030. +       info->pos = pos;
  11031. +       info->seeked = 0;
  11032. +     }
  11033. +   if (info->pos)
  11034. +     {
  11035. +       entry = &info->pos->entry;
  11036. +       
  11037. +       last_dir = dir;
  11038. +       last_entry = info->pos;
  11039. +       
  11040. +       info->pos = info->pos->next;
  11041. +       dir->dd_loc++;
  11042. +     }
  11043. +   return entry;
  11044. + }
  11045. + long telldir(DIR *dir)
  11046. + {
  11047. +   chkabort();
  11048. +   return dir->dd_loc;
  11049. + }
  11050. + void seekdir(DIR *dir, long loc)
  11051. + {
  11052. +   iDIR *info = (iDIR *)dir->dd_buf;
  11053. +   
  11054. +   chkabort();
  11055. +   info->seeked = 1;
  11056. +   dir->dd_loc = loc;
  11057. + }
  11058. + #if 0
  11059. + void rewwinddir(DIR *dir)
  11060. + {
  11061. +   chkabort();
  11062. +   gobble_dir(dir);
  11063. + }
  11064. + #endif
  11065. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/dir_data.c emacs-18.59/amiga/unix/src/dir_data.c
  11066. *** /src/baseline/emacs-18.59/amiga/unix/src/dir_data.c    Thu Jan  1 00:00:00 1970
  11067. --- emacs-18.59/amiga/unix/src/dir_data.c    Fri Dec  4 20:27:08 1992
  11068. ***************
  11069. *** 0 ****
  11070. --- 1,15 ----
  11071. + #include "amiga.h"
  11072. + #include "dir_data.h"
  11073. + DIR *last_dir;
  11074. + struct idirent *last_entry;
  11075. + BPTR _get_cd(void)
  11076. + {
  11077. +   BPTR dir = CurrentDir(0);
  11078. +   
  11079. +   CurrentDir(dir);
  11080. +   
  11081. +   return dir;
  11082. + }
  11083. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/dir_data.h emacs-18.59/amiga/unix/src/dir_data.h
  11084. *** /src/baseline/emacs-18.59/amiga/unix/src/dir_data.h    Thu Jan  1 00:00:00 1970
  11085. --- emacs-18.59/amiga/unix/src/dir_data.h    Fri Dec  4 20:26:54 1992
  11086. ***************
  11087. *** 0 ****
  11088. --- 1,33 ----
  11089. + #ifndef DIR_DATA_H
  11090. + #define DIR_DATA_H
  11091. + #include <sys/dir.h>
  11092. + typedef struct
  11093. + {
  11094. +   char *dirname;
  11095. +   BPTR cdir;
  11096. +   struct FileInfoBlock fib;
  11097. +   struct idirent *files, *pos;
  11098. +   int seeked;
  11099. +   struct MsgPort *task;        /* Used to fake a value for st_dev */
  11100. + } iDIR;
  11101. + struct idirent
  11102. + {
  11103. +   struct idirent *next;
  11104. +   /* Info needed for stat */
  11105. +   long numblocks;
  11106. +   long size;
  11107. +   struct DateStamp date;
  11108. +   long type;
  11109. +   long protection;
  11110. +   struct dirent entry;
  11111. + };
  11112. + extern DIR *last_dir;
  11113. + extern struct idirent *last_entry;
  11114. + BPTR _get_cd(void);
  11115. + #endif
  11116. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/error.c emacs-18.59/amiga/unix/src/error.c
  11117. *** /src/baseline/emacs-18.59/amiga/unix/src/error.c    Thu Jan  1 00:00:00 1970
  11118. --- emacs-18.59/amiga/unix/src/error.c    Sun Jul 19 17:47:02 1992
  11119. ***************
  11120. *** 0 ****
  11121. --- 1,47 ----
  11122. + #include "amiga.h"
  11123. + int errno;
  11124. + int convert_oserr(int ioerr)
  11125. + {
  11126. +   extern int _OSERR;
  11127. +   _OSERR = ioerr;
  11128. +   switch (ioerr)
  11129. +     {
  11130. +     case 0: return 0;
  11131. +     case ERROR_NO_FREE_STORE: return ENOMEM;
  11132. +     case ERROR_TASK_TABLE_FULL: return EAGAIN;
  11133. +     case ERROR_BAD_TEMPLATE: case ERROR_REQUIRED_ARG_MISSING: case ERROR_BAD_NUMBER:
  11134. +     case ERROR_KEY_NEEDS_ARG: case ERROR_TOO_MANY_ARGS:
  11135. +     case ERROR_UNMATCHED_QUOTES: return EINVAL;
  11136. +     case ERROR_LINE_TOO_LONG: return E2BIG;
  11137. +     case ERROR_FILE_NOT_OBJECT: return ENOEXEC;
  11138. +     case ERROR_OBJECT_IN_USE: return EBUSY;
  11139. +     case ERROR_OBJECT_EXISTS: return EEXIST;
  11140. +     case ERROR_DIR_NOT_FOUND: return ENOENT;
  11141. +     case ERROR_OBJECT_NOT_FOUND: return ENOENT;
  11142. +     case ERROR_BAD_STREAM_NAME: return EINVAL;
  11143. +     case ERROR_OBJECT_TOO_LARGE: return E2BIG;
  11144. +     case ERROR_ACTION_NOT_KNOWN: return EINVAL;
  11145. +     case ERROR_INVALID_COMPONENT_NAME: return ENAMETOOLONG;
  11146. +     case ERROR_INVALID_LOCK: return EINVAL;
  11147. +     case ERROR_OBJECT_WRONG_TYPE: return EINVAL;
  11148. +     case ERROR_DISK_WRITE_PROTECTED: return EROFS;
  11149. +     case ERROR_RENAME_ACROSS_DEVICES: return EXDEV;
  11150. +     case ERROR_DIRECTORY_NOT_EMPTY: return ENOTEMPTY;
  11151. +     case ERROR_TOO_MANY_LEVELS: return ELOOP;
  11152. +     case ERROR_DEVICE_NOT_MOUNTED: return ENODEV;
  11153. +     case ERROR_SEEK_ERROR: return EINVAL;
  11154. +     case ERROR_DISK_FULL: return ENOSPC;
  11155. +     case ERROR_DELETE_PROTECTED: return EACCES;
  11156. +     case ERROR_WRITE_PROTECTED: return EACCES;
  11157. +     case ERROR_READ_PROTECTED: return EACCES;
  11158. +     default: return EOSERR;
  11159. +     }
  11160. + }
  11161. + void _seterr(void)
  11162. + {
  11163. +     errno = convert_oserr(IoErr());
  11164. + }
  11165. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/error_msg.c emacs-18.59/amiga/unix/src/error_msg.c
  11166. *** /src/baseline/emacs-18.59/amiga/unix/src/error_msg.c    Thu Jan  1 00:00:00 1970
  11167. --- emacs-18.59/amiga/unix/src/error_msg.c    Sat Dec  5 09:59:06 1992
  11168. ***************
  11169. *** 0 ****
  11170. --- 1,48 ----
  11171. + #include "amiga.h"
  11172. + /* Gross hack because EOSERR is -1. */
  11173. + static char *sys_amiga_error = "amiga specific error";
  11174. + char *sys_errlist[] =
  11175. +   {
  11176. +     "Unknown error",
  11177. +     "not owner",
  11178. +     "no such file or directory",
  11179. +     "no such process",
  11180. +     "interrupted system call",
  11181. +     "i/o error",
  11182. +     "no such device or address",
  11183. +     "argument list too long",
  11184. +     "exec format error",
  11185. +     "bad file number",
  11186. +     "no child process",
  11187. +     "no more processes",
  11188. +     "not enough memory",
  11189. +     "permission denied",
  11190. +     "bad address",
  11191. +     "block device required",
  11192. +     "mount devices busy",
  11193. +     "file exists",
  11194. +     "cross-device link",
  11195. +     "no such device",
  11196. +     "not a directory",
  11197. +     "is a directory",
  11198. +     "invalid argument",
  11199. +     "file table overflow",
  11200. +     "too many open files",
  11201. +     "not a typewriter",
  11202. +     "text file busy",
  11203. +     "file too big",
  11204. +     "no space left on device",
  11205. +     "illegal seek",
  11206. +     "read-only file system",
  11207. +     "too many links",
  11208. +     "broken pipe",
  11209. +     "math argument",
  11210. +     "result too large",
  11211. +     "I/O stream empty",
  11212. +     "file name too long",
  11213. +     "directory not empty",
  11214. +     "too many soft links (loop?)"
  11215. + };
  11216. + int sys_nerr = ELOOP;
  11217. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/exec.c emacs-18.59/amiga/unix/src/exec.c
  11218. *** /src/baseline/emacs-18.59/amiga/unix/src/exec.c    Thu Jan  1 00:00:00 1970
  11219. --- emacs-18.59/amiga/unix/src/exec.c    Sun Dec  6 14:32:30 1992
  11220. ***************
  11221. *** 0 ****
  11222. --- 1,143 ----
  11223. + #include "amiga.h"
  11224. + #include "processes.h"
  11225. + #include <amiga/ioctl.h>
  11226. + #include <exec/memory.h>
  11227. + #include <dos/dosextens.h>
  11228. + #include <dos/dostags.h>
  11229. + #include <string.h>
  11230. + int eexec(char *program, char **argv, int input, int output, int error,
  11231. +       char *dir, int stacksize)
  11232. + /* input = -1 -> inherit Input()
  11233. +    output = -1 -> inherit Output()
  11234. +    error = -1 -> inherit pr_CES
  11235. +    error = -2 -> stderr = stdout */
  11236. + {
  11237. +   int index, comsize, close_input, close_output, close_error;
  11238. +   char *combuf, *bp;
  11239. +   BPTR in, out, err, dirlock;
  11240. +   int _pseudo_close(int fd);
  11241. +   comsize = 256;
  11242. +   combuf = malloc(comsize);
  11243. +   if (input == -1)
  11244. +     {
  11245. +       in = Input();
  11246. +       close_input = FALSE;
  11247. +     }
  11248. +   else
  11249. +     {
  11250. +       if (ioctl(input, _AMIGA_GET_FH, &in) == -1) in = 0;
  11251. +       close_input = TRUE;
  11252. +       _pseudo_close(input);
  11253. +     }
  11254. +   if (output == -1)
  11255. +     {
  11256. +       out = Output();
  11257. +       close_output = FALSE;
  11258. +     }
  11259. +   else if (input == output)
  11260. +     {
  11261. +       out = in;
  11262. +       close_output = FALSE;
  11263. +     }
  11264. +   else
  11265. +     {
  11266. +       if (ioctl(output, _AMIGA_GET_FH, &out) == -1) out = 0;
  11267. +       close_output = out != in;
  11268. +       _pseudo_close(output);
  11269. +     }
  11270. +   if (error == -1)
  11271. +     {
  11272. +       err = _us->pr_CES;
  11273. +       close_error = FALSE;
  11274. +     }
  11275. +   else if (error == -2)
  11276. +     {
  11277. +       err = out;
  11278. +       close_error = FALSE;
  11279. +     }
  11280. +   else
  11281. +     {
  11282. +       if (ioctl(error, _AMIGA_GET_FH, &err) == -1) err = 0;
  11283. +       close_error = err != out && err != in;
  11284. +       _pseudo_close(error);
  11285. +     }
  11286. +   /* pr_CES is not always defined */
  11287. +   if (in && out && (err || error == -1))
  11288. +     if (combuf)
  11289. +       {
  11290. +     bp = combuf;
  11291. +     for (index = 0; argv[index] != 0; index++)
  11292. +       {
  11293. +         /* Use program as argv[0]. This loses some information, but ... */
  11294. +         char *arg = index == 0 ? program : argv[index];
  11295. +         char *s;
  11296. +         int len;
  11297. +         len = 3;
  11298. +         s = arg;
  11299. +         while (*s)
  11300. +           {
  11301. +         len++;
  11302. +         if (*s == '*' || *s == '"' || *s == '\n') len++;
  11303. +         s++;
  11304. +           }
  11305. +         if (bp + len + 1 >= combuf + comsize)
  11306. +           {
  11307. +         char *newbuf;
  11308. +         comsize += comsize + len;
  11309. +         newbuf = realloc(combuf, comsize);
  11310. +         if (!newbuf) { errno = ENOMEM; goto error; }
  11311. +         bp = newbuf + (bp - combuf);
  11312. +         combuf = newbuf;
  11313. +           }
  11314. +         *bp++ = ' ';
  11315. +         *bp++ = '"';
  11316. +         s = arg;
  11317. +         while (*s)
  11318. +           {
  11319. +         if (*s == '"' || *s == '*') *bp++ = '*';
  11320. +         else if (*s == '\n') *bp++ = '+';
  11321. +         *bp++ = *s++;
  11322. +           }
  11323. +         *bp++ = '"';
  11324. +       }
  11325. +     *bp = '\0';
  11326. +     if (dir) dirlock = Lock(dir, SHARED_LOCK);
  11327. +     else dirlock = 0;
  11328. +     if (dirlock || !dir)
  11329. +       {
  11330. +         int pid = _start_process(combuf, in, close_input, out, close_output,
  11331. +                      err, close_error, dirlock, stacksize);
  11332. +         if (pid != -1)
  11333. +           {
  11334. +         free(combuf);
  11335. +         return pid;
  11336. +           }
  11337. +       }
  11338. +     else errno = convert_oserr(IoErr());
  11339. +     if (dirlock) UnLock(dirlock);
  11340. +       }
  11341. +     else errno = ENOMEM;
  11342. +  error:
  11343. +   if (in && close_input) Close(in);
  11344. +   if (out && close_output) Close(out);
  11345. +   if (err && close_error) Close(err);
  11346. +   if (combuf) free(combuf);
  11347. +   return -1;
  11348. + }
  11349. + int exec(char *program, char **argv, int input, int output, 
  11350. +       char *dir, int stacksize)
  11351. + {
  11352. +   return eexec(program, argv, input, output, -1, dir, stacksize);
  11353. + }
  11354. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/fchmod.c emacs-18.59/amiga/unix/src/fchmod.c
  11355. *** /src/baseline/emacs-18.59/amiga/unix/src/fchmod.c    Thu Jan  1 00:00:00 1970
  11356. --- emacs-18.59/amiga/unix/src/fchmod.c    Sun Jul 19 17:47:02 1992
  11357. ***************
  11358. *** 0 ****
  11359. --- 1,10 ----
  11360. + #include "amiga.h"
  11361. + #include <amiga/ioctl.h>
  11362. + int fchmod(int fd, int mode)
  11363. + {
  11364. +   long amode = _make_protection(mode);
  11365. +   chkabort();
  11366. +   return ioctl(fd, _AMIGA_SETPROTECTION, &amode);
  11367. + }
  11368. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/fcntl.c emacs-18.59/amiga/unix/src/fcntl.c
  11369. *** /src/baseline/emacs-18.59/amiga/unix/src/fcntl.c    Thu Jan  1 00:00:00 1970
  11370. --- emacs-18.59/amiga/unix/src/fcntl.c    Sun Jul 19 17:47:02 1992
  11371. ***************
  11372. *** 0 ****
  11373. --- 1,43 ----
  11374. + #include "amiga.h"
  11375. + #include "files.h"
  11376. + #include <fcntl.h>
  11377. + #include <sys/filio.h>
  11378. + #include <stdarg.h>
  11379. + /* Flags that can be changed with fcntl */
  11380. + #define FCNTL_FLAGS (O_NDELAY | O_APPEND)
  11381. + int fcntl(int fd, int cmd, ...)
  11382. + {
  11383. +   struct fileinfo *fi;
  11384. +   va_list args;
  11385. +   int arg;
  11386. +   chkabort();
  11387. +   va_start(args, cmd);
  11388. +   arg = va_arg(args, int);
  11389. +   va_end(args);
  11390. +   if (fi = _find_fd(fd))
  11391. +     {
  11392. +       switch (cmd)
  11393. +     {
  11394. +     default: errno = EINVAL; break;
  11395. +     case F_GETFL: return fi->flags & FCNTL_FLAGS;
  11396. +     case F_SETFL:
  11397. +       {
  11398. +         int oldfl = fi->flags;
  11399. +         fi->flags = (fi->flags & ~FCNTL_FLAGS) | (arg & FCNTL_FLAGS);
  11400. +         if ((oldfl & O_NDELAY) != (fi->flags & O_NDELAY))
  11401. +           {
  11402. +         int ndelay = fi->flags & O_NDELAY;
  11403. +         return fi->ioctl(fi->userinfo, FIONBIO, &ndelay);
  11404. +           }
  11405. +         return 0;
  11406. +       }
  11407. +     }
  11408. +     }
  11409. +   return -1;
  11410. + }
  11411. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/fibstat.c emacs-18.59/amiga/unix/src/fibstat.c
  11412. *** /src/baseline/emacs-18.59/amiga/unix/src/fibstat.c    Thu Jan  1 00:00:00 1970
  11413. --- emacs-18.59/amiga/unix/src/fibstat.c    Sat Dec  5 12:11:24 1992
  11414. ***************
  11415. *** 0 ****
  11416. --- 1,90 ----
  11417. + #include "amiga.h"
  11418. + #include "fibstat.h"
  11419. + #include "timeconvert.h"
  11420. + #include <fcntl.h>
  11421. + #include <time.h>
  11422. + #include <sys/stat.h>
  11423. + #include <utility/tagitem.h>
  11424. + char _temp_fname[FNAMESIZE];
  11425. + void _lfibstat(char *name, struct FileInfoBlock *fib, struct MsgPort *task,
  11426. +            int isroot, struct stat *sbuf)
  11427. + {
  11428. +   long protection = fib->fib_Protection;
  11429. +   
  11430. +   sbuf->st_dev = (long)task;
  11431. +   sbuf->st_rdev = 0;
  11432. +   sbuf->st_uid = AMIGA_UID; sbuf->st_gid = AMIGA_GID;
  11433. +   sbuf->st_blksize = 512;
  11434. + #ifdef PRETEND_LINKED
  11435. +   /* This forces programs (tar) to consider potential hard links */
  11436. +   sbuf->st_nlink = 2;
  11437. + #else
  11438. +   sbuf->st_nlink = 1;
  11439. + #endif
  11440. +   sbuf->st_blocks = fib->fib_NumBlocks;
  11441. +   /* Give directories an arbitrary size */
  11442. +   if (fib->fib_Size == 0 && fib->fib_DirEntryType > 0) sbuf->st_size = 2048;
  11443. +   else sbuf->st_size = fib->fib_Size;
  11444. +   sbuf->st_ino = fib->fib_DiskKey;
  11445. +   sbuf->st_ctime = sbuf->st_atime = sbuf->st_mtime = _amiga2gmt(&fib->fib_Date);
  11446. +   
  11447. +   switch (fib->fib_DirEntryType)
  11448. +     {
  11449. +     case ST_SOFTLINK:
  11450. +       {
  11451. +     int len;
  11452. +     if (name && (len = readlink(name, _temp_fname, FNAMESIZE - 1)) > 0)
  11453. +       sbuf->st_size = len;
  11454. +     else sbuf->st_size = 256; /* A random safish value */
  11455. +     sbuf->st_mode = S_IFLNK;
  11456. +     break;
  11457. +       }
  11458. +     case ST_PIPEFILE: sbuf->st_mode = S_IFIFO; break;
  11459. +       /* If Examine wasn't braindead this would be the right test */
  11460. +     case ST_ROOT: sbuf->st_mode = S_IFDIR; protection = 0; break;
  11461. +     case ST_FILE: /* Try & detect special files (eg windows) */
  11462. +       if (fib->fib_DiskKey == 0 && !fib->fib_FileName[0])
  11463. +     sbuf->st_mode = S_IFCHR;
  11464. +       else sbuf->st_mode = S_IFREG;
  11465. +       break;
  11466. +     default: sbuf->st_mode = fib->fib_DirEntryType > 0 ? S_IFDIR : S_IFREG; break;
  11467. +     }
  11468. +   /* Examine is braindead. You can't tell if you've examined a root directory
  11469. +      (for which the protection flags are invalid) or not. */
  11470. +   if (isroot) protection = 0;
  11471. +   sbuf->st_mode |= _make_mode(protection);
  11472. + }
  11473. + int _fibstat(char *name, struct stat *sbuf)
  11474. + {
  11475. +   int ret;
  11476. +   struct FileInfoBlock *fib;
  11477. +   BPTR lock = 0;
  11478. +   if ((fib = AllocDosObjectTags(DOS_FIB, TAG_END)) &&
  11479. +       (lock = Lock(name, ACCESS_READ)) &&
  11480. +       Examine(lock, fib))
  11481. +     {
  11482. +       BPTR parent = ParentDir(lock);
  11483. +       int isroot = !parent;
  11484. +       struct FileLock *flock = BADDR(lock);
  11485. +       
  11486. +       if (parent) UnLock(parent);
  11487. +       _lfibstat(name, fib, flock->fl_Task, isroot, sbuf);
  11488. +       ret = 0;
  11489. +     }
  11490. +   else
  11491. +     {
  11492. +       ret = -1;
  11493. +       errno = convert_oserr(IoErr());
  11494. +     }
  11495. +   if (lock) UnLock(lock);
  11496. +   if (fib) FreeDosObject(DOS_FIB, fib);
  11497. +   return ret;
  11498. + }
  11499. +       
  11500. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/fibstat.h emacs-18.59/amiga/unix/src/fibstat.h
  11501. *** /src/baseline/emacs-18.59/amiga/unix/src/fibstat.h    Thu Jan  1 00:00:00 1970
  11502. --- emacs-18.59/amiga/unix/src/fibstat.h    Sat Oct 17 12:55:52 1992
  11503. ***************
  11504. *** 0 ****
  11505. --- 1,12 ----
  11506. + #ifndef FIBSTAT_H
  11507. + #define FNAMESIZE 256
  11508. + extern char _temp_fname[FNAMESIZE];
  11509. + void _lfibstat(char *name, struct FileInfoBlock *fib, struct MsgPort *task,
  11510. +            int isroot, struct stat *sbuf);
  11511. + int _fibstat(char *name, struct stat *sbuf);
  11512. + #endif
  11513. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/fifo.h emacs-18.59/amiga/unix/src/fifo.h
  11514. *** /src/baseline/emacs-18.59/amiga/unix/src/fifo.h    Thu Jan  1 00:00:00 1970
  11515. --- emacs-18.59/amiga/unix/src/fifo.h    Sun Jul 19 17:47:02 1992
  11516. ***************
  11517. *** 0 ****
  11518. --- 1,41 ----
  11519. + /*
  11520. +  *  FIFO.H
  11521. +  *
  11522. +  *  PUBLIC FIFO STRUCTURES AND DEFINES
  11523. +  */
  11524. + #ifndef LIBRARIES_FIFO_H
  11525. + #define LIBRARIES_FIFO_H
  11526. + #define FIFONAME    "fifo.library"
  11527. + #define FIFOF_READ      0x00000100L      /*  intend to read from fifo      */
  11528. + #define FIFOF_WRITE      0x00000200L      /*  intend to write to fifo      */
  11529. + #define FIFOF_RESERVED      0xFFFF0000L      /*  reserved for internal use   */
  11530. + #define FIFOF_NORMAL      0x00000400L      /*  request blocking/sig support*/
  11531. + #define FIFOF_NBIO      0x00000800L      /*  non-blocking IO          */
  11532. + #define FIFOF_KEEPIFD      0x00002000L      /*  keep fifo alive if data pending */
  11533. + #define FIFOF_EOF      0x00004000L      /*  EOF on close              */
  11534. + #define FIFOF_RREQUIRED   0x00008000L      /*  reader required to exist      */
  11535. + #define FREQ_RPEND    1
  11536. + #define FREQ_WAVAIL    2
  11537. + #define FREQ_ABORT    3
  11538. + typedef void *FifoHan;              /*  returned by OpenFifo()  */
  11539. + #ifndef IN_LIBRARY
  11540. + FifoHan OpenFifo(char *, long, long);
  11541. + void CloseFifo(FifoHan, long);
  11542. + long ReadFifo(FifoHan, char **, long);
  11543. + long WriteFifo(FifoHan, char *, long);
  11544. + void RequestFifo(FifoHan, struct Message *, long);
  11545. + long BufSizeFifo(FifoHan);
  11546. + #endif
  11547. + #endif
  11548. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/fifo_pragmas.h emacs-18.59/amiga/unix/src/fifo_pragmas.h
  11549. *** /src/baseline/emacs-18.59/amiga/unix/src/fifo_pragmas.h    Thu Jan  1 00:00:00 1970
  11550. --- emacs-18.59/amiga/unix/src/fifo_pragmas.h    Sun Jul 19 17:47:02 1992
  11551. ***************
  11552. *** 0 ****
  11553. --- 1,7 ----
  11554. + /* "fifo.library"*/
  11555. + #pragma libcall _FifoBase OpenFifo 1E 81003
  11556. + #pragma libcall _FifoBase CloseFifo 24 1002
  11557. + #pragma libcall _FifoBase ReadFifo 2A 81003
  11558. + #pragma libcall _FifoBase WriteFifo 30 81003
  11559. + #pragma libcall _FifoBase RequestFifo 36 81003
  11560. + #pragma libcall _FifoBase BufSizeFifo 3C 001
  11561. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/fifofd.c emacs-18.59/amiga/unix/src/fifofd.c
  11562. *** /src/baseline/emacs-18.59/amiga/unix/src/fifofd.c    Thu Jan  1 00:00:00 1970
  11563. --- emacs-18.59/amiga/unix/src/fifofd.c    Fri Aug 14 18:33:24 1992
  11564. ***************
  11565. *** 0 ****
  11566. --- 1,25 ----
  11567. + #include "amiga.h"
  11568. + #include "files.h"
  11569. + #include "fifofd.h"
  11570. + #include <time.h>
  11571. + struct Library *_FifoBase;
  11572. + int _fifo_sig = -1;
  11573. + long _fifo_base;
  11574. + long _fifo_offset;
  11575. + int _fifo_ok;
  11576. + void _init_fifo(void)
  11577. + {
  11578. +   _fifo_base = (int)_us ^ _startup_time * 65537;
  11579. +   _fifo_offset = 0;
  11580. +   _FifoBase = OpenLibrary("fifo.library", 0);
  11581. +   _fifo_sig = AllocSignal(-1);
  11582. +   _fifo_ok = _FifoBase != 0 && _fifo_sig >= 0;
  11583. + }
  11584. + void _cleanup_fifo(void)
  11585. + {
  11586. +   if (_fifo_sig >= 0) FreeSignal(_fifo_sig);
  11587. +   if (_FifoBase) CloseLibrary(_FifoBase);
  11588. + }
  11589. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/fifofd.h emacs-18.59/amiga/unix/src/fifofd.h
  11590. *** /src/baseline/emacs-18.59/amiga/unix/src/fifofd.h    Thu Jan  1 00:00:00 1970
  11591. --- emacs-18.59/amiga/unix/src/fifofd.h    Mon Aug 24 22:31:52 1992
  11592. ***************
  11593. *** 0 ****
  11594. --- 1,31 ----
  11595. + #ifndef FIFO_H
  11596. + #define FIFO_H
  11597. + #include "fifo.h"
  11598. + #include "fifo_pragmas.h"
  11599. + #define FIFO_BUFSIZE 1024
  11600. + #define FIFO_NAMELEN 32
  11601. + struct fifoinfo
  11602. + {
  11603. +   char name[FIFO_NAMELEN];
  11604. +   void *rfifo, *wfifo;
  11605. +   long maxsend, skip;
  11606. +   int flags;
  11607. +   struct Message *rmsg, *wmsg;
  11608. +   struct MsgPort *reply;
  11609. + };
  11610. + #define FIFO_MASTER 0x8000
  11611. + extern struct Library *_FifoBase;
  11612. + extern int _fifo_sig;
  11613. + extern long _fifo_base;
  11614. + extern long _fifo_offset;
  11615. + extern int _fifo_ok;
  11616. + void _init_fifo(void);
  11617. + void _cleanup_fifo(void);
  11618. + #endif
  11619. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/files.c emacs-18.59/amiga/unix/src/files.c
  11620. *** /src/baseline/emacs-18.59/amiga/unix/src/files.c    Thu Jan  1 00:00:00 1970
  11621. --- emacs-18.59/amiga/unix/src/files.c    Sun Dec  6 13:12:58 1992
  11622. ***************
  11623. *** 0 ****
  11624. --- 1,74 ----
  11625. + #include "amiga.h"
  11626. + #include "files.h"
  11627. + #include <string.h>
  11628. + /* Unix low-level IO emulation */
  11629. + /* --------------------------- */
  11630. + /* First, fd definition & allocation */
  11631. + static struct fileinfo *files;
  11632. + static int max_files;
  11633. + #define FILE_STEP 10        /* Nb of file descriptors to allocate at once */
  11634. + int _alloc_fd(void *userinfo, int flags,
  11635. +   ULONG (*__regargs select_start)(void *userinfo, int rd, int wr),
  11636. +   void (*__regargs select_poll)(void *userinfo, int *rd, int *wr),
  11637. +   int (*__regargs read)(void *userinfo, void *buffer, unsigned int length),
  11638. +   int (*__regargs write)(void *userinfo, void *buffer, unsigned int length),
  11639. +   int (*__regargs lseek)(void *userinfo, long rpos, int mode),
  11640. +   int (*__regargs close)(void *userinfo, int internal),
  11641. +   int (*__regargs ioctl)(void *userinfo, int request, void *data)
  11642. + )
  11643. + {
  11644. +   int fd;
  11645. +   for (fd = 0; fd < max_files; fd++)
  11646. +       if (!files[fd].userinfo)
  11647. +     {
  11648. +       files[fd].userinfo = (void *)1;
  11649. +       break;
  11650. +     }
  11651. +   if (fd == max_files)
  11652. +     {
  11653. +       struct fileinfo *newfiles;
  11654. +       int i;
  11655. +       /* Increase files array by FILE_STEP */
  11656. +       max_files += FILE_STEP;
  11657. +       newfiles = (struct fileinfo *)malloc(max_files * sizeof(struct fileinfo));
  11658. +       if (!newfiles)
  11659. +     {
  11660. +       errno = ENOMEM;
  11661. +       return -1;
  11662. +     }
  11663. +       memcpy(newfiles, files, (max_files - FILE_STEP) * sizeof(struct fileinfo));
  11664. +       if (files) free(files);
  11665. +       files = newfiles;
  11666. +       for (i = max_files - FILE_STEP; i < max_files; i++) files[i].userinfo = 0;
  11667. +     }
  11668. +   files[fd].userinfo = userinfo;
  11669. +   files[fd].flags = flags;
  11670. +   files[fd].select_start = select_start;
  11671. +   files[fd].select_poll = select_poll;
  11672. +   files[fd].read = read;
  11673. +   files[fd].write = write;
  11674. +   files[fd].lseek = lseek;
  11675. +   files[fd].close = close;
  11676. +   files[fd].ioctl = ioctl;
  11677. +   return fd;
  11678. + }
  11679. + void _free_fd(int fd)
  11680. + {
  11681. +   if (0 <= fd && fd < max_files) files[fd].userinfo = 0;
  11682. + }
  11683. + struct fileinfo *_find_fd(int fd)
  11684. + {
  11685. +   if (0 <= fd && fd < max_files && files[fd].userinfo) return &files[fd];
  11686. +   errno = EBADF;
  11687. +   return 0;
  11688. + }
  11689. + int _last_fd(void) { return max_files; }
  11690. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/fstat.c emacs-18.59/amiga/unix/src/fstat.c
  11691. *** /src/baseline/emacs-18.59/amiga/unix/src/fstat.c    Thu Jan  1 00:00:00 1970
  11692. --- emacs-18.59/amiga/unix/src/fstat.c    Sat Oct 17 12:47:08 1992
  11693. ***************
  11694. *** 0 ****
  11695. --- 1,52 ----
  11696. + #include "amiga.h"
  11697. + #include "fibstat.h"
  11698. + #include <dos/dosextens.h>
  11699. + #include <utility/tagitem.h>
  11700. + #include <sys/types.h>
  11701. + #include <sys/stat.h>
  11702. + #include <amiga/ioctl.h>
  11703. + int fstat(int fd, struct stat *sbuf)
  11704. + {
  11705. +   BPTR fh;
  11706. +   struct FileInfoBlock *fib;
  11707. +   int ret;
  11708. +   chkabort();
  11709. +   if (ioctl(fd, _AMIGA_GET_FH, &fh) == -1) return -1;
  11710. +   if ((fib = AllocDosObjectTags(DOS_FIB, TAG_END)) && ExamineFH(fh, fib))
  11711. +     {
  11712. +       struct FileHandle *handle = BADDR(fh);
  11713. +       _lfibstat(NULL, fib, handle->fh_Type, 0, sbuf);
  11714. +       ret = 0;
  11715. +     }
  11716. +   else
  11717. +     {
  11718. +       int err = IoErr();
  11719. +       if (err == ERROR_ACTION_NOT_KNOWN)
  11720. +     /* Fake a stat result */
  11721. +     {
  11722. +       ret = 0;
  11723. +       sbuf->st_dev = (long)(((struct FileHandle *)BADDR(fh))->fh_Type);
  11724. +       sbuf->st_ino = 0;
  11725. +       sbuf->st_mode = 0777 | S_IFCHR;
  11726. +       sbuf->st_nlink = 1;
  11727. +       sbuf->st_uid = AMIGA_UID; sbuf->st_gid = AMIGA_GID;
  11728. +       sbuf->st_blksize = 512;
  11729. +       sbuf->st_blocks = 0;
  11730. +       sbuf->st_size = 0;
  11731. +       /* 1-Jan-1978 */
  11732. +       sbuf->st_ctime = sbuf->st_atime = sbuf->st_mtime = 252460800;
  11733. +     }
  11734. +       else
  11735. +     {
  11736. +       ret = -1;
  11737. +       errno = convert_oserr(err);
  11738. +     }
  11739. +     }
  11740. +   if (fib) FreeDosObject(DOS_FIB, fib);
  11741. +   ioctl(fd, _AMIGA_FREE_FH, &fh);
  11742. +   return ret;
  11743. + }
  11744. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/ftruncate.c emacs-18.59/amiga/unix/src/ftruncate.c
  11745. *** /src/baseline/emacs-18.59/amiga/unix/src/ftruncate.c    Thu Jan  1 00:00:00 1970
  11746. --- emacs-18.59/amiga/unix/src/ftruncate.c    Sun Jul 19 17:47:02 1992
  11747. ***************
  11748. *** 0 ****
  11749. --- 1,8 ----
  11750. + #include "amiga.h"
  11751. + #include <amiga/ioctl.h>
  11752. + int ftruncate(int fd, off_t length)
  11753. + {
  11754. +   chkabort();
  11755. +   return ioctl(fd, _AMIGA_TRUNCATE, &length);
  11756. + }
  11757. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/getenv.c emacs-18.59/amiga/unix/src/getenv.c
  11758. *** /src/baseline/emacs-18.59/amiga/unix/src/getenv.c    Thu Jan  1 00:00:00 1970
  11759. --- emacs-18.59/amiga/unix/src/getenv.c    Wed Dec  2 19:52:54 1992
  11760. ***************
  11761. *** 0 ****
  11762. --- 1,31 ----
  11763. + #include "amiga.h"
  11764. + #include <string.h>
  11765. + /* This getenv removes trailing newlines & multiple calls don't
  11766. +    destroy results */
  11767. + char *getenv (const char *varname)
  11768. + {
  11769. +   char *return_string;
  11770. +   char buf[64];
  11771. +   chkabort();
  11772. +   if (varname && varname[0])
  11773. +     {
  11774. +       int len, size;
  11775. +       len = GetVar(varname, buf, 64, LV_VAR);
  11776. +       if (len >= 0)
  11777. +     {
  11778. +       size = IoErr();
  11779. +       return_string = malloc(size + 1);
  11780. +       if (!return_string) return 0;
  11781. +       if (size != len)
  11782. +         {
  11783. +           if (GetVar(varname, return_string, size + 1, LV_VAR) > 0)
  11784. +         return return_string;
  11785. +         }
  11786. +       else return strcpy(return_string, buf);
  11787. +     }
  11788. +     }
  11789. +   return 0;
  11790. + }
  11791. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/gethostname.c emacs-18.59/amiga/unix/src/gethostname.c
  11792. *** /src/baseline/emacs-18.59/amiga/unix/src/gethostname.c    Thu Jan  1 00:00:00 1970
  11793. --- emacs-18.59/amiga/unix/src/gethostname.c    Sun Aug 16 10:56:12 1992
  11794. ***************
  11795. *** 0 ****
  11796. --- 1,11 ----
  11797. + #include "amiga.h"
  11798. + #include <unistd.h>
  11799. + extern char *_system_name;
  11800. + int gethostname(char *buf, int len)
  11801. + {
  11802. +   strncpy(buf, _system_name, len);
  11803. +   return 0;
  11804. + }
  11805. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/getpid.c emacs-18.59/amiga/unix/src/getpid.c
  11806. *** /src/baseline/emacs-18.59/amiga/unix/src/getpid.c    Thu Jan  1 00:00:00 1970
  11807. --- emacs-18.59/amiga/unix/src/getpid.c    Sun Oct 18 20:11:42 1992
  11808. ***************
  11809. *** 0 ****
  11810. --- 1,8 ----
  11811. + #include "amiga.h"
  11812. + #include "processes.h"
  11813. + int getpid(void)
  11814. + {
  11815. +   chkabort();
  11816. +   return _our_pid;
  11817. + }
  11818. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/getwd.c emacs-18.59/amiga/unix/src/getwd.c
  11819. *** /src/baseline/emacs-18.59/amiga/unix/src/getwd.c    Thu Jan  1 00:00:00 1970
  11820. --- emacs-18.59/amiga/unix/src/getwd.c    Sat Aug 15 11:22:30 1992
  11821. ***************
  11822. *** 0 ****
  11823. --- 1,8 ----
  11824. + #include "amiga.h"
  11825. + #include <sys/param.h>
  11826. + char *getwd (char *pathname)
  11827. + {
  11828. +   chkabort();
  11829. +   return getcwd(pathname, MAXPATHLEN);
  11830. + }
  11831. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/gid.c emacs-18.59/amiga/unix/src/gid.c
  11832. *** /src/baseline/emacs-18.59/amiga/unix/src/gid.c    Thu Jan  1 00:00:00 1970
  11833. --- emacs-18.59/amiga/unix/src/gid.c    Sun Jul 19 17:47:02 1992
  11834. ***************
  11835. *** 0 ****
  11836. --- 1,4 ----
  11837. + #include "amiga.h"
  11838. + gid_t getgid(void) { return AMIGA_GID; }
  11839. + gid_t getegid(void) { return AMIGA_GID; }
  11840. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/grp.c emacs-18.59/amiga/unix/src/grp.c
  11841. *** /src/baseline/emacs-18.59/amiga/unix/src/grp.c    Thu Jan  1 00:00:00 1970
  11842. --- emacs-18.59/amiga/unix/src/grp.c    Sun Jul 19 17:47:02 1992
  11843. ***************
  11844. *** 0 ****
  11845. --- 1,14 ----
  11846. + #include "amiga.h"
  11847. + #include <grp.h>
  11848. + static char *wheel_members[] = { "user", 0 };
  11849. + static struct group wheel = {
  11850. +   "wheel",
  11851. +   "",
  11852. +   AMIGA_GID,
  11853. +   wheel_members
  11854. + };
  11855. + struct group *getgrgid(gid_t gid) { return &wheel; }
  11856. + struct group *getgrnam(char *name) { return &wheel; }
  11857. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/index.c emacs-18.59/amiga/unix/src/index.c
  11858. *** /src/baseline/emacs-18.59/amiga/unix/src/index.c    Thu Jan  1 00:00:00 1970
  11859. --- emacs-18.59/amiga/unix/src/index.c    Wed Dec  2 20:22:34 1992
  11860. ***************
  11861. *** 0 ****
  11862. --- 1,8 ----
  11863. + #include <string.h>
  11864. + #undef index
  11865. + char *index(char *str, int c)
  11866. + {
  11867. +   return strchr(str, c);
  11868. + }
  11869. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/ioctl.c emacs-18.59/amiga/unix/src/ioctl.c
  11870. *** /src/baseline/emacs-18.59/amiga/unix/src/ioctl.c    Thu Jan  1 00:00:00 1970
  11871. --- emacs-18.59/amiga/unix/src/ioctl.c    Sun Jul 19 17:47:02 1992
  11872. ***************
  11873. *** 0 ****
  11874. --- 1,14 ----
  11875. + #include "amiga.h"
  11876. + #include "files.h"
  11877. + int ioctl(int fd, int request, caddr_t arg)
  11878. + {
  11879. +   struct fileinfo *fi;
  11880. +   chkabort();
  11881. +   if (fi = _find_fd(fd))
  11882. +     {
  11883. +       return fi->ioctl(fi->userinfo, request, arg);
  11884. +     }
  11885. +   return -1;
  11886. + }
  11887. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/isatty.c emacs-18.59/amiga/unix/src/isatty.c
  11888. *** /src/baseline/emacs-18.59/amiga/unix/src/isatty.c    Thu Jan  1 00:00:00 1970
  11889. --- emacs-18.59/amiga/unix/src/isatty.c    Sun Jul 19 17:47:02 1992
  11890. ***************
  11891. *** 0 ****
  11892. --- 1,11 ----
  11893. + #include "amiga.h"
  11894. + #include <amiga/ioctl.h>
  11895. + int isatty(int fd)
  11896. + {
  11897. +   int istty;
  11898. +   chkabort();
  11899. +   if (ioctl(fd, _AMIGA_INTERACTIVE, &istty) != 0) return 0;
  11900. +   return istty;
  11901. + }
  11902. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/kill.c emacs-18.59/amiga/unix/src/kill.c
  11903. *** /src/baseline/emacs-18.59/amiga/unix/src/kill.c    Thu Jan  1 00:00:00 1970
  11904. --- emacs-18.59/amiga/unix/src/kill.c    Fri Aug 14 19:48:34 1992
  11905. ***************
  11906. *** 0 ****
  11907. --- 1,74 ----
  11908. + #include "amiga.h"
  11909. + #include "signals.h"
  11910. + #include "processes.h"
  11911. + #include <exec/execbase.h>
  11912. + extern struct ExecBase *SysBase;
  11913. + static void break_list(struct List *tasks, BPTR fh)
  11914. + {
  11915. +   struct Process *p;
  11916. +   for (p = (struct Process *)tasks->lh_Head; p->pr_Task.tc_Node.ln_Succ;
  11917. +        p = (struct Process *)p->pr_Task.tc_Node.ln_Succ)
  11918. +     {
  11919. +       if (p->pr_Task.tc_Node.ln_Type == NT_PROCESS)
  11920. +     {
  11921. +       struct CommandLineInterface *cli = p->pr_CLI ? BADDR(p->pr_CLI) : 0;
  11922. +       if (p->pr_CIS == fh || p->pr_COS == fh || p->pr_CES == fh ||
  11923. +           cli && (cli->cli_StandardInput == fh || cli->cli_CurrentInput == fh ||
  11924. +               cli->cli_StandardOutput == fh || cli->cli_CurrentOutput == fh))
  11925. +         Signal(p, SIGBREAKF_CTRL_C | SIGBREAKF_CTRL_D);
  11926. +     }
  11927. +     }
  11928. + }
  11929. + static int magickill(BPTR fh, int signo)
  11930. + {
  11931. +   switch (signo)
  11932. +     {
  11933. +     case SIGINT: case SIGQUIT: case SIGKILL: case SIGHUP:
  11934. +       Forbid();
  11935. +       break_list(&SysBase->TaskReady, fh);
  11936. +       break_list(&SysBase->TaskWait, fh);
  11937. +       Permit();
  11938. +       return 0;
  11939. +     default: errno = EINVAL; return -1;
  11940. +     }
  11941. + }
  11942. + int kill(int pid, int signal)
  11943. + {
  11944. +   chkabort();
  11945. +   /* Our process list is now reasonably upto date */
  11946. +   if (pid < 0) pid = -pid;    /* Consider that each process is a pg unto itself */
  11947. +   if (pid == _our_pid) 
  11948. +     {
  11949. +       if (signal) _sig_dispatch(signal);
  11950. +       return 0;
  11951. +     }
  11952. +   else 
  11953. +     {
  11954. +       struct process *entry;
  11955. +       int killrc;
  11956. +       entry = _find_pid(pid);
  11957. +       if (!entry || entry->status != alive)
  11958. +     {
  11959. +       errno = ESRCH;
  11960. +       return -1;
  11961. +     }
  11962. +       if (!signal) return 0;
  11963. +       killrc = magickill(entry->input, signal);
  11964. +       if (signal == SIGKILL)
  11965. +     {
  11966. +       /* Fake the kill from emacs point of view */
  11967. +       entry->status = exited;
  11968. +       entry->rc = SIGKILL;
  11969. +       _sig_dispatch(SIGCHLD);
  11970. +       return 0;
  11971. +     }
  11972. +       return killrc;
  11973. +     }
  11974. + }
  11975. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/link.c emacs-18.59/amiga/unix/src/link.c
  11976. *** /src/baseline/emacs-18.59/amiga/unix/src/link.c    Thu Jan  1 00:00:00 1970
  11977. --- emacs-18.59/amiga/unix/src/link.c    Sun Jul 19 17:47:02 1992
  11978. ***************
  11979. *** 0 ****
  11980. --- 1,16 ----
  11981. + #include "amiga.h"
  11982. + int link(char *from, char *to)
  11983. + {
  11984. +   BPTR from_lock = Lock(from, ACCESS_READ);
  11985. +   chkabort();
  11986. +   if (from_lock)
  11987. +     {
  11988. +       int ok = MakeLink(to, from_lock, 0);
  11989. +       UnLock(from_lock);
  11990. +       if (ok) return 0;
  11991. +     }
  11992. +   ERROR;
  11993. + }
  11994. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/lseek.c emacs-18.59/amiga/unix/src/lseek.c
  11995. *** /src/baseline/emacs-18.59/amiga/unix/src/lseek.c    Thu Jan  1 00:00:00 1970
  11996. --- emacs-18.59/amiga/unix/src/lseek.c    Fri Dec  4 22:17:36 1992
  11997. ***************
  11998. *** 0 ****
  11999. --- 1,23 ----
  12000. + #include "amiga.h"
  12001. + #include "files.h"
  12002. + #include <fcntl.h>
  12003. + #undef lseek
  12004. + int __lseek(int fd, long rpos, int mode)
  12005. + {
  12006. +   struct fileinfo *fi;
  12007. +   chkabort();
  12008. +   if (fi = _find_fd(fd))
  12009. +     {
  12010. +       return fi->lseek(fi->userinfo, rpos, mode);
  12011. +     }
  12012. +   return -1;
  12013. + }
  12014. + int lseek(int fd, long rpos, int mode)
  12015. + {
  12016. +   return __lseek(fd, rpos, mode);
  12017. + }
  12018. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/message.c emacs-18.59/amiga/unix/src/message.c
  12019. *** /src/baseline/emacs-18.59/amiga/unix/src/message.c    Thu Jan  1 00:00:00 1970
  12020. --- emacs-18.59/amiga/unix/src/message.c    Fri Dec  4 21:18:50 1992
  12021. ***************
  12022. *** 0 ****
  12023. --- 1,78 ----
  12024. + #include "amiga.h"
  12025. + #include <intuition/intuition.h>
  12026. + #include <stdarg.h>
  12027. + static struct EasyStruct msg = {
  12028. +     sizeof (struct EasyStruct),
  12029. +     0,
  12030. +     NULL,
  12031. +     NULL,
  12032. +     "Ok",
  12033. + };
  12034. + static void message(char *format, long *args)
  12035. + /* Display a message which is as visible as possible (either to the console
  12036. +    or to as a requester).
  12037. +    Assume very little about library state */
  12038. + {
  12039. +   LONG msg_EasyRequestArgs(struct Window *window, struct EasyStruct *easyStruct,
  12040. +                ULONG *idcmpPtr, APTR args );
  12041. + #pragma libcall msg_IntuitionBase msg_EasyRequestArgs 24C BA9804
  12042. +   BPTR fh;
  12043. +   int close = FALSE;
  12044. +   extern char *_ProgramName;
  12045. +   extern struct WBStartup *_WBenchMsg;
  12046. +   fh = _us->pr_CES;
  12047. +   if (!fh)
  12048. +     if (!_WBenchMsg && (fh = Open("console:", MODE_OLDFILE))) close = TRUE;
  12049. +   if (fh)
  12050. +     {
  12051. +       VFPrintf(fh, "%s: ", &_ProgramName);
  12052. +       VFPrintf(fh, format, (long *)args);
  12053. +       FPutC(fh, '\n');
  12054. +       if (close) Close(fh);
  12055. +     }
  12056. +   else
  12057. +     {
  12058. +       struct Window *win = (struct Window *)_us->pr_WindowPtr;
  12059. +       if (win != (struct Window *)-1)
  12060. +     {
  12061. +       struct Library *msg_IntuitionBase = OpenLibrary("intuition.library", 37);
  12062. +       if (msg_IntuitionBase)
  12063. +         {
  12064. +           msg.es_Title = _ProgramName;
  12065. +           msg.es_TextFormat = format;
  12066. +           msg_EasyRequestArgs(win, &msg, 0, args);
  12067. +           CloseLibrary(msg_IntuitionBase);
  12068. +         }
  12069. +     }
  12070. +     }
  12071. + }
  12072. + void _message(char *format, ...)
  12073. + /* Display a message which is as visible as possible (either to the console
  12074. +    or to as a requester).
  12075. +    Assume very little about library state */
  12076. + {
  12077. +   va_list args;
  12078. +   va_start(args, format);
  12079. +   message(format, (long *)args);
  12080. + }
  12081. + void _fail(char *format, ...)
  12082. + /* Display a message which is as visible as possible (either to the console
  12083. +    or to as a requester).
  12084. +    Assume very little about library state.
  12085. +    Exit with error code RETURN_FAIL after that. */
  12086. + {
  12087. +   va_list args;
  12088. +   va_start(args, format);
  12089. +   message(format, (long *)args);
  12090. +   exit(RETURN_FAIL);        /* The library should always be cleanup-able */
  12091. + }
  12092. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/mkdir.c emacs-18.59/amiga/unix/src/mkdir.c
  12093. *** /src/baseline/emacs-18.59/amiga/unix/src/mkdir.c    Thu Jan  1 00:00:00 1970
  12094. --- emacs-18.59/amiga/unix/src/mkdir.c    Sat Sep 26 14:20:44 1992
  12095. ***************
  12096. *** 0 ****
  12097. --- 1,20 ----
  12098. + #include "amiga.h"
  12099. + #include <stdarg.h>
  12100. + int mkdir(char *name, mode_t mode)
  12101. + {
  12102. +   BPTR lock;
  12103. +   long amode;
  12104. +   chkabort();
  12105. +   if (lock = CreateDir(name))
  12106. +     {
  12107. +       UnLock(lock);
  12108. +       /* We remove script because mode 777 contains it by def, but it is
  12109. +          meaningless for directories */
  12110. +       amode = _make_protection(mode) & ~(FIBF_SCRIPT);
  12111. +       if (SetProtection(name, _make_protection(mode))) return 0;
  12112. +     }
  12113. +   ERROR;
  12114. + }
  12115. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/mkfifo.c emacs-18.59/amiga/unix/src/mkfifo.c
  12116. *** /src/baseline/emacs-18.59/amiga/unix/src/mkfifo.c    Thu Jan  1 00:00:00 1970
  12117. --- emacs-18.59/amiga/unix/src/mkfifo.c    Sun Jul 19 17:47:02 1992
  12118. ***************
  12119. *** 0 ****
  12120. --- 1,4 ----
  12121. + #include "amiga.h"
  12122. + int mkfifo(char *path, int mode, int dev) { errno = EOSERR; return -1; }
  12123. + int mknod(char *path, int mode, int dev) { errno = EOSERR; return -1; }
  12124. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/mktemp.c emacs-18.59/amiga/unix/src/mktemp.c
  12125. *** /src/baseline/emacs-18.59/amiga/unix/src/mktemp.c    Thu Jan  1 00:00:00 1970
  12126. --- emacs-18.59/amiga/unix/src/mktemp.c    Sat Aug 15 12:21:26 1992
  12127. ***************
  12128. *** 0 ****
  12129. --- 1,26 ----
  12130. + #include "amiga.h"
  12131. + #include <string.h>
  12132. + #include <stdio.h>
  12133. + char *mktemp(char *name)
  12134. + {
  12135. +   int l;
  12136. +   char *change = name + strlen(name) - 6;
  12137. +   char letter = 'a';
  12138. +   char id[9], *end_id;
  12139. +   chkabort();
  12140. +   _sprintf(id, "%lx", _us);
  12141. +   l = strlen(id);
  12142. +   end_id = l > 5 ? id + l - 5 : id;
  12143. +   _sprintf(change, "a%s", end_id);
  12144. +   while (letter <= 'z')
  12145. +     {
  12146. +       *change = letter;
  12147. +       if (access(name, 0)) return name;
  12148. +       letter++;
  12149. +     }
  12150. +   name[0] = '\0';
  12151. +   return name;
  12152. + }
  12153. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/open.c emacs-18.59/amiga/unix/src/open.c
  12154. *** /src/baseline/emacs-18.59/amiga/unix/src/open.c    Thu Jan  1 00:00:00 1970
  12155. --- emacs-18.59/amiga/unix/src/open.c    Fri Dec  4 22:16:48 1992
  12156. ***************
  12157. *** 0 ****
  12158. --- 1,141 ----
  12159. + #include "amiga.h"
  12160. + #include "files.h"
  12161. + #include "amigados.h"
  12162. + #include <utility/tagitem.h>
  12163. + #include <stdarg.h>
  12164. + #include <fcntl.h>
  12165. + #include <string.h>
  12166. + #undef open
  12167. + int __open(const char *path, int flags, ...)
  12168. + {
  12169. +   int fd, acc = flags & 3, rd, wr, exists = TRUE, amode;
  12170. +   struct FileInfoBlock *fib;
  12171. +   BPTR plock, fh;
  12172. +   long fdflags, protection;
  12173. +   APTR pwindow = _us->pr_WindowPtr;
  12174. +   ULONG create = MODE_READWRITE; /* Mode to use when creating files. */
  12175. +   chkabort();
  12176. +   rd = acc == O_RDONLY || acc == O_RDWR;
  12177. +   wr = acc == O_WRONLY || acc == O_RDWR;
  12178. +   if (stricmp(path, "NIL:") == 0) amode = -1;
  12179. +   else
  12180. +     {
  12181. +       _us->pr_WindowPtr = (APTR)-1;
  12182. +       plock = Lock(path, ACCESS_READ);
  12183. +       _us->pr_WindowPtr = pwindow;
  12184. +       if (!plock)
  12185. +     {
  12186. +       int err = convert_oserr(IoErr()), ok;
  12187. +       /* Devices like pipe: don't like Lock ... */
  12188. +       if (_OSERR == ERROR_ACTION_NOT_KNOWN ||
  12189. +           _OSERR == 0) /* Some devices (tape:) don't set IoErr() ... */
  12190. +         {
  12191. +           ok = TRUE;
  12192. +           /* Most non-lockable devices don't like MODE_READWRITE.
  12193. +          So we have to throw shareable files out the window */
  12194. +           create = MODE_NEWFILE;
  12195. +         }
  12196. +       else /* Missing file ok if we are creating. */ 
  12197. +         ok = err == ENOENT && (flags & O_CREAT);
  12198. +       if (ok)
  12199. +         {
  12200. +           va_list vmode;
  12201. +           exists = FALSE;
  12202. +           if (flags & O_CREAT)
  12203. +         {
  12204. +           if (flags & 0x8000) /* SAS C runtime called us, no mode */
  12205. +             amode = FIBF_EXECUTE; /* Maybe 0 ? */
  12206. +           else
  12207. +             {
  12208. +               va_start(vmode, flags);
  12209. +               amode = _make_protection(va_arg(vmode, int));
  12210. +               va_end(vmode);
  12211. +             }
  12212. +         }
  12213. +           else amode = -1;    /* Assume complete access */
  12214. +         }
  12215. +       else
  12216. +         {
  12217. +           errno = err;
  12218. +           return -1;
  12219. +         }
  12220. +     }
  12221. +       else /* File already exists, play with it */
  12222. +     {
  12223. +       /* Get protection */
  12224. +       if (!((fib = AllocDosObjectTags(DOS_FIB, TAG_END)) &&
  12225. +         Examine(plock, fib)))
  12226. +         {
  12227. +           if (fib) FreeDosObject(DOS_FIB, fib);
  12228. +           ERROR;
  12229. +         }
  12230. +       amode = fib->fib_Protection;
  12231. +       FreeDosObject(DOS_FIB, fib);
  12232. +       UnLock(plock);
  12233. +       /* Check access */
  12234. +       if ((flags & (O_CREAT | O_EXCL)) == (O_CREAT | O_EXCL))
  12235. +         {
  12236. +           errno = EEXIST;
  12237. +           return -1;
  12238. +         }
  12239. +       if ((rd && (amode & FIBF_READ) || wr && (amode & FIBF_WRITE)))
  12240. +         {
  12241. +           errno = EACCES;
  12242. +           return -1;
  12243. +         }
  12244. +       /* Truncate files, by opening in MODE_NEWFILE, then closing it.
  12245. +          This allows the file to be opened in shared mode after that (READWRITE or
  12246. +          OLDFILE), which is consistent with the unix semantics. */
  12247. +       if (flags & O_TRUNC)
  12248. +         {
  12249. +           BPTR tfh;
  12250. +           if (tfh = Open(path, MODE_NEWFILE)) Close(tfh);
  12251. +           else ERROR;
  12252. +         }
  12253. +     }
  12254. +     }
  12255. +   if (!(fh = Open(path, flags & O_CREAT ? create : MODE_OLDFILE)))
  12256. +     ERROR;
  12257. +   
  12258. +   /* Protection is set when file is closed because OFS & FFS
  12259. +      don't appreciate it being done on MODE_NEWFILE files. */
  12260. +   if ((flags & O_TRUNC) || !exists) protection = amode;
  12261. +   else protection = -1;
  12262. +   fdflags = 0;
  12263. +   if (rd) fdflags |= FI_READ;
  12264. +   if (wr) fdflags |= FI_WRITE;
  12265. +   if (flags & O_APPEND) fdflags |= O_APPEND;
  12266. +   fd = _alloc_amigafd(fh, protection, fdflags);
  12267. +   if (fd < 0)
  12268. +     {
  12269. +       _us->pr_WindowPtr = (APTR)-1;
  12270. +       Close(fh);
  12271. +       _us->pr_WindowPtr = pwindow;
  12272. +     }
  12273. +   return fd;
  12274. + }
  12275. + int open(const char *path, int flags, ...)
  12276. + {
  12277. +   va_list vmode;
  12278. +   va_start(vmode, flags);
  12279. +   return __open(path, flags, va_arg(vmode, int));
  12280. +   va_end(vmode);
  12281. + }
  12282. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/perror.c emacs-18.59/amiga/unix/src/perror.c
  12283. *** /src/baseline/emacs-18.59/amiga/unix/src/perror.c    Thu Jan  1 00:00:00 1970
  12284. --- emacs-18.59/amiga/unix/src/perror.c    Wed Dec  2 20:24:48 1992
  12285. ***************
  12286. *** 0 ****
  12287. --- 1,26 ----
  12288. + #include "amiga.h"
  12289. + #include <errno.h>
  12290. + #include <string.h>
  12291. + #include <unistd.h>
  12292. + void perror(const char *s)
  12293. + {
  12294. +   char *err;
  12295. +   char amiga_err[81];
  12296. +   if (s && *s) 
  12297. +     {
  12298. +       write(2, s, strlen(s));
  12299. +       write(2, ": ", 2);
  12300. +     }
  12301. +   if (errno > 0 && errno <= sys_nerr) err = sys_errlist[errno];
  12302. +   else if (errno == -1) 
  12303. +     {
  12304. +       if (Fault(_OSERR, NULL, amiga_err, 81)) err = amiga_err;
  12305. +       else err = "42";        /* Shouldn't appear ... */
  12306. +     }
  12307. +   else err = "Unknown error code";
  12308. +   write(2, err, strlen(err));
  12309. +   write(2, "\n", 1);
  12310. + }
  12311. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/pipe.c emacs-18.59/amiga/unix/src/pipe.c
  12312. *** /src/baseline/emacs-18.59/amiga/unix/src/pipe.c    Thu Jan  1 00:00:00 1970
  12313. --- emacs-18.59/amiga/unix/src/pipe.c    Sun Dec  6 13:14:56 1992
  12314. ***************
  12315. *** 0 ****
  12316. --- 1,354 ----
  12317. + #include "amiga.h"
  12318. + #include "files.h"
  12319. + #include "fifofd.h"
  12320. + #include "signals.h"
  12321. + #include <sys/filio.h>
  12322. + #include <fcntl.h>
  12323. + #include <signal.h>
  12324. + #include <string.h>
  12325. + #include <stdio.h>
  12326. + #include <exec/memory.h>
  12327. + #include <amiga/ioctl.h>
  12328. + /* The pipe system call, using fifo: */
  12329. + static struct MsgPort *create_fifo_port(void)
  12330. + {
  12331. +   struct MsgPort *port = AllocMem(sizeof(*port), MEMF_CLEAR | MEMF_PUBLIC);
  12332. +   if (!port) return 0;
  12333. +   port->mp_Node.ln_Type = NT_MSGPORT;
  12334. +   port->mp_Flags = PA_SIGNAL;
  12335. +   port->mp_SigBit = _fifo_sig;
  12336. +   port->mp_SigTask = _us;
  12337. +   NewList(&port->mp_MsgList);
  12338. +   return port;
  12339. + }
  12340. + static void delete_fifo_port(struct MsgPort *port)
  12341. + {
  12342. +   FreeMem(port, sizeof(*port));
  12343. + }
  12344. + static void free_fifo(struct fifoinfo *fi)
  12345. + {
  12346. +   if (fi->rfifo) CloseFifo(fi->rfifo, 0);
  12347. +   if (fi->wfifo) CloseFifo(fi->wfifo, FIFOF_EOF);
  12348. +   if (fi->rmsg) free(fi->rmsg);
  12349. +   if (fi->wmsg) free(fi->wmsg);
  12350. +   delete_fifo_port(fi->reply);
  12351. +   free(fi);
  12352. + }
  12353. + /* Code for fd's describing fifos */
  12354. + static ULONG __regargs fifo_select_start(void *userinfo, int rd, int wr)
  12355. + {
  12356. +   struct fifoinfo *fi = userinfo;
  12357. +   if (rd) RequestFifo(fi->rfifo, fi->rmsg, FREQ_RPEND);
  12358. +   if (wr) RequestFifo(fi->wfifo, fi->wmsg, FREQ_WAVAIL);
  12359. +   return 1UL << _fifo_sig;
  12360. + }
  12361. + static void __regargs fifo_select_poll(void *userinfo, int *rd, int *wr)
  12362. + {
  12363. +   struct fifoinfo *fi = userinfo;
  12364. +   int rabort = *rd, wabort = *wr;
  12365. +   struct Message *msg;
  12366. +   while (msg = GetMsg(fi->reply))
  12367. +     {
  12368. +       if (msg == fi->rmsg) rabort = 0;
  12369. +       else if (msg == fi->wmsg) wabort = 0;
  12370. +     }
  12371. +   if (rabort)
  12372. +     {
  12373. +       *rd = 0;
  12374. +       RequestFifo(fi->rfifo, fi->rmsg, FREQ_ABORT);
  12375. +     }
  12376. +   if (wabort)
  12377. +     {
  12378. +       *wr = 0;
  12379. +       RequestFifo(fi->wfifo, fi->wmsg, FREQ_ABORT);
  12380. +     }
  12381. +   while (rabort || wabort)
  12382. +     {
  12383. +       while (!(msg = GetMsg(fi->reply))) Wait(1UL << _fifo_sig);
  12384. +       if (msg == fi->rmsg) rabort = 0;
  12385. +       else if (msg == fi->wmsg) wabort = 0;
  12386. +     }
  12387. +   /* Clear any signals we may have left behind */
  12388. +   SetSignal(0, 1UL << _fifo_sig);
  12389. + }
  12390. + /* Using 4.2BSD style semantics, with reads from fifo's returning immediately when
  12391. +    data is available, and blocking for empty fifo's only when O_NDELAY was not
  12392. +    specified on open */
  12393. + static int __regargs fifo_read(void *userinfo, void *buffer, unsigned int length)
  12394. + {
  12395. +   struct fifoinfo *fi = userinfo;
  12396. +   char *chars;
  12397. +   long ready;
  12398. +   while (!(ready = ReadFifo(fi->rfifo, &chars, fi->skip)))
  12399. +     {
  12400. +       ULONG sigs;
  12401. +       fi->skip = 0;
  12402. +       if (fi->flags & O_NDELAY)
  12403. +     {
  12404. +       errno = EWOULDBLOCK;
  12405. +       return -1;
  12406. +     }
  12407. +       Delay(1);            /* Perversely, this improves the performance */
  12408. +       RequestFifo(fi->rfifo, fi->rmsg, FREQ_RPEND);
  12409. +       sigs = _wait_signals(1L << fi->reply->mp_SigBit);
  12410. +       RequestFifo(fi->rfifo, fi->rmsg, FREQ_ABORT);
  12411. +       while (!GetMsg(fi->reply)) Wait(1UL << _fifo_sig);
  12412. +       _handle_signals(sigs);
  12413. +     }
  12414. +   if (ready == -1) ready = 0;
  12415. +   if (ready > length) ready = length;
  12416. +   memcpy(buffer, chars, ready);
  12417. +   fi->skip = ready;
  12418. +   return (int)ready;
  12419. + }
  12420. + static int __regargs fifo_write(void *userinfo, void *_buffer, unsigned int length)
  12421. + {
  12422. +   struct fifoinfo *fi = userinfo;
  12423. +   long cansend, written;
  12424. +   char *buffer = _buffer;
  12425. +   if (length == 0)        /* Send EOF */
  12426. +     {
  12427. +       char *fname, sname[FIFO_NAMELEN + 2], mname[FIFO_NAMELEN + 2];
  12428. +       /* Send EOF */
  12429. +       CloseFifo(fi->wfifo, FIFOF_EOF);
  12430. +       /* And reopen fifo */
  12431. +       /* Docs say that this clears EOF flag, maybe we should wait a bit ? */
  12432. +       /* The writer is the "master" in fifo: terms */
  12433. +       strcpy(mname, fi->name); strcat(mname, "_m");
  12434. +       strcpy(sname, fi->name); strcat(sname, "_s");
  12435. +       fname = !(fi->flags & FI_READ) || (fi->flags & FIFO_MASTER) ? mname : sname;
  12436. +       fi->wfifo = OpenFifo(fname, FIFO_BUFSIZE, FIFOF_NORMAL | FIFOF_NBIO |
  12437. +                FIFOF_WRITE | FIFOF_RREQUIRED);
  12438. +       if (fi->wfifo)
  12439. +     {
  12440. +       fi->maxsend = BufSizeFifo(fi->wfifo) / 2;
  12441. +       return 0;
  12442. +     }
  12443. +       /* We're in trouble. From now on, all writes will fail */
  12444. +     }
  12445. +   else if (fi->wfifo)
  12446. +     {
  12447. +       cansend = fi->maxsend;
  12448. +       written = 0;
  12449. +       while (length > 0)
  12450. +     {
  12451. +       long sent;
  12452. +       if (cansend > length) cansend = length;
  12453. +       while ((sent = WriteFifo(fi->wfifo, buffer, cansend)) == 0)
  12454. +         {
  12455. +           ULONG sigs;
  12456. +           int signaled;
  12457. +           if (fi->flags & O_NDELAY)
  12458. +         {
  12459. +           if (written != 0) return (int)written;
  12460. +           errno = EWOULDBLOCK;
  12461. +           return -1;
  12462. +         }
  12463. +           RequestFifo(fi->wfifo, fi->wmsg, FREQ_WAVAIL);
  12464. +           sigs = _wait_signals(1L << fi->reply->mp_SigBit);
  12465. +           RequestFifo(fi->wfifo, fi->wmsg, FREQ_ABORT);
  12466. +           while (!GetMsg(fi->reply)) Wait(1UL << _fifo_sig);
  12467. +           signaled = _handle_signals(sigs);
  12468. +           if (signaled && written != 0) return (int)written;
  12469. +         }
  12470. +       if (sent < 0) /* Some problem has occured */ goto fail;
  12471. +       written += sent;
  12472. +       length -= sent;
  12473. +       buffer += sent;
  12474. +     }
  12475. +       return (int)written;
  12476. +     }
  12477. +  fail:
  12478. +   /* Some problem has occured */
  12479. +   _sig_dispatch(SIGPIPE);
  12480. +   errno = EPIPE;
  12481. +   return -1;
  12482. + }
  12483. + static int __regargs fifo_lseek(void *userinfo, long rpos, int mode)
  12484. + {
  12485. +   errno = ESPIPE;
  12486. +   return -1;
  12487. + }
  12488. + static int __regargs fifo_close(void *userinfo, int internal)
  12489. + {
  12490. +   struct fifoinfo *fi = userinfo;
  12491. +   free_fifo(fi);
  12492. +   return 0;
  12493. + }
  12494. + static int __regargs fifo_ioctl(void *userinfo, int request, void *data)
  12495. + {
  12496. +   struct fifoinfo *fi = userinfo;
  12497. +   switch (request)
  12498. +     {
  12499. +     case FIONBIO:
  12500. +       if (*(int *)data) fi->flags |= O_NDELAY;
  12501. +       else fi->flags &= ~O_NDELAY;
  12502. +       return 0;
  12503. +     case _AMIGA_GET_FH: {
  12504. +       BPTR *fh = data;
  12505. +       char name[FIFO_NAMELEN + 12];
  12506. +       /* Get an AmigaDOS fifo: onto the same fifo in the same role */
  12507. +       if ((fi->flags & (FI_READ | FI_WRITE)) == (FI_READ | FI_WRITE))
  12508. +     _sprintf(name, "fifo:%s/rwesK%s",
  12509. +          fi->name, fi->flags & FIFO_MASTER ? "m" : "");
  12510. +       else if (fi->flags & FI_READ) _sprintf(name, "fifo:%s/r", fi->name);
  12511. +       else _sprintf(name, "fifo:%s/mweK", fi->name);
  12512. +       *fh = Open(name, MODE_OLDFILE);
  12513. +       if (*fh) return 0;
  12514. +       ERROR;
  12515. +     }
  12516. +     case _AMIGA_FREE_FH: {
  12517. +       BPTR *fh = data;
  12518. +       if (*fh) Close(*fh);
  12519. +       return 0;
  12520. +     }
  12521. +     default: errno = EINVAL; return -1;
  12522. +     }
  12523. + }
  12524. + static int alloc_fifo(char *name, int reader, int writer, int master)
  12525. + {
  12526. +   struct fifoinfo *fi;
  12527. +   int fd;
  12528. +   struct MsgPort *reply = 0;
  12529. +   struct Message *rmsg = 0, *wmsg = 0;
  12530. +   if ((fi = (struct fifoinfo *)malloc(sizeof(struct fifoinfo))) &&
  12531. +       (reply = create_fifo_port()) &&
  12532. +       (rmsg = (struct Message *)malloc(sizeof(struct Message))) &&
  12533. +       (wmsg = (struct Message *)malloc(sizeof(struct Message))))
  12534. +     {
  12535. +       rmsg->mn_Node.ln_Type = NT_MESSAGE;
  12536. +       rmsg->mn_ReplyPort = reply;
  12537. +       rmsg->mn_Length = sizeof(*rmsg);
  12538. +       wmsg->mn_Node.ln_Type = NT_MESSAGE;
  12539. +       wmsg->mn_ReplyPort = reply;
  12540. +       wmsg->mn_Length = sizeof(*wmsg);
  12541. +       fi->reply = reply;
  12542. +       fi->rmsg = rmsg;
  12543. +       fi->wmsg = wmsg;
  12544. +       fi->rfifo = fi->wfifo = 0;
  12545. +       fi->flags = 0;
  12546. +       if (reader) fi->flags |= FI_READ;
  12547. +       if (writer) fi->flags |= FI_WRITE;
  12548. +       fd = _alloc_fd(fi, fi->flags, fifo_select_start, fifo_select_poll, fifo_read,
  12549. +              fifo_write, fifo_lseek, fifo_close, fifo_ioctl);
  12550. +       if (fd)
  12551. +     {
  12552. +       char *fname, sname[FIFO_NAMELEN + 2], mname[FIFO_NAMELEN + 2];
  12553. +       if (master) fi->flags |= FIFO_MASTER;
  12554. +       strcpy(fi->name, name);
  12555. +       /* The writer is the "master" in fifo: terms */
  12556. +       strcpy(mname, fi->name); strcat(mname, "_m");
  12557. +       strcpy(sname, fi->name); strcat(sname, "_s");
  12558. +       if (reader)
  12559. +         {
  12560. +           fname = !writer || !master ? mname : sname;
  12561. +           fi->rfifo = OpenFifo(fname, FIFO_BUFSIZE, FIFOF_NORMAL | FIFOF_NBIO |
  12562. +                    FIFOF_READ);
  12563. +         }
  12564. +       if (writer)
  12565. +         {
  12566. +           fname = !reader || master ? mname : sname;
  12567. +           fi->wfifo = OpenFifo(fname, FIFO_BUFSIZE, FIFOF_NORMAL | FIFOF_NBIO |
  12568. +                    FIFOF_WRITE | FIFOF_RREQUIRED);
  12569. +         }
  12570. +       if ((fi->rfifo || !reader) && (fi->wfifo || !writer))
  12571. +         {
  12572. +           if (fi->wfifo) fi->maxsend = BufSizeFifo(fi->wfifo) / 2;
  12573. +           fi->skip = 0;
  12574. +           return fd;
  12575. +         }
  12576. +       if (fi->rfifo) CloseFifo(fi->rfifo, 0);
  12577. +       if (fi->wfifo) CloseFifo(fi->wfifo, 0);
  12578. +     }
  12579. +       if (fd >= 0) _free_fd(fd);
  12580. +     }
  12581. +   if (rmsg) free(rmsg);
  12582. +   if (wmsg) free(wmsg);
  12583. +   if (reply) delete_fifo_port(reply);
  12584. +   if (fi) free(fi);
  12585. +   return -1;
  12586. + }
  12587. + int pipe(int fd[2])
  12588. + {
  12589. +   char name[FIFO_NAMELEN];
  12590. +   struct fileinfo *f0;
  12591. +   chkabort();
  12592. +   if (!_fifo_ok)
  12593. +     {
  12594. +       errno = ENXIO;
  12595. +       return -1;
  12596. +     }
  12597. +   _sprintf(name, "uxfifo.%lx", _fifo_base + _fifo_offset++);
  12598. +   if ((fd[0] = alloc_fifo(name, TRUE, FALSE, FALSE)) >= 0)
  12599. +     if ((fd[1] = alloc_fifo(name, FALSE, TRUE, FALSE)) >= 0) return 0;
  12600. +     else
  12601. +       {
  12602. +     if (f0 = _find_fd(fd[0])) free_fifo(f0->userinfo);
  12603. +     _free_fd(fd[0]);
  12604. +       }
  12605. +   return -1;
  12606. + }
  12607. + int socketpair(int domain, int type, int protocol, int sv[2])
  12608. + {
  12609. +   char name[FIFO_NAMELEN];
  12610. +   struct fileinfo *f0;
  12611. +   chkabort();
  12612. +   if (!_fifo_ok)
  12613. +     {
  12614. +       errno = ENXIO;
  12615. +       return -1;
  12616. +     }
  12617. +   _sprintf(name, "uxfifo.%lx", _fifo_base + _fifo_offset++);
  12618. +   if ((sv[0] = alloc_fifo(name, TRUE, TRUE, TRUE)) >= 0)
  12619. +     if ((sv[1] = alloc_fifo(name, TRUE, TRUE, FALSE)) >= 0) return 0;
  12620. +     else
  12621. +       {
  12622. +     if (f0 = _find_fd(sv[0])) free_fifo(f0->userinfo);
  12623. +     _free_fd(sv[0]);
  12624. +       }
  12625. +   return -1;
  12626. + }
  12627. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/popen.c emacs-18.59/amiga/unix/src/popen.c
  12628. *** /src/baseline/emacs-18.59/amiga/unix/src/popen.c    Thu Jan  1 00:00:00 1970
  12629. --- emacs-18.59/amiga/unix/src/popen.c    Sun Oct 25 11:25:20 1992
  12630. ***************
  12631. *** 0 ****
  12632. --- 1,93 ----
  12633. + #include "amiga.h"
  12634. + #include "processes.h"
  12635. + #include "fifofd.h"
  12636. + #include <amiga/ioctl.h>
  12637. + #include <exec/memory.h>
  12638. + #include <dos/dosextens.h>
  12639. + #include <dos/dostags.h>
  12640. + #include <string.h>
  12641. + struct pprocess
  12642. + {
  12643. +   struct pprocess *next;
  12644. +   FILE *f;
  12645. +   int pid;
  12646. + };
  12647. + static struct pprocess *_pplist;
  12648. + FILE *popen(char *command, char *type)
  12649. + {
  12650. +   FILE *pipe;
  12651. +   BPTR in, out;
  12652. +   int close_in, close_out;
  12653. +   char pname[24];
  12654. +   struct pprocess *pp = (struct pprocess *)malloc(sizeof(struct pprocess));
  12655. +   _sprintf(pname, "pipe:uxopen.%lx", _fifo_base + _fifo_offset++);
  12656. +   if (type[0] == 'w' && type[1] == '\0')
  12657. +     {
  12658. +       pipe = fopen(pname, "w");
  12659. +       out = Output(); close_out = FALSE;
  12660. +       in = Open(pname, MODE_OLDFILE); close_in = TRUE;
  12661. +     }
  12662. +   else if (type[0] == 'r' && type[1] == '\0')
  12663. +     {
  12664. +       pipe = fopen(pname, "r");
  12665. +       in = Input(); close_in = FALSE;
  12666. +       out = Open(pname, MODE_NEWFILE); close_out = TRUE;
  12667. +     }
  12668. +   else
  12669. +     {
  12670. +       errno = EINVAL;
  12671. +       return NULL;
  12672. +     }
  12673. +   if (!in || !out) _seterr();
  12674. +   if (pipe && in && out && pp)
  12675. +     {
  12676. +       pp->pid = _start_process(command, in, close_in, out, close_out,
  12677. +                    -1, FALSE, 0, 0);
  12678. +       
  12679. +       if (pp->pid)
  12680. +     {
  12681. +       pp->next = _pplist;
  12682. +       _pplist = pp;
  12683. +       pp->f = pipe;
  12684. +       return pipe;
  12685. +     }
  12686. +     }
  12687. +   if (pp) free(pp);
  12688. +   if (in && close_in) Close(in);
  12689. +   if (out && close_out) Close(out);
  12690. +   if (pipe) fclose(pipe);
  12691. +   return NULL;
  12692. + }
  12693. + int pclose(FILE *f)
  12694. + {
  12695. +   struct pprocess **scan = &_pplist;
  12696. +   while (*scan)
  12697. +     {
  12698. +       if ((*scan)->f == f) /* found */
  12699. +     {
  12700. +       struct pprocess *son = *scan;
  12701. +       int status;
  12702. +       int pid = son->pid;
  12703. +       *scan = son->next;    /* Remove process from list */
  12704. +       fclose(son->f);
  12705. +       free(son);
  12706. +       /* Wait for process to terminate */
  12707. +       if (waitpid(pid, &status, NULL) >= 0) return status;
  12708. +       return -1;
  12709. +     }
  12710. +       scan = &(*scan)->next;
  12711. +     }
  12712. +   return -1;
  12713. + }
  12714. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/processes.c emacs-18.59/amiga/unix/src/processes.c
  12715. *** /src/baseline/emacs-18.59/amiga/unix/src/processes.c    Thu Jan  1 00:00:00 1970
  12716. --- emacs-18.59/amiga/unix/src/processes.c    Sat Sep 26 11:26:36 1992
  12717. ***************
  12718. *** 0 ****
  12719. --- 1,56 ----
  12720. + #include "amiga.h"
  12721. + #include <clib/alib_protos.h>
  12722. + #include "processes.h"
  12723. + int _next_pid, _our_pid;
  12724. + struct MinList _processes;
  12725. + char _door_name[DOOR_LEN];
  12726. + struct MsgPort *_children_exit;
  12727. + struct MsgPort *_startup_port;
  12728. + void _free_entry(struct process *p)
  12729. + {
  12730. +   Remove((struct Node *)p);
  12731. +   free(p);
  12732. + }
  12733. + struct process *_find_pid(int pid)
  12734. + {
  12735. +   struct process *entry;
  12736. +   scan_processes (entry) if (entry->pid == pid) return entry;
  12737. +   return 0;
  12738. + }
  12739. + void _init_processes(void)
  12740. + {
  12741. +   NewList((struct List *)&_processes);
  12742. +   /* Choose a fairly unique pid for ourselves, but keep it within a range
  12743. +      which guarantees positive pid's for all created processes.
  12744. +      This range is further restricted to 23 bits so that a pid fits within the
  12745. +      range of an emacs number (generally 24 bits, though it is 26 on the Amiga) */
  12746. +   _our_pid = ((int)_us ^ _startup_time) & 0x7fffff;
  12747. +   _next_pid = _our_pid + 1;
  12748. +   _sprintf(_door_name, "door.%lx.%lx", _us, _startup_time);
  12749. +   if ((_startup_port = CreateMsgPort()) &&
  12750. +       (_children_exit = CreatePort(_door_name, 0))) return;
  12751. +   _fail("No memory");
  12752. + }
  12753. + void _cleanup_processes(void)
  12754. + {
  12755. +   if (_startup_port) DeleteMsgPort(_startup_port);
  12756. +   if (_children_exit)
  12757. +     {
  12758. +       struct exit_message *msg;
  12759. +       Forbid();
  12760. +       while (msg = (struct exit_message *)GetMsg(_children_exit))
  12761. +     FreeMem(msg, sizeof(struct exit_message));
  12762. +       DeletePort(_children_exit);
  12763. +       Permit();
  12764. +     }
  12765. + }
  12766. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/processes.h emacs-18.59/amiga/unix/src/processes.h
  12767. *** /src/baseline/emacs-18.59/amiga/unix/src/processes.h    Thu Jan  1 00:00:00 1970
  12768. --- emacs-18.59/amiga/unix/src/processes.h    Mon Oct 19 21:28:30 1992
  12769. ***************
  12770. *** 0 ****
  12771. --- 1,46 ----
  12772. + #ifndef _PROCESSES_H
  12773. + #define _PROCESSES_H_
  12774. + struct process
  12775. + {
  12776. +     struct MinNode node;
  12777. +     struct Task *process;
  12778. +     int pid;
  12779. +     BPTR input;
  12780. +     enum { alive, exited } status;
  12781. +     int rc;
  12782. + };
  12783. + struct exit_message        /* Sent by children when exiting */
  12784. + {
  12785. +   struct Message m;
  12786. +   int pid;
  12787. +   int rc;
  12788. + };
  12789. + extern int _next_pid, _our_pid;
  12790. + extern struct MinList _processes;
  12791. + #define DOOR_LEN 32
  12792. + extern char _door_name[DOOR_LEN];
  12793. + extern struct MsgPort *_children_exit;
  12794. + extern struct MsgPort *_startup_port;
  12795. + #define scan_processes(p) for (p = (struct process *)_processes.mlh_Head; \
  12796. +                    p->node.mln_Succ; \
  12797. +                    p = (struct process *)p->node.mln_Succ)
  12798. + #define no_processes() (_processes.mlh_Head->mln_Succ == 0)
  12799. + void _free_entry(struct process *p);
  12800. + struct process *_find_pid(int pid);
  12801. + void _init_processes(void);
  12802. + void _cleanup_processes(void);
  12803. + int _start_process(char *command,
  12804. +            BPTR input, int close_input,
  12805. +            BPTR output, int close_output,
  12806. +            BPTR error, int close_error,
  12807. +            BPTR dir,
  12808. +            long stacksize);
  12809. + #endif
  12810. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/protection.c emacs-18.59/amiga/unix/src/protection.c
  12811. *** /src/baseline/emacs-18.59/amiga/unix/src/protection.c    Thu Jan  1 00:00:00 1970
  12812. --- emacs-18.59/amiga/unix/src/protection.c    Sat Aug  8 22:13:32 1992
  12813. ***************
  12814. *** 0 ****
  12815. --- 1,73 ----
  12816. + #include "amiga.h"
  12817. + #include <sys/stat.h>
  12818. + int use_amiga_flags;
  12819. + int _make_protection(int mode)
  12820. + {
  12821. +   int amode;
  12822. +   if (use_amiga_flags) return mode;
  12823. +   /* We always turn archive off */
  12824. +   amode = 0;
  12825. +   /* Read: if any unix read */
  12826. +   if (mode & (S_IRUSR | S_IRGRP | S_IROTH)) amode |= FIBF_READ;
  12827. +   /* Write: if user write or group write
  12828. +      Delete: if user write or world write */
  12829. +   if (mode & S_IWUSR) amode |= FIBF_WRITE | FIBF_DELETE;
  12830. +   if (mode & S_IWGRP) amode |= FIBF_WRITE;
  12831. +   if (mode & S_IWOTH) amode |= FIBF_DELETE;
  12832. +   /* Execute: if group execute or user execute and not world execute
  12833. +      Script: if world execute or user execute ant not group execute */
  12834. +   if (mode & S_IXGRP) amode |= FIBF_EXECUTE;
  12835. +   if (mode & S_IXOTH) amode |= FIBF_SCRIPT;
  12836. +   if ((mode & (S_IXUSR | S_IXGRP | S_IXOTH)) == S_IXUSR)
  12837. +     amode |= FIBF_EXECUTE | FIBF_SCRIPT;
  12838. +   /* Pure: if sticky */
  12839. +   if (mode & S_ISVTX) amode |= FIBF_PURE;
  12840. +   /* Make correct bits active 0 */
  12841. +   amode ^= FIBF_READ | FIBF_WRITE | FIBF_EXECUTE | FIBF_DELETE;
  12842. +   return amode;
  12843. + }
  12844. + int _make_mode(int protection)
  12845. + {
  12846. +     int mode;
  12847. +     if (use_amiga_flags) return protection & ~S_IFMT;
  12848. +     mode = 0;
  12849. +     /* make all bits active 1 */
  12850. +     protection ^= FIBF_READ | FIBF_WRITE | FIBF_EXECUTE | FIBF_DELETE;
  12851. +     /* Read user, group, world if amiga read */
  12852. +     if (protection & FIBF_READ) mode |= S_IRUSR | S_IRGRP | S_IROTH;
  12853. +     /* Write:
  12854. +          user if amiga write & delete
  12855. +      group if amiga write
  12856. +      other if amiga delete */
  12857. +     if ((protection & (FIBF_WRITE | FIBF_DELETE)) == (FIBF_WRITE | FIBF_DELETE))
  12858. +       mode |= S_IWUSR;
  12859. +     if (protection & FIBF_WRITE) mode |= S_IWGRP;
  12860. +     if (protection & FIBF_DELETE) mode |= S_IWOTH;
  12861. +     /* Execute:
  12862. +          user if amiga execute or script
  12863. +      group if amiga execute
  12864. +      world if amiga script */
  12865. +     if (protection & (FIBF_EXECUTE | FIBF_SCRIPT)) mode |= S_IXUSR;
  12866. +     if (protection & FIBF_EXECUTE) mode |= S_IXGRP;
  12867. +     if (protection & FIBF_SCRIPT) mode |= S_IXOTH;
  12868. +     /* Sticky: if pure */
  12869. +     if (protection & FIBF_PURE) mode |= S_ISVTX;
  12870. +     return mode;
  12871. + }
  12872. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/pseudo_c.c emacs-18.59/amiga/unix/src/pseudo_c.c
  12873. *** /src/baseline/emacs-18.59/amiga/unix/src/pseudo_c.c    Thu Jan  1 00:00:00 1970
  12874. --- emacs-18.59/amiga/unix/src/pseudo_c.c    Fri Aug 14 18:13:46 1992
  12875. ***************
  12876. *** 0 ****
  12877. --- 1,18 ----
  12878. + #include "amiga.h"
  12879. + #include "files.h"
  12880. + #include <fcntl.h>
  12881. + int _pseudo_close(int fd)
  12882. + {
  12883. +   struct fileinfo *fi;
  12884. +   chkabort();
  12885. +   if (fi = _find_fd(fd))
  12886. +     {
  12887. +       int err = fi->close(fi->userinfo, TRUE);
  12888. +       _free_fd(fd);
  12889. +       return err;
  12890. +     }
  12891. +   return -1;
  12892. + }
  12893. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/pwd.c emacs-18.59/amiga/unix/src/pwd.c
  12894. *** /src/baseline/emacs-18.59/amiga/unix/src/pwd.c    Thu Jan  1 00:00:00 1970
  12895. --- emacs-18.59/amiga/unix/src/pwd.c    Sun Sep 20 09:36:52 1992
  12896. ***************
  12897. *** 0 ****
  12898. --- 1,13 ----
  12899. + #include "amiga.h"
  12900. + #include <pwd.h>
  12901. + struct passwd _amiga_user = {
  12902. +   NULL, "",
  12903. +   AMIGA_UID, AMIGA_GID,
  12904. +   0, "", NULL,
  12905. +   NULL, NULL
  12906. +   };
  12907. + struct passwd *getpwuid(uid_t uid) { return &_amiga_user; }
  12908. + struct passwd *getpwnam(char *name) { return &_amiga_user; }
  12909. + char *getlogin(void) { return _amiga_user.pw_name; }
  12910. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/read.c emacs-18.59/amiga/unix/src/read.c
  12911. *** /src/baseline/emacs-18.59/amiga/unix/src/read.c    Thu Jan  1 00:00:00 1970
  12912. --- emacs-18.59/amiga/unix/src/read.c    Fri Dec  4 22:17:24 1992
  12913. ***************
  12914. *** 0 ****
  12915. --- 1,24 ----
  12916. + #include "amiga.h"
  12917. + #include "files.h"
  12918. + #include <fcntl.h>
  12919. + #undef read
  12920. + int __read(int fd, void *buffer, unsigned int length)
  12921. + {
  12922. +   struct fileinfo *fi;
  12923. +   chkabort();
  12924. +   if (fi = _find_fd(fd))
  12925. +     {
  12926. +       if (fi->flags & FI_READ) return fi->read(fi->userinfo, buffer, length);
  12927. +       errno = EACCES;
  12928. +     }
  12929. +   return -1;
  12930. + }
  12931. + int read(int fd, void *buffer, unsigned int length)
  12932. + {
  12933. +   return __read(fd, buffer, length);
  12934. + }
  12935. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/readlink.c emacs-18.59/amiga/unix/src/readlink.c
  12936. *** /src/baseline/emacs-18.59/amiga/unix/src/readlink.c    Thu Jan  1 00:00:00 1970
  12937. --- emacs-18.59/amiga/unix/src/readlink.c    Mon Sep 27 19:20:10 1993
  12938. ***************
  12939. *** 0 ****
  12940. --- 1,38 ----
  12941. + #include "amiga.h"
  12942. + #include <string.h>
  12943. + int readlink(char *path, char *buf, int bufsiz)
  12944. + {
  12945. +   struct DevProc *dev = NULL;
  12946. +   chkabort();
  12947. +   while (1)
  12948. +     {
  12949. +       struct DevProc *newdev = GetDeviceProc(path, dev);
  12950. +       long err;
  12951. +       
  12952. +       FreeDeviceProc(dev);
  12953. +       if (!(dev = newdev)) ERROR;
  12954. +       buf[0] = '\0';
  12955. +       if (ReadLink(dev->dvp_Port, dev->dvp_Lock, path, buf, bufsiz + 1))
  12956. +     {
  12957. +       FreeDeviceProc(dev);
  12958. +       if (!buf[0])
  12959. +         {
  12960. +           /* Play games with apparent 2.x ram: bug */
  12961. +           errno = ENOENT;
  12962. +           return -1;
  12963. +         }
  12964. +       return strlen(buf);
  12965. +     }
  12966. +       err = IoErr();
  12967. +       if (!(err == ERROR_OBJECT_NOT_FOUND && (dev->dvp_Flags & DVPF_ASSIGN)))
  12968. +     {
  12969. +       FreeDeviceProc(dev);
  12970. +       errno = convert_oserr(err);
  12971. +       return -1;
  12972. +     }
  12973. +     }
  12974. + }
  12975. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/rename.c emacs-18.59/amiga/unix/src/rename.c
  12976. *** /src/baseline/emacs-18.59/amiga/unix/src/rename.c    Thu Jan  1 00:00:00 1970
  12977. --- emacs-18.59/amiga/unix/src/rename.c    Wed Dec  2 20:01:48 1992
  12978. ***************
  12979. *** 0 ****
  12980. --- 1,24 ----
  12981. + #include "amiga.h"
  12982. + int rename(const char *from, const char *to)
  12983. + {
  12984. +   long err;
  12985. +   chkabort();
  12986. +   if (Rename(from, to)) return 0;
  12987. +   err = IoErr();
  12988. +   if (err == ERROR_OBJECT_EXISTS)
  12989. +     {
  12990. +       if (DeleteFile(to) && Rename(from, to)) return 0;
  12991. +       err = IoErr();
  12992. +       if (err == ERROR_DELETE_PROTECTED)
  12993. +     {
  12994. +       if (SetProtection(to, 0) && DeleteFile(to) && Rename(from, to))
  12995. +         return 0;
  12996. +       err = IoErr();
  12997. +     }
  12998. +     }
  12999. +   errno = convert_oserr(err);
  13000. +   return -1;
  13001. + }
  13002. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/rindex.c emacs-18.59/amiga/unix/src/rindex.c
  13003. *** /src/baseline/emacs-18.59/amiga/unix/src/rindex.c    Thu Jan  1 00:00:00 1970
  13004. --- emacs-18.59/amiga/unix/src/rindex.c    Wed Dec  2 20:22:42 1992
  13005. ***************
  13006. *** 0 ****
  13007. --- 1,8 ----
  13008. + #include <string.h>
  13009. + #undef rindex
  13010. + char *rindex(char *str, int c)
  13011. + {
  13012. +   return strrchr(str, c);
  13013. + }
  13014. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/rmdir.c emacs-18.59/amiga/unix/src/rmdir.c
  13015. *** /src/baseline/emacs-18.59/amiga/unix/src/rmdir.c    Thu Jan  1 00:00:00 1970
  13016. --- emacs-18.59/amiga/unix/src/rmdir.c    Sat Aug  1 16:08:26 1992
  13017. ***************
  13018. *** 0 ****
  13019. --- 1,31 ----
  13020. + #include "amiga.h"
  13021. + #include <utility/tagitem.h>
  13022. + int rmdir(char *name)
  13023. + {
  13024. +   struct FileInfoBlock *fib = 0;
  13025. +   BPTR lock = 0;
  13026. +   if ((fib = AllocDosObjectTags(DOS_FIB, TAG_END)) &&
  13027. +       (lock = Lock(name, ACCESS_READ)) &&
  13028. +       Examine(lock, fib))
  13029. +     {
  13030. +       int isdir = fib->fib_DirEntryType > 0;
  13031. +       UnLock(lock);
  13032. +       FreeDosObject(DOS_FIB, fib);
  13033. +       if (isdir)
  13034. +     {
  13035. +       if (DeleteFile(name)) return 0;
  13036. +       ERROR;
  13037. +     }
  13038. +       errno = ENOTDIR;
  13039. +       return -1;
  13040. +     }
  13041. +   errno = convert_oserr(IoErr());
  13042. +   if (lock) UnLock(lock);
  13043. +   if (fib) FreeDosObject(DOS_FIB, fib);
  13044. +   return -1;
  13045. + }
  13046. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/select.c emacs-18.59/amiga/unix/src/select.c
  13047. *** /src/baseline/emacs-18.59/amiga/unix/src/select.c    Thu Jan  1 00:00:00 1970
  13048. --- emacs-18.59/amiga/unix/src/select.c    Sun Jul 19 17:47:02 1992
  13049. ***************
  13050. *** 0 ****
  13051. --- 1,72 ----
  13052. + #include "amiga.h"
  13053. + #include "files.h"
  13054. + #include "signals.h"
  13055. + #include "timers.h"
  13056. + #include <sys/time.h>
  13057. + int select(int nfds, int *rfds, int *wfds, int *efds, struct timeval *timeout)
  13058. + {
  13059. +   int fdmask, i, fdcount;
  13060. +   int poll = timeout && timeout->tv_sec == 0 && timeout->tv_usec == 0;
  13061. +   ULONG eventmask, sigs;
  13062. +   int orfds = rfds ? *rfds : 0, owfds = wfds ? *wfds : 0, oefds = efds ? *efds : 0;
  13063. +   
  13064. +   for (i = 0, fdmask = 1; i < nfds; i++, fdmask <<= 1)
  13065. +     {
  13066. +       int rd = orfds & fdmask, wr = owfds & fdmask;
  13067. +   chkabort();
  13068. +       if (rd || wr)
  13069. +     {
  13070. +       struct fileinfo *fi = _find_fd(i);
  13071. +       if (!fi) return -1;
  13072. +       if (rd && !(fi->flags & FI_READ) || wr && !(fi->flags & FI_WRITE))
  13073. +         {
  13074. +           errno = EACCES;
  13075. +           return -1;
  13076. +         }
  13077. +     }
  13078. +     }
  13079. +   if (timeout) _timer_start(_odd_timer, timeout->tv_sec, timeout->tv_usec);
  13080. +   else _timer_abort(_odd_timer);
  13081. +   fdcount = 0;
  13082. +   do
  13083. +     {
  13084. +       eventmask = 0;
  13085. +       for (i = 0, fdmask = 1; i < nfds; i++, fdmask <<= 1)
  13086. +     {
  13087. +       int rd = orfds & fdmask, wr = owfds & fdmask;
  13088. +       if (rd || wr)
  13089. +         {
  13090. +           struct fileinfo *fi = _find_fd(i);
  13091. +           eventmask |= fi->select_start(fi->userinfo, rd, wr);
  13092. +         }
  13093. +     }
  13094. +       if (eventmask == -1 || poll) /* Don't wait */ sigs = _check_signals(0);
  13095. +       else /* Wait*/ sigs = _wait_signals(_odd_sig | eventmask);
  13096. +       for (i = 0, fdmask = 1; i < nfds; i++, fdmask <<= 1)
  13097. +     {
  13098. +       int rd = orfds & fdmask, wr = owfds & fdmask;
  13099. +       if (rd || wr)
  13100. +         {
  13101. +           struct fileinfo *fi = _find_fd(i);
  13102. +           fi->select_poll(fi->userinfo, &rd, &wr);
  13103. +           if (!rd && rfds) *rfds &= ~fdmask;
  13104. +           if (!wr && wfds) *wfds &= ~fdmask;
  13105. +           if (rd || wr) fdcount++;
  13106. +         }
  13107. +     }
  13108. +       _handle_signals(sigs);
  13109. +     }
  13110. +   while (fdcount == 0 && !_timer_expired(_odd_timer) && !poll);
  13111. +   return fdcount;
  13112. + }
  13113. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/setjmp.c emacs-18.59/amiga/unix/src/setjmp.c
  13114. *** /src/baseline/emacs-18.59/amiga/unix/src/setjmp.c    Thu Jan  1 00:00:00 1970
  13115. --- emacs-18.59/amiga/unix/src/setjmp.c    Sun Aug 16 11:57:30 1992
  13116. ***************
  13117. *** 0 ****
  13118. --- 1,15 ----
  13119. + #include "amiga.h"
  13120. + #include "signals.h"
  13121. + #include <setjmp.h>
  13122. + int setjmp(jmp_buf jb)
  13123. + {
  13124. +   jb[0] = _sig_mask;
  13125. +   return _setjmp(jb + 1);
  13126. + }
  13127. + void longjmp(jmp_buf jb, int val)
  13128. + {
  13129. +   sigsetmask(jb[0]);
  13130. +   _longjmp(jb + 1, val);
  13131. + }
  13132. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/siglist.c emacs-18.59/amiga/unix/src/siglist.c
  13133. *** /src/baseline/emacs-18.59/amiga/unix/src/siglist.c    Thu Jan  1 00:00:00 1970
  13134. --- emacs-18.59/amiga/unix/src/siglist.c    Sat Aug 15 11:21:06 1992
  13135. ***************
  13136. *** 0 ****
  13137. --- 1,35 ----
  13138. + char *sys_siglist[] =
  13139. + {
  13140. +     "no signal",
  13141. +     "hangup",
  13142. +     "interrupt",
  13143. +     "quit",
  13144. +     "illegal instruction",
  13145. +     "trace trap",
  13146. +     "abort",
  13147. +     "emt instruction",
  13148. +     "floating point exception",
  13149. +     "kill",
  13150. +     "bus error",
  13151. +     "segmentation violation",
  13152. +     "bad argument to system call",
  13153. +     "write on a pipe with no one to read it",
  13154. +     "alarm clock",
  13155. +     "software termination signal from kill",
  13156. +     "status signal",
  13157. +     "sendable stop signal not from tty",
  13158. +     "stop signal from tty",
  13159. +     "continue a stopped process",
  13160. +     "child status has changed",
  13161. +     "background read attempted from control tty",
  13162. +     "background write attempted from control tty",
  13163. +     "input record available at control tty",
  13164. +     "exceeded CPU time limit",
  13165. +     "exceeded file size limit",
  13166. +     "unknown signal",
  13167. +     "unknown signal",
  13168. +     "window changed",
  13169. +     "unknown signal",
  13170. +     "user signal 1",
  13171. +     "user signal 2",
  13172. + };
  13173. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/signal.c emacs-18.59/amiga/unix/src/signal.c
  13174. *** /src/baseline/emacs-18.59/amiga/unix/src/signal.c    Thu Jan  1 00:00:00 1970
  13175. --- emacs-18.59/amiga/unix/src/signal.c    Sun Nov  8 19:33:22 1992
  13176. ***************
  13177. *** 0 ****
  13178. --- 1,26 ----
  13179. + #include "amiga.h"
  13180. + #include "signals.h"
  13181. + int sigvec(int sig, struct sigvec *vec, struct sigvec *ovec)
  13182. + {
  13183. +   chkabort();
  13184. +   if (sig >= 1 && sig < NSIG)
  13185. +     {
  13186. +       if (ovec) *ovec = _sig_handlers[sig];
  13187. +       if (vec) _sig_handlers[sig] = *vec;
  13188. +       return 0;
  13189. +     }
  13190. +   errno = EINVAL;
  13191. +   return -1;
  13192. + }
  13193. + void (*signal(int sig,void (*fn)(int)))(int)
  13194. + {
  13195. +   struct sigvec vec, ovec;
  13196. +   vec.sv_handler = fn;
  13197. +   vec.sv_mask = 0;
  13198. +   /*vec.sv_flags = 0;*/
  13199. +   if (sigvec(sig, &vec, &ovec)) return -1;
  13200. +   return ovec.sv_handler;
  13201. + }
  13202. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/signals.c emacs-18.59/amiga/unix/src/signals.c
  13203. *** /src/baseline/emacs-18.59/amiga/unix/src/signals.c    Thu Jan  1 00:00:00 1970
  13204. --- emacs-18.59/amiga/unix/src/signals.c    Sun Oct 18 20:16:02 1992
  13205. ***************
  13206. *** 0 ****
  13207. --- 1,211 ----
  13208. + #include "amiga.h"
  13209. + #include "timers.h"
  13210. + #include "signals.h"
  13211. + #include "processes.h"
  13212. + static ULONG signalsigs;    /* When one of these occur, call handle_signals */
  13213. + struct sigvec _sig_handlers[NSIG];
  13214. + long _sig_mask, _sig_pending;
  13215. + /* Alarm signal */
  13216. + /* ------------ */
  13217. + static struct timeinfo *alarm_timer;
  13218. + static int check_alarm(ULONG sigs)
  13219. + {
  13220. +   return alarm_timer && _timer_expired(alarm_timer);
  13221. + }
  13222. + void alarm(int secs)
  13223. + /* Effect: Schedule a SIGALRM after secs seconds
  13224. + */
  13225. + {
  13226. +   _timer_start(alarm_timer, secs, 0);
  13227. + }
  13228. + static void init_alarm(void)
  13229. + {
  13230. +   if (!(alarm_timer = _alloc_timer())) _fail("Failed to create timer");
  13231. +   signalsigs |= _timer_sig(alarm_timer);
  13232. + }
  13233. + static void cleanup_alarm(void)
  13234. + {
  13235. +   _free_timer(alarm_timer);
  13236. + }
  13237. + /* SIGINT definition */
  13238. + /* ----------------- */
  13239. + static void init_sigint(void)
  13240. + {
  13241. +   signalsigs |= SIGBREAKF_CTRL_C;
  13242. + }
  13243. + /*static void cleanup_sigint(void) { }*/
  13244. + static int check_sigint(ULONG sigs)
  13245. + {
  13246. +   return (sigs & SIGBREAKF_CTRL_C) != 0;
  13247. + }
  13248. + /* SIGQUIT definition */
  13249. + /* ------------------ */
  13250. + static void init_sigquit(void)
  13251. + {
  13252. +   signalsigs |= SIGBREAKF_CTRL_D;
  13253. + }
  13254. + /*static void cleanup_sigquit(void) { }*/
  13255. + static int check_sigquit(ULONG sigs)
  13256. + {
  13257. +   return (sigs & SIGBREAKF_CTRL_D) != 0;
  13258. + }
  13259. + /* SIGCHLD definition */
  13260. + /* ------------------ */
  13261. + static void init_children(void)
  13262. + {
  13263. +   _init_processes();
  13264. +   signalsigs |= 1L << _children_exit->mp_SigBit;
  13265. + }
  13266. + static void cleanup_children(void)
  13267. + {
  13268. +   _cleanup_processes();
  13269. + }
  13270. + static int check_children(ULONG sigs)
  13271. + {
  13272. +   struct exit_message *msg;
  13273. +   int change = FALSE;
  13274. +   
  13275. +   while (msg = (struct exit_message *)GetMsg(_children_exit))
  13276. +     {
  13277. +       struct process *p;
  13278. +       if ((p = _find_pid(msg->pid)) && p->status == alive)
  13279. +     {
  13280. +       change = TRUE;
  13281. +       p->status = exited;
  13282. +       p->rc = msg->rc;
  13283. +     }
  13284. +       FreeMem(msg, sizeof(struct exit_message));
  13285. +     }
  13286. +   return change;
  13287. + }
  13288. + /* Signal dispatching */
  13289. + /* ------------------ */
  13290. + void _sig_dispatch(int sig)
  13291. + /* Effect: Do the action associated with signal sig it it isn't masked
  13292. +      Mask it for the duration of the signal exec
  13293. + */
  13294. + {
  13295. +   void (*fn)(int);
  13296. +   long smask = 1 << sig;
  13297. +   if (sig == SIGKILL) _exit(0);
  13298. +   if (_sig_mask & smask) _sig_pending |= smask;
  13299. +   else
  13300. +     do
  13301. +       {
  13302. +     _sig_pending &= ~smask;
  13303. +     if (sig >= 0 && sig < NSIG)
  13304. +       {
  13305. +         fn = _sig_handlers[sig].sv_handler;
  13306. +         if (fn == SIG_DFL)
  13307. +           switch (sig)
  13308. +         {
  13309. +         case SIGCHLD: case SIGURG: case SIGWINCH: break;
  13310. +         case SIGINT: case SIGQUIT: _message("user interrupt");
  13311. +         default: _exit(0);
  13312. +         }
  13313. +         else if (fn != SIG_IGN)
  13314. +           {
  13315. +         int mask = smask | _sig_handlers[sig].sv_mask;
  13316. +         _sig_mask |= mask;
  13317. +         fn(sig);
  13318. +         _sig_mask &= ~mask;
  13319. +           }
  13320. +       }
  13321. +       }
  13322. +     while (_sig_pending & smask); /* Signal may have been generated during the
  13323. +                      signal handling function. */
  13324. + }
  13325. + ULONG _check_signals(ULONG extra_sigs)
  13326. + {
  13327. +   return SetSignal(0, signalsigs | extra_sigs);
  13328. + }
  13329. + ULONG _wait_signals(ULONG extra_sigs)
  13330. + {
  13331. +   return Wait(signalsigs | extra_sigs);
  13332. + }
  13333. + int _handle_signals(ULONG sigs)
  13334. + {
  13335. +   int signaled = 0;
  13336. +   if (check_alarm(sigs)) { signaled = 1; _sig_dispatch(SIGALRM); }
  13337. +   if (check_sigint(sigs)) { signaled = 1; _sig_dispatch(SIGINT); }
  13338. +   if (check_sigquit(sigs)) { signaled = 1; _sig_dispatch(SIGQUIT); }
  13339. +   if (check_children(sigs)) { signaled = 1; _sig_dispatch(SIGCHLD); }
  13340. +   return signaled;
  13341. + }
  13342. + /* Patch into SAS signal stuff so as to replace it */
  13343. + void CXFERR(int code)
  13344. + {
  13345. +     extern int _FPERR;
  13346. +     _FPERR = code;
  13347. +     _sig_dispatch(SIGFPE);
  13348. + }
  13349. + void chkabort(void)
  13350. + /* Checks all signals */
  13351. + {
  13352. +   _handle_signals(_check_signals(0));
  13353. + }
  13354. + void Chk_Abort(void) { chkabort(); }
  13355. + /* Initialisation */
  13356. + /* -------------- */
  13357. + void _init_signals(void)
  13358. + {
  13359. +   int i;
  13360. +   for (i = 0; i < NSIG; i++)
  13361. +     {
  13362. +       _sig_handlers[i].sv_handler = SIG_DFL;
  13363. +       _sig_handlers[i].sv_mask = 0;
  13364. +       /*_sig_handlers[i].sv_flags = 0;*/
  13365. +     }
  13366. +       
  13367. +   _sig_mask = _sig_pending = 0;
  13368. +   signalsigs = 0;
  13369. +   init_sigint(); init_sigquit(); init_alarm(); init_children();
  13370. + }
  13371. + void _cleanup_signals(void)
  13372. + {
  13373. +   cleanup_alarm();
  13374. +   /*cleanup_sigquit();*/
  13375. +   /*cleanup_sigint();*/
  13376. +   cleanup_children();
  13377. + }
  13378. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/signals.h emacs-18.59/amiga/unix/src/signals.h
  13379. *** /src/baseline/emacs-18.59/amiga/unix/src/signals.h    Thu Jan  1 00:00:00 1970
  13380. --- emacs-18.59/amiga/unix/src/signals.h    Sun Oct 18 19:59:26 1992
  13381. ***************
  13382. *** 0 ****
  13383. --- 1,21 ----
  13384. + #ifndef SIGNALS_H
  13385. + #define SIGNALS_H
  13386. + #include <signal.h>
  13387. + extern struct sigvec _sig_handlers[NSIG];
  13388. + extern long _sig_mask, _sig_pending;
  13389. + void _sig_dispatch(int sig);
  13390. + /* Effect: Do the action associated with signal sig it it isn't masked
  13391. +      Mask it for the duration of the signal exec
  13392. + */
  13393. + ULONG _check_signals(ULONG extra_sigs);
  13394. + ULONG _wait_signals(ULONG extra_sigs);
  13395. + int _handle_signals(ULONG sigs);
  13396. + void _init_signals(void);
  13397. + void _cleanup_signals(void);
  13398. + #endif
  13399. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/sigpause.c emacs-18.59/amiga/unix/src/sigpause.c
  13400. *** /src/baseline/emacs-18.59/amiga/unix/src/sigpause.c    Thu Jan  1 00:00:00 1970
  13401. --- emacs-18.59/amiga/unix/src/sigpause.c    Sat Aug  1 16:42:14 1992
  13402. ***************
  13403. *** 0 ****
  13404. --- 1,16 ----
  13405. + #include "amiga.h"
  13406. + #include "signals.h"
  13407. + int sigpause(long mask)
  13408. + {
  13409. +   long oldmask = sigsetmask(mask);
  13410. +   ULONG sigs;
  13411. +   sigs = _check_signals(0);
  13412. +   while (!_handle_signals(sigs)) sigs = _wait_signals(0);
  13413. +   
  13414. +   sigsetmask(oldmask);
  13415. +   errno = EINTR;
  13416. +   return -1;
  13417. + }
  13418. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/sigsetmask.c emacs-18.59/amiga/unix/src/sigsetmask.c
  13419. *** /src/baseline/emacs-18.59/amiga/unix/src/sigsetmask.c    Thu Jan  1 00:00:00 1970
  13420. --- emacs-18.59/amiga/unix/src/sigsetmask.c    Sun Oct 18 20:17:02 1992
  13421. ***************
  13422. *** 0 ****
  13423. --- 1,22 ----
  13424. + #include "amiga.h"
  13425. + #include "signals.h"
  13426. + long sigsetmask(long mask)
  13427. + {
  13428. +   int oldmask = _sig_mask, i, imask;
  13429. +   chkabort();
  13430. +   _sig_mask = mask;
  13431. +   /* Check all pending signals */
  13432. +   for (i = 0, imask = 1; i < NSIG; i++, imask <<= 1)
  13433. +     if ((_sig_pending & imask) && !(_sig_mask & imask))
  13434. +       _sig_dispatch(i);
  13435. +   return oldmask;
  13436. + }
  13437. + long sigblock(long mask)
  13438. + {
  13439. +   return sigsetmask(_sig_mask | mask);
  13440. + }
  13441. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/sleep.c emacs-18.59/amiga/unix/src/sleep.c
  13442. *** /src/baseline/emacs-18.59/amiga/unix/src/sleep.c    Thu Jan  1 00:00:00 1970
  13443. --- emacs-18.59/amiga/unix/src/sleep.c    Sun Jul 19 17:47:02 1992
  13444. ***************
  13445. *** 0 ****
  13446. --- 1,13 ----
  13447. + #include "amiga.h"
  13448. + #include "timers.h"
  13449. + #include "signals.h"
  13450. + int sleep(unsigned seconds)
  13451. + {
  13452. +   chkabort();
  13453. +   _timer_start(_odd_timer, seconds, 0);
  13454. +   while (!_timer_expired(_odd_timer)) _handle_signals(_wait_signals(_odd_sig));
  13455. +   return 0;
  13456. + }
  13457. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/smakefile emacs-18.59/amiga/unix/src/smakefile
  13458. *** /src/baseline/emacs-18.59/amiga/unix/src/smakefile    Thu Jan  1 00:00:00 1970
  13459. --- emacs-18.59/amiga/unix/src/smakefile    Sun Dec  6 14:33:20 1992
  13460. ***************
  13461. *** 0 ****
  13462. --- 1,128 ----
  13463. + OBJS=  mkdir.o devices.o processes.o kill.o abort.o error.o error_msg.o \
  13464. +        fcntl.o select.o read.o lseek.o chmod.o getwd.o mktemp.o link.o \
  13465. +        getenv.o time.o write.o creat.o sleep.o uid.o exec.o truncate.o \
  13466. +        strftime.o rmdir.o sigpause.o isatty.o mkfifo.o fchmod.o ftruncate.o \
  13467. +        bzero.o fibstat.o bcmp.o chown.o rename.o amigados.o ctime.o open.o \
  13468. +        ioctl.o _exit.o gid.o protection.o umask.o _main.o signals.o grp.o \
  13469. +        pipe.o unlink.o alloca.o readlink.o pwd.o timeconvert.o amigatime.o \
  13470. +        bcopy.o utime.o files.o close.o fifofd.o timers.o index.o rindex.o \
  13471. +        pseudo_c.o wait4.o siglist.o perror.o gethostname.o setjmp.o allocdos.o \
  13472. +        message.o symlink.o fstat.o access.o dir_data.o dir.o stat.o \
  13473. +        sigsetmask.o signal.o getpid.o start.o popen.o tmpnam.o
  13474. + DEFS = define=SOFTLINK
  13475. + OPTIMIZE = opt
  13476. + CFLAGS = $(OPTS) $(DEFS) gst=amiga.sym $(OPTIMIZE)
  13477. + all: amiga.sym unix.lib unix-hard.lib
  13478. + ALLOBJS = $(OBJS) sprintf.o _setjmp.o
  13479. + unix.lib: $(ALLOBJS)
  13480. +     -delete unix.lib ram:unix.lib
  13481. +     oml ram:unix.lib <@<
  13482. + r $(ALLOBJS)
  13483. + <
  13484. +     copy ram:unix.lib ""
  13485. + unix-hard.lib: unix.lib fibstat-hard.o
  13486. +     copy unix.lib ram:
  13487. +     oml ram:unix.lib d fibstat.c
  13488. +     oml ram:unix.lib r fibstat-hard.o
  13489. +     copy ram:unix.lib unix-hard.lib
  13490. + sprintf.o: sprintf.asm
  13491. +     asm -osprintf.o -iINCLUDE: sprintf.asm
  13492. + _setjmp.o: _setjmp.asm
  13493. +     asm -o_setjmp.o -iINCLUDE: _setjmp.asm
  13494. + amiga.sym: amiga.h
  13495. +     copy amiga.h am.c
  13496. +     sc makegst=amiga.sym $(OPTS) am.c
  13497. +     delete am.c
  13498. + fibstat-hard.o: fibstat.c
  13499. +     $(CC) $(CFLAGS) DEF PRETEND_LINKED objname $@ fibstat.c
  13500. + mkdir.o: mkdir.c amiga.h
  13501. + devices.o: devices.c amiga.h
  13502. + processes.o: processes.c processes.h amiga.h
  13503. + kill.o: kill.c processes.h signals.h amiga.h
  13504. + abort.o: abort.c amiga.h
  13505. + error.o: error.c amiga.h
  13506. + error_msg.o: error_msg.c amiga.h
  13507. + fcntl.o: fcntl.c amiga.h
  13508. + select.o: select.c signals.h amiga.h
  13509. + read.o: read.c amiga.h
  13510. + lseek.o: lseek.c amiga.h
  13511. + chmod.o: chmod.c amiga.h
  13512. + getwd.o: getwd.c amiga.h
  13513. + mktemp.o: mktemp.c amiga.h
  13514. + link.o: link.c amiga.h
  13515. + getenv.o: getenv.c amiga.h
  13516. + time.o: time.c timeconvert.h amiga.h
  13517. + write.o: write.c amiga.h
  13518. + creat.o: creat.c amiga.h
  13519. + sleep.o: sleep.c signals.h amiga.h
  13520. + uid.o: uid.c amiga.h
  13521. + exec.o: exec.c processes.h amiga.h
  13522. + truncate.o: truncate.c amigados.h amiga.h
  13523. + strftime.o: strftime.c
  13524. + rmdir.o: rmdir.c amiga.h
  13525. + sigpause.o: sigpause.c signals.h amiga.h
  13526. + isatty.o: isatty.c amiga.h
  13527. + mkfifo.o: mkfifo.c amiga.h
  13528. + fchmod.o: fchmod.c amiga.h
  13529. + ftruncate.o: ftruncate.c amiga.h
  13530. + bzero.o: bzero.c amiga.h
  13531. + fibstat.o: fibstat.c timeconvert.h fibstat.h amiga.h
  13532. + bcmp.o: bcmp.c amiga.h
  13533. + chown.o: chown.c amiga.h
  13534. + rename.o: rename.c amiga.h
  13535. + amigados.o: amigados.c signals.h amiga.h
  13536. + ctime.o: ctime.c
  13537. + open.o: open.c amigados.h amiga.h
  13538. + ioctl.o: ioctl.c amiga.h
  13539. + _exit.o: _exit.c fifo_pragmas.h fifo.h fifofd.h signals.h amiga.h
  13540. + gid.o: gid.c amiga.h
  13541. + protection.o: protection.c amiga.h
  13542. + umask.o: umask.c amiga.h
  13543. + _main.o: _main.c fifo_pragmas.h fifo.h amigados.h fifofd.h signals.h amiga.h
  13544. + signals.o: signals.c processes.h signals.h amiga.h
  13545. + grp.o: grp.c amiga.h
  13546. + pipe.o: pipe.c fifo_pragmas.h fifo.h fifofd.h signals.h amiga.h
  13547. + unlink.o: unlink.c amiga.h
  13548. + alloca.o: alloca.c
  13549. + readlink.o: readlink.c amiga.h
  13550. + pwd.o: pwd.c amiga.h
  13551. + timeconvert.o: timeconvert.c timeconvert.h amiga.h
  13552. + amigatime.o: amigatime.c timeconvert.h amiga.h
  13553. + bcopy.o: bcopy.c amiga.h
  13554. + utime.o: utime.c timeconvert.h amiga.h
  13555. + files.o: files.c amiga.h
  13556. + close.o: close.c amiga.h
  13557. + fifofd.o: fifofd.c fifo_pragmas.h fifo.h fifofd.h amiga.h
  13558. + timers.o: timers.c amiga.h
  13559. + index.o: index.c
  13560. + rindex.o: rindex.c
  13561. + pseudo_c.o: pseudo_c.c amiga.h
  13562. + wait4.o: wait4.c processes.h signals.h amiga.h
  13563. + siglist.o: siglist.c
  13564. + perror.o: perror.c amiga.h
  13565. + gethostname.o: gethostname.c amiga.h
  13566. + setjmp.o: setjmp.c signals.h amiga.h
  13567. + allocdos.o: allocdos.c
  13568. + message.o: message.c amiga.h
  13569. + symlink.o: symlink.c amiga.h
  13570. + fstat.o: fstat.c fibstat.h amiga.h
  13571. + access.o: access.c fibstat.h amiga.h
  13572. + dir_data.o: dir_data.c dir_data.h amiga.h
  13573. + dir.o: dir.c dir_data.h amiga.h
  13574. + stat.o: stat.c dir_data.h fibstat.h amiga.h
  13575. + sigsetmask.o: sigsetmask.c signals.h amiga.h
  13576. + signal.o: signal.c signals.h amiga.h
  13577. + getpid.o: getpid.c processes.h amiga.h
  13578. + start.o: start.c processes.h amiga.h
  13579. + popen.o: popen.c fifo_pragmas.h fifo.h processes.h fifofd.h amiga.h
  13580. + tmpnam.o: tmpnam.c amiga.h
  13581. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/smakefile.base emacs-18.59/amiga/unix/src/smakefile.base
  13582. *** /src/baseline/emacs-18.59/amiga/unix/src/smakefile.base    Thu Jan  1 00:00:00 1970
  13583. --- emacs-18.59/amiga/unix/src/smakefile.base    Wed Dec  2 19:44:50 1992
  13584. ***************
  13585. *** 0 ****
  13586. --- 1,26 ----
  13587. + DEFS = define=SOFTLINK
  13588. + OPTIMIZE = debug=sf
  13589. + CFLAGS = $(OPTS) $(DEFS) gst=amiga.sym $(OPTIMIZE)
  13590. + all: amiga.sym unix.lib
  13591. + ALLOBJS = $(OBJS) sprintf.o _setjmp.o
  13592. + unix.lib: $(ALLOBJS)
  13593. +     -delete unix.lib ram:unix.lib
  13594. +     oml ram:unix.lib <@<
  13595. + r $(ALLOBJS)
  13596. + <
  13597. +     copy ram:unix.lib ""
  13598. + sprintf.o: sprintf.asm
  13599. +     asm -osprintf.o -iINCLUDE: sprintf.asm
  13600. + _setjmp.o: _setjmp.asm
  13601. +     asm -o_setjmp.o -iINCLUDE: _setjmp.asm
  13602. + amiga.sym: amiga.h
  13603. +     copy amiga.h am.c
  13604. +     sc makegst=amiga.sym $(OPTS) am.c
  13605. +     delete am.c
  13606. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/sprintf.asm emacs-18.59/amiga/unix/src/sprintf.asm
  13607. *** /src/baseline/emacs-18.59/amiga/unix/src/sprintf.asm    Thu Jan  1 00:00:00 1970
  13608. --- emacs-18.59/amiga/unix/src/sprintf.asm    Sat Aug 15 12:20:02 1992
  13609. ***************
  13610. *** 0 ****
  13611. --- 1,29 ----
  13612. +     XDEF __sprintf
  13613. +     XREF _AbsExecBase
  13614. +     XREF _LVORawDoFmt
  13615. +     csect    text,0,,2,2
  13616. + __sprintf
  13617. + save    equ    16
  13618. +     movem.l    a2/a3/a6/d2,-(a7)    ; save bytes copied to stack
  13619. +     move.l    save+8(a7),a0
  13620. +     lea    save+12(a7),a1
  13621. +     lea    copychar(pc),a2
  13622. +     move.l    save+4(a7),a3
  13623. +     move.l    a3,d2
  13624. +     move.l    _AbsExecBase,a6
  13625. +     jsr    _LVORawDoFmt(a6)
  13626. +     move.l    a3,d0            ; # of characters printed
  13627. +     sub.l    d2,d0
  13628. +     movem.l    (a7)+,a2/a3/a6/d2
  13629. +     rts
  13630. +     
  13631. + copychar
  13632. +     move.b    d0,(a3)+
  13633. +     rts
  13634. +     end
  13635. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/start.c emacs-18.59/amiga/unix/src/start.c
  13636. *** /src/baseline/emacs-18.59/amiga/unix/src/start.c    Thu Jan  1 00:00:00 1970
  13637. --- emacs-18.59/amiga/unix/src/start.c    Sun Oct 25 12:06:00 1992
  13638. ***************
  13639. *** 0 ****
  13640. --- 1,118 ----
  13641. + #include "amiga.h"
  13642. + #include "processes.h"
  13643. + #include <amiga/ioctl.h>
  13644. + #include <exec/memory.h>
  13645. + #include <dos/dosextens.h>
  13646. + #include <dos/dostags.h>
  13647. + #include <string.h>
  13648. + /* Variables used by a child that is starting up */
  13649. + struct MemList *_child_entry;    /* Memory used for child's code */
  13650. + static struct Message startup_message;
  13651. + struct exit_message *_child_exit;
  13652. + char *_child_command;
  13653. + int _child_command_len;
  13654. + char *_child_door_name;
  13655. + static void __saveds __interrupt _child_startup(void)
  13656. + {
  13657. +   struct exit_message *exit = _child_exit;
  13658. +   char *command = _child_command;
  13659. +   int command_len = _child_command_len;
  13660. +   char *door_name = _child_door_name;
  13661. +   struct Process *us = (struct Process *)FindTask(0);
  13662. +   struct DOSBase *local_DOSBase = DOSBase;
  13663. + #pragma libcall local_DOSBase local_SystemTagList 25E 2102
  13664. +   struct TagItem stags[2];
  13665. +   struct MsgPort *parent;
  13666. +   AddTail(&us->pr_Task.tc_MemEntry, _child_entry);
  13667. +   PutMsg(_startup_port, &startup_message);
  13668. +   /* From now on parent may disappear */
  13669. +   stags[0].ti_Tag = SYS_UserShell; stags[0].ti_Data = TRUE;
  13670. +   stags[1].ti_Tag = TAG_END;
  13671. +   exit->rc = local_SystemTagList(command, stags) << 8;
  13672. +   /* Send result to parent if he is around */
  13673. +   Forbid();
  13674. +   if (parent = FindPort(door_name)) PutMsg(parent, exit);
  13675. +   else FreeMem(exit, sizeof(struct exit_message));
  13676. +   Permit();
  13677. +   FreeMem(door_name, DOOR_LEN);
  13678. +   FreeMem(command, command_len);
  13679. + }
  13680. + int _start_process(char *command,
  13681. +            BPTR input, int close_input,
  13682. +            BPTR output, int close_output,
  13683. +            BPTR error, int close_error,
  13684. +            BPTR dir,
  13685. +            long stacksize)
  13686. + {
  13687. +   struct process *entry = (struct process *)malloc(sizeof(struct process));
  13688. +   static struct MemList alloc_child = { { 0 }, 1 };
  13689. +   _child_command_len = strlen(command) + 1;
  13690. +   _child_command = AllocMem(_child_command_len, MEMF_PUBLIC);
  13691. +   strcpy(_child_command, command);
  13692. +   _child_exit = AllocMem(sizeof(struct exit_message), MEMF_PUBLIC);
  13693. +   _child_door_name = AllocMem(DOOR_LEN, MEMF_PUBLIC);
  13694. +   alloc_child.ml_ME[0].me_Reqs = MEMF_PUBLIC;
  13695. +   alloc_child.ml_ME[0].me_Length = (char *)&_start_process - (char *)&_child_startup;
  13696. +   _child_entry = AllocEntry(&alloc_child);
  13697. +   if (entry && _child_command && _child_exit && _child_door_name &&
  13698. +       (long)_child_entry > 0)
  13699. +     {
  13700. +       memcpy(_child_entry->ml_ME[0].me_Addr, &_child_startup,
  13701. +          _child_entry->ml_ME[0].me_Length);
  13702. +       strcpy(_child_door_name, _door_name);
  13703. +       entry->pid = _next_pid++;
  13704. +       entry->input = input;
  13705. +       /* This message is sent by the child when it has started */
  13706. +       startup_message.mn_Length = sizeof(startup_message);
  13707. +       startup_message.mn_Node.ln_Type = NT_MESSAGE;
  13708. +       /* This message is sent by the child when it exits */
  13709. +       _child_exit->m.mn_Length = sizeof(*_child_exit);
  13710. +       _child_exit->m.mn_Node.ln_Type = NT_MESSAGE;
  13711. +       _child_exit->pid = entry->pid;
  13712. +       entry->process = CreateNewProcTags(NP_Entry, _child_entry->ml_ME[0].me_Addr,
  13713. +                      NP_Input, input,
  13714. +                      NP_CloseInput, (long)close_input,
  13715. +                      NP_Output, output,
  13716. +                      NP_CloseOutput, (long)close_output,
  13717. +                      NP_Error, error,
  13718. +                      NP_CloseError, (long)close_error,
  13719. +                      dir ? NP_CurrentDir : TAG_IGNORE, dir,
  13720. +                      NP_StackSize,
  13721. +                      stacksize > 0 ? stacksize : _stack_size,
  13722. +                      NP_Cli, TRUE,
  13723. +                      TAG_END);
  13724. +       if (entry->process)
  13725. +     {
  13726. +       do WaitPort(_startup_port); while (!GetMsg(_startup_port));
  13727. +       entry->status = alive;
  13728. +       AddHead((struct List *)&_processes, (struct Node *)entry);
  13729. +       return entry->pid;
  13730. +     }
  13731. +       errno = convert_oserr(IoErr());
  13732. +     }
  13733. +   else errno = ENOMEM;
  13734. +   if (entry) free(entry);
  13735. +   if (_child_command) FreeMem(_child_command, _child_command_len);
  13736. +   if (_child_exit) FreeMem(_child_exit, sizeof(struct exit_message));
  13737. +   if (_child_door_name) FreeMem(_child_door_name, DOOR_LEN);
  13738. +   if ((long)_child_entry > 0) FreeEntry(_child_entry);
  13739. +   return -1;
  13740. + }
  13741. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/stat.c emacs-18.59/amiga/unix/src/stat.c
  13742. *** /src/baseline/emacs-18.59/amiga/unix/src/stat.c    Thu Jan  1 00:00:00 1970
  13743. --- emacs-18.59/amiga/unix/src/stat.c    Sun Oct 25 17:28:04 1992
  13744. ***************
  13745. *** 0 ****
  13746. --- 1,96 ----
  13747. + #include "amiga.h"
  13748. + #include "fibstat.h"
  13749. + #include "dir_data.h"
  13750. + #include <sys/stat.h>
  13751. + #include <string.h>
  13752. + static int attach (char *dest, int dlen, char *dirname, char *name)
  13753. + {
  13754. +   char *dirnamep = dirname;
  13755. +   
  13756. +   while (*dirnamep && --dlen > 0)
  13757. +     *dest++ = *dirnamep++;
  13758. +   /* Add '/' if `dirname' doesn't already end with it. */
  13759. +   if (dirnamep > dirname && dirnamep[-1] != '/' && dirnamep[-1] != ':' && --dlen > 0)
  13760. +     *dest++ = '/';
  13761. +   
  13762. +   while (*name && --dlen > 0)
  13763. +     *dest++ = *name++;
  13764. +   *dest = 0;
  13765. +   
  13766. +   return dlen > 0;
  13767. + }
  13768. + static struct FileInfoBlock fakefib;
  13769. + static int fakestat(int soft, char *name, struct stat *sbuf)
  13770. + {
  13771. +   /* See if we want information on the last file returned from readdir */
  13772. +   if (last_dir)
  13773. +     {
  13774. +       iDIR *last_info = (iDIR *)last_dir->dd_buf;
  13775. +   
  13776. +       if (last_info->cdir == _get_cd() &&
  13777. +       attach(_temp_fname, FNAMESIZE - 1, last_info->dirname,
  13778. +          last_entry->entry.d_name) &&
  13779. +       strcmp(_temp_fname, name) == 0 &&
  13780. +       (soft || last_entry->type != ST_SOFTLINK))
  13781. +     {
  13782. +       if (last_entry->type == ST_LINKFILE || last_entry->type == ST_LINKDIR)
  13783. +         {
  13784. +           /* Find real block, this allows tar to detect hard links */
  13785. +           BPTR cd = CurrentDir(last_dir->dd_fd);
  13786. +           BPTR l = Lock(last_entry->entry.d_name, ACCESS_READ);
  13787. +           if (l)
  13788. +         {
  13789. +           Examine(l, &fakefib);
  13790. +           UnLock(l);
  13791. +         }
  13792. +           CurrentDir(cd);
  13793. +         }
  13794. +       else
  13795. +         fakefib.fib_DiskKey = last_entry->entry.d_ino;
  13796. +       fakefib.fib_NumBlocks = last_entry->numblocks;
  13797. +       fakefib.fib_Size = last_entry->size;
  13798. +       fakefib.fib_Date = last_entry->date;
  13799. +       fakefib.fib_DirEntryType = last_entry->type;
  13800. +       fakefib.fib_Protection = last_entry->protection;
  13801. +       
  13802. +       _lfibstat(name, &fakefib, last_info->task, 0, sbuf);
  13803. +       return 1;
  13804. +     }
  13805. +     }
  13806. +   return 0;
  13807. + }
  13808. + int stat(char *name, struct stat *sbuf)
  13809. + {
  13810. +   chkabort();
  13811. +   if (fakestat(0, name, sbuf)) return 0;
  13812. +   return _fibstat(name, sbuf);
  13813. + }
  13814. + int lstat(char *name, struct stat *sbuf)
  13815. + {
  13816. +   chkabort();
  13817. +   if (fakestat(1, name, sbuf)) return 0;
  13818. +   if (readlink(name, _temp_fname, FNAMESIZE - 1) < 0) return _fibstat(name, sbuf);
  13819. +   /* Symbolic link, fake a stat block */
  13820. +   sbuf->st_dev = 0;
  13821. +   sbuf->st_rdev = 0;
  13822. +   sbuf->st_uid = AMIGA_UID; sbuf->st_gid = AMIGA_GID;
  13823. +   sbuf->st_blksize = 512;
  13824. +   sbuf->st_nlink = 1;        
  13825. +   sbuf->st_blocks = 0;
  13826. +   sbuf->st_size = strlen(_temp_fname);
  13827. +   sbuf->st_ino = 0;
  13828. +   /* 1-Jan-1978 */
  13829. +   sbuf->st_ctime = sbuf->st_atime = sbuf->st_mtime = 252460800;
  13830. +   sbuf->st_mode = S_IFLNK | 0777;
  13831. +   return 0;
  13832. + }
  13833. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/strftime.c emacs-18.59/amiga/unix/src/strftime.c
  13834. *** /src/baseline/emacs-18.59/amiga/unix/src/strftime.c    Thu Jan  1 00:00:00 1970
  13835. --- emacs-18.59/amiga/unix/src/strftime.c    Fri Jul 31 23:29:14 1992
  13836. ***************
  13837. *** 0 ****
  13838. --- 1,291 ----
  13839. + /*
  13840. +  * Copyright (c) 1989 The Regents of the University of California.
  13841. +  * All rights reserved.
  13842. +  *
  13843. +  * Redistribution and use in source and binary forms, with or without
  13844. +  * modification, are permitted provided that the following conditions
  13845. +  * are met:
  13846. +  * 1. Redistributions of source code must retain the above copyright
  13847. +  *    notice, this list of conditions and the following disclaimer.
  13848. +  * 2. Redistributions in binary form must reproduce the above copyright
  13849. +  *    notice, this list of conditions and the following disclaimer in the
  13850. +  *    documentation and/or other materials provided with the distribution.
  13851. +  * 3. All advertising materials mentioning features or use of this software
  13852. +  *    must display the following acknowledgement:
  13853. +  *    This product includes software developed by the University of
  13854. +  *    California, Berkeley and its contributors.
  13855. +  * 4. Neither the name of the University nor the names of its contributors
  13856. +  *    may be used to endorse or promote products derived from this software
  13857. +  *    without specific prior written permission.
  13858. +  *
  13859. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  13860. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  13861. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  13862. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  13863. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  13864. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  13865. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  13866. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  13867. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  13868. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  13869. +  * SUCH DAMAGE.
  13870. +  */
  13871. + #if defined(LIBC_SCCS) && !defined(lint)
  13872. + static char sccsid[] = "@(#)strftime.c    5.11 (Berkeley) 2/24/91";
  13873. + #endif /* LIBC_SCCS and not lint */
  13874. + #include <sys/types.h>
  13875. + #include <sys/time.h>
  13876. + #include <tzfile.h>
  13877. + #include <string.h>
  13878. + static char *afmt[] = {
  13879. +     "Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat",
  13880. + };
  13881. + static char *Afmt[] = {
  13882. +     "Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday",
  13883. +     "Saturday",
  13884. + };
  13885. + static char *bfmt[] = {
  13886. +     "Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep",
  13887. +     "Oct", "Nov", "Dec",
  13888. + };
  13889. + static char *Bfmt[] = {
  13890. +     "January", "February", "March", "April", "May", "June", "July",
  13891. +     "August", "September", "October", "November", "December",
  13892. + };
  13893. + static size_t gsize;
  13894. + static char *pt;
  13895. + static int _add(), _conv(), _secs();
  13896. + size_t
  13897. + strftime(s, maxsize, format, t)
  13898. +     char *s;
  13899. +     size_t maxsize;
  13900. +     const char *format;
  13901. +     const struct tm *t;
  13902. + {
  13903. +     static size_t _fmt();
  13904. +     pt = s;
  13905. +     if ((gsize = maxsize) < 1)
  13906. +         return(0);
  13907. +     if (_fmt(format, t)) {
  13908. +         *pt = '\0';
  13909. +         return(maxsize - gsize);
  13910. +     }
  13911. +     return(0);
  13912. + }
  13913. + static size_t
  13914. + _fmt(format, t)
  13915. +     register char *format;
  13916. +     struct tm *t;
  13917. + {
  13918. +     for (; *format; ++format) {
  13919. +         if (*format == '%')
  13920. +             switch(*++format) {
  13921. +             case '\0':
  13922. +                 --format;
  13923. +                 break;
  13924. +             case 'A':
  13925. +                 if (t->tm_wday < 0 || t->tm_wday > 6)
  13926. +                     return(0);
  13927. +                 if (!_add(Afmt[t->tm_wday]))
  13928. +                     return(0);
  13929. +                 continue;
  13930. +             case 'a':
  13931. +                 if (t->tm_wday < 0 || t->tm_wday > 6)
  13932. +                     return(0);
  13933. +                 if (!_add(afmt[t->tm_wday]))
  13934. +                     return(0);
  13935. +                 continue;
  13936. +             case 'B':
  13937. +                 if (t->tm_mon < 0 || t->tm_mon > 11)
  13938. +                     return(0);
  13939. +                 if (!_add(Bfmt[t->tm_mon]))
  13940. +                     return(0);
  13941. +                 continue;
  13942. +             case 'b':
  13943. +             case 'h':
  13944. +                 if (t->tm_mon < 0 || t->tm_mon > 11)
  13945. +                     return(0);
  13946. +                 if (!_add(bfmt[t->tm_mon]))
  13947. +                     return(0);
  13948. +                 continue;
  13949. +             case 'C':
  13950. +                 if (!_fmt("%a %b %e %H:%M:%S %Y", t))
  13951. +                     return(0);
  13952. +                 continue;
  13953. +             case 'c':
  13954. +                 if (!_fmt("%m/%d/%y %H:%M:%S", t))
  13955. +                     return(0);
  13956. +                 continue;
  13957. +             case 'D':
  13958. +                 if (!_fmt("%m/%d/%y", t))
  13959. +                     return(0);
  13960. +                 continue;
  13961. +             case 'd':
  13962. +                 if (!_conv(t->tm_mday, 2, '0'))
  13963. +                     return(0);
  13964. +                 continue;
  13965. +             case 'e':
  13966. +                 if (!_conv(t->tm_mday, 2, ' '))
  13967. +                     return(0);
  13968. +                 continue;
  13969. +             case 'H':
  13970. +                 if (!_conv(t->tm_hour, 2, '0'))
  13971. +                     return(0);
  13972. +                 continue;
  13973. +             case 'I':
  13974. +                 if (!_conv(t->tm_hour % 12 ?
  13975. +                     t->tm_hour % 12 : 12, 2, '0'))
  13976. +                     return(0);
  13977. +                 continue;
  13978. +             case 'j':
  13979. +                 if (!_conv(t->tm_yday + 1, 3, '0'))
  13980. +                     return(0);
  13981. +                 continue;
  13982. +             case 'k':
  13983. +                 if (!_conv(t->tm_hour, 2, ' '))
  13984. +                     return(0);
  13985. +                 continue;
  13986. +             case 'l':
  13987. +                 if (!_conv(t->tm_hour % 12 ?
  13988. +                     t->tm_hour % 12 : 12, 2, ' '))
  13989. +                     return(0);
  13990. +                 continue;
  13991. +             case 'M':
  13992. +                 if (!_conv(t->tm_min, 2, '0'))
  13993. +                     return(0);
  13994. +                 continue;
  13995. +             case 'm':
  13996. +                 if (!_conv(t->tm_mon + 1, 2, '0'))
  13997. +                     return(0);
  13998. +                 continue;
  13999. +             case 'n':
  14000. +                 if (!_add("\n"))
  14001. +                     return(0);
  14002. +                 continue;
  14003. +             case 'p':
  14004. +                 if (!_add(t->tm_hour >= 12 ? "PM" : "AM"))
  14005. +                     return(0);
  14006. +                 continue;
  14007. +             case 'R':
  14008. +                 if (!_fmt("%H:%M", t))
  14009. +                     return(0);
  14010. +                 continue;
  14011. +             case 'r':
  14012. +                 if (!_fmt("%I:%M:%S %p", t))
  14013. +                     return(0);
  14014. +                 continue;
  14015. +             case 'S':
  14016. +                 if (!_conv(t->tm_sec, 2, '0'))
  14017. +                     return(0);
  14018. +                 continue;
  14019. +             case 's':
  14020. +                 if (!_secs(t))
  14021. +                     return(0);
  14022. +                 continue;
  14023. +             case 'T':
  14024. +             case 'X':
  14025. +                 if (!_fmt("%H:%M:%S", t))
  14026. +                     return(0);
  14027. +                 continue;
  14028. +             case 't':
  14029. +                 if (!_add("\t"))
  14030. +                     return(0);
  14031. +                 continue;
  14032. +             case 'U':
  14033. +                 if (!_conv((t->tm_yday + 7 - t->tm_wday) / 7,
  14034. +                     2, '0'))
  14035. +                     return(0);
  14036. +                 continue;
  14037. +             case 'W':
  14038. +                 if (!_conv((t->tm_yday + 7 -
  14039. +                     (t->tm_wday ? (t->tm_wday - 1) : 6))
  14040. +                     / 7, 2, '0'))
  14041. +                     return(0);
  14042. +                 continue;
  14043. +             case 'w':
  14044. +                 if (!_conv(t->tm_wday, 1, '0'))
  14045. +                     return(0);
  14046. +                 continue;
  14047. +             case 'x':
  14048. +                 if (!_fmt("%m/%d/%y", t))
  14049. +                     return(0);
  14050. +                 continue;
  14051. +             case 'y':
  14052. +                 if (!_conv((t->tm_year + TM_YEAR_BASE)
  14053. +                     % 100, 2, '0'))
  14054. +                     return(0);
  14055. +                 continue;
  14056. +             case 'Y':
  14057. +                 if (!_conv(t->tm_year + TM_YEAR_BASE, 4, '0'))
  14058. +                     return(0);
  14059. +                 continue;
  14060. +             case 'Z':
  14061. +                 if (!t->tm_zone || !_add(t->tm_zone))
  14062. +                     return(0);
  14063. +                 continue;
  14064. +             case '%':
  14065. +             /*
  14066. +              * X311J/88-090 (4.12.3.5): if conversion char is
  14067. +              * undefined, behavior is undefined.  Print out the
  14068. +              * character itself as printf(3) does.
  14069. +              */
  14070. +             default:
  14071. +                 break;
  14072. +         }
  14073. +         if (!gsize--)
  14074. +             return(0);
  14075. +         *pt++ = *format;
  14076. +     }
  14077. +     return(gsize);
  14078. + }
  14079. + static
  14080. + _secs(t)
  14081. +     struct tm *t;
  14082. + {
  14083. +     static char buf[15];
  14084. +     register time_t s;
  14085. +     register char *p;
  14086. +     struct tm tmp;
  14087. +     /* Make a copy, mktime(3) modifies the tm struct. */
  14088. +     tmp = *t;
  14089. +     s = mktime(&tmp);
  14090. +     for (p = buf + sizeof(buf) - 2; s > 0 && p > buf; s /= 10)
  14091. +         *p-- = s % 10 + '0';
  14092. +     return(_add(++p));
  14093. + }
  14094. + static
  14095. + _conv(n, digits, pad)
  14096. +     int n, digits;
  14097. +     char pad;
  14098. + {
  14099. +     static char buf[10];
  14100. +     register char *p;
  14101. +     for (p = buf + sizeof(buf) - 2; n > 0 && p > buf; n /= 10, --digits)
  14102. +         *p-- = n % 10 + '0';
  14103. +     while (p > buf && digits-- > 0)
  14104. +         *p-- = pad;
  14105. +     return(_add(++p));
  14106. + }
  14107. + static
  14108. + _add(str)
  14109. +     register char *str;
  14110. + {
  14111. +     for (;; ++pt, --gsize) {
  14112. +         if (!gsize)
  14113. +             return(0);
  14114. +         if (!(*pt = *str++))
  14115. +             return(1);
  14116. +     }
  14117. + }
  14118. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/symlink.c emacs-18.59/amiga/unix/src/symlink.c
  14119. *** /src/baseline/emacs-18.59/amiga/unix/src/symlink.c    Thu Jan  1 00:00:00 1970
  14120. --- emacs-18.59/amiga/unix/src/symlink.c    Sat Oct 17 12:45:10 1992
  14121. ***************
  14122. *** 0 ****
  14123. --- 1,14 ----
  14124. + #include "amiga.h"
  14125. + int symlink(char *from, char *to)
  14126. + {
  14127. + #ifdef SOFTLINK
  14128. +   chkabort();
  14129. +   if (MakeLink(to, from, 1)) return 0;
  14130. +   ERROR;
  14131. + #else
  14132. +   _OSERR = ERROR_NOT_IMPLEMENTED;
  14133. +   errno = EOSERR;
  14134. +   return -1;
  14135. + #endif
  14136. + }
  14137. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/time.c emacs-18.59/amiga/unix/src/time.c
  14138. *** /src/baseline/emacs-18.59/amiga/unix/src/time.c    Thu Jan  1 00:00:00 1970
  14139. --- emacs-18.59/amiga/unix/src/time.c    Tue Aug 25 22:09:58 1992
  14140. ***************
  14141. *** 0 ****
  14142. --- 1,12 ----
  14143. + #include "amiga.h"
  14144. + #include "timeconvert.h"
  14145. + time_t time(time_t *clock)
  14146. + {
  14147. +   struct timeval now;
  14148. +   if (_gettime(&now) < 0) return -1;
  14149. +   if (clock) *clock = now.tv_secs;
  14150. +   return (time_t)now.tv_secs;
  14151. + }
  14152. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/timeconvert.c emacs-18.59/amiga/unix/src/timeconvert.c
  14153. *** /src/baseline/emacs-18.59/amiga/unix/src/timeconvert.c    Thu Jan  1 00:00:00 1970
  14154. --- emacs-18.59/amiga/unix/src/timeconvert.c    Sat Jun  5 11:46:46 1993
  14155. ***************
  14156. *** 0 ****
  14157. --- 1,94 ----
  14158. + #include "amiga.h"
  14159. + #include "timeconvert.h"
  14160. + #include <time.h>
  14161. + #include <proto/timer.h>
  14162. + int _gettime(struct timeval *tp)
  14163. + {
  14164. +   struct tm *local;
  14165. +   time_t gmt;
  14166. +   GetSysTime(tp);
  14167. +   /* Correct for different epoch (78 vs 70) */
  14168. +   tp->tv_secs += 252460800;    
  14169. + #ifdef USE_LOCAL
  14170. +   /* correct for timezone */
  14171. +   local = gmtime(&tp->tv_secs);
  14172. +   local->tm_isdst = -1;        /* We don't know about dst */
  14173. +   gmt = mktime(local);
  14174. +   if (gmt == -1)
  14175. +     {
  14176. +       errno = EINVAL;
  14177. +       return -1;
  14178. +     }
  14179. +   tp->tv_secs = gmt;
  14180. + #endif
  14181. +   return 0;
  14182. + }
  14183. + #ifdef USE_LOCAL
  14184. + /* System is storing local time */
  14185. + void _gmt2amiga(time_t time, struct DateStamp *date)
  14186. + {
  14187. +   struct tm *local, *gmt;
  14188. +   local = localtime(&time);
  14189. +   gmt = gmtime(&time);
  14190. +   date->ds_Tick = 50 * local->tm_sec;
  14191. +   date->ds_Minute = local->tm_min + local->tm_hour * 60;
  14192. +   /* Now calculate the day assuming we are in GMT */
  14193. +   date->ds_Days = (time - 252460800) / 86400;
  14194. +   /* And correct by comparing local with GMT */
  14195. +   if (local->tm_year < gmt->tm_year ||
  14196. +       local->tm_year == gmt->tm_year && local->tm_yday < gmt->tm_yday)
  14197. +     date->ds_Days--;
  14198. +   if (local->tm_year > gmt->tm_year ||
  14199. +       local->tm_year == gmt->tm_year && local->tm_yday > gmt->tm_yday)
  14200. +     date->ds_Days++;
  14201. + }
  14202. + time_t _amiga2gmt(struct DateStamp *date)
  14203. + {
  14204. +   struct tm *local;
  14205. +   time_t secs;
  14206. +   secs = date->ds_Tick / 50 + date->ds_Minute * 60 + date->ds_Days * 86400 +
  14207. +     252460800;
  14208. +   local = gmtime(&secs);
  14209. +   local->tm_isdst = -1;        /* We don't know about dst */
  14210. +   return mktime(local);
  14211. + }
  14212. + #else
  14213. + /* System is storing GMT */
  14214. + /* Leap seconds are not handled !! */
  14215. + void _gmt2amiga(time_t time, struct DateStamp *date)
  14216. + {
  14217. +   time_t time78, day_secs;
  14218. +   time78 = time - 252460800;    /* Change Epoch */
  14219. +   date->ds_Days = time78 / 86400;
  14220. +   day_secs = time78 % 86400;
  14221. +   date->ds_Minute = day_secs / 60;
  14222. +   date->ds_Tick = 50 * (day_secs % 60);
  14223. + }
  14224. + time_t _amiga2gmt(struct DateStamp *date)
  14225. + {
  14226. +   time_t secs;
  14227. +   secs = date->ds_Tick / 50 + date->ds_Minute * 60 + date->ds_Days * 86400 +
  14228. +     252460800;
  14229. +   return secs;
  14230. + }
  14231. + #endif
  14232. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/timeconvert.h emacs-18.59/amiga/unix/src/timeconvert.h
  14233. *** /src/baseline/emacs-18.59/amiga/unix/src/timeconvert.h    Thu Jan  1 00:00:00 1970
  14234. --- emacs-18.59/amiga/unix/src/timeconvert.h    Tue Aug 25 20:32:38 1992
  14235. ***************
  14236. *** 0 ****
  14237. --- 1,27 ----
  14238. + #ifndef TIMECONVERT_H
  14239. + #define TIMECONVERT_H
  14240. + #include <time.h>
  14241. + int _gettime(struct timeval *tp);
  14242. + /* Effect: Store GMT time into tp.
  14243. +      If USE_LOCAL is defined, assume system stores local time,
  14244. +      otherwise it stores GMT.
  14245. + */
  14246. + void _gmt2amiga(time_t time, struct DateStamp *date);
  14247. + /* Effect: Converts a time expressed in seconds since
  14248. +      the 1 January 1970 0:00:00 GMT, to an Amiga time.
  14249. +      If USE_LOCAL is defined, Amiga time is assumed to
  14250. +      be stored as local time, otherwise as GMT.
  14251. +    Modifies: date, to contain the time in Amiga format
  14252. + */
  14253. + time_t _amiga2gmt(struct DateStamp *date);
  14254. + /* Effect: Convert a date expressed in Amiga format (as a 
  14255. +      local time if USE_LOCAL is defined, as GMT otherwise)
  14256. +      to a number of seconds since 1 January 1970 0:00:00 GMT.
  14257. +    Returns: this latter time
  14258. + */
  14259. + #endif
  14260. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/timers.c emacs-18.59/amiga/unix/src/timers.c
  14261. *** /src/baseline/emacs-18.59/amiga/unix/src/timers.c    Thu Jan  1 00:00:00 1970
  14262. --- emacs-18.59/amiga/unix/src/timers.c    Mon Aug 17 22:32:54 1992
  14263. ***************
  14264. *** 0 ****
  14265. --- 1,72 ----
  14266. + #include "amiga.h"
  14267. + #include "devices.h"
  14268. + #include "timers.h"
  14269. + struct timeinfo *_alloc_timer(void)
  14270. + {
  14271. +   struct timeinfo *timer = AllocMem(sizeof(struct timeinfo), 0);
  14272. +   if (!timer) return 0;
  14273. +   timer->sent = FALSE;
  14274. +   timer->io = (struct timerequest *)
  14275. +     _device_open("timer.device", UNIT_VBLANK, 0L, 0L, 0, sizeof(struct timerequest));
  14276. +   if (!timer->io)
  14277. +     {
  14278. +       FreeMem(timer, sizeof(struct timeinfo));
  14279. +       return 0;
  14280. +     }
  14281. +   return timer;
  14282. + }
  14283. + void _free_timer(struct timeinfo *timer)
  14284. + {
  14285. +   if (timer)
  14286. +     {
  14287. +       _timer_abort(timer);
  14288. +       _device_close(timer->io);
  14289. +       FreeMem(timer, sizeof(struct timeinfo));
  14290. +     }
  14291. + }
  14292. + void _timer_abort(struct timeinfo *timer)
  14293. + {
  14294. +   if (timer->sent)
  14295. +     {
  14296. +       AbortIO(timer->io);
  14297. +       WaitIO(timer->io);
  14298. +       /* Clear timer io signal */
  14299. +       /*SetSignal(0, timer_sig(timer));*/
  14300. +       timer->sent = FALSE;
  14301. +     }
  14302. + }
  14303. + ULONG _timer_sig(struct timeinfo *timer)
  14304. + {
  14305. +   return 1UL << timer->io->tr_node.io_Message.mn_ReplyPort->mp_SigBit;
  14306. + }
  14307. + void _timer_start(struct timeinfo *timer, int secs, int micros)
  14308. + /* _timer_start(timer, 0) stops a timer */
  14309. + {
  14310. +   _timer_abort(timer);
  14311. +   if (secs || micros)
  14312. +     {
  14313. +       timer->io->tr_time.tv_secs = secs;
  14314. +       timer->io->tr_time.tv_micro = micros;
  14315. +       timer->io->tr_node.io_Command = TR_ADDREQUEST;
  14316. +       SendIO(timer->io);
  14317. +       timer->sent = TRUE;
  14318. +     }
  14319. + }
  14320. + int _timer_expired(struct timeinfo *timer)
  14321. + /* A non-started timer is defined to not have expired */
  14322. + {
  14323. +   if (timer->sent && CheckIO(timer->io))
  14324. +     {
  14325. +       WaitIO(timer->io);
  14326. +       timer->sent = FALSE;
  14327. +       return TRUE;
  14328. +     }
  14329. +   return FALSE;
  14330. + }
  14331. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/tmpnam.c emacs-18.59/amiga/unix/src/tmpnam.c
  14332. *** /src/baseline/emacs-18.59/amiga/unix/src/tmpnam.c    Thu Jan  1 00:00:00 1970
  14333. --- emacs-18.59/amiga/unix/src/tmpnam.c    Sat Oct 24 09:39:52 1992
  14334. ***************
  14335. *** 0 ****
  14336. --- 1,13 ----
  14337. + #include "amiga.h"
  14338. + #include <string.h>
  14339. + #include <stdio.h>
  14340. + char *tmpnam(char *s)
  14341. + {
  14342. +   static char tmpbuf[L_tmpnam];
  14343. +   if (!s) s = tmpbuf;
  14344. +   strcpy(s, P_tmpdir "tmp_XXXXXX");
  14345. +   return mktemp(s);
  14346. + }
  14347. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/truncate.c emacs-18.59/amiga/unix/src/truncate.c
  14348. *** /src/baseline/emacs-18.59/amiga/unix/src/truncate.c    Thu Jan  1 00:00:00 1970
  14349. --- emacs-18.59/amiga/unix/src/truncate.c    Sun Jul 19 17:47:02 1992
  14350. ***************
  14351. *** 0 ****
  14352. --- 1,21 ----
  14353. + #include "amiga.h"
  14354. + #include "amigados.h"
  14355. + int truncate(char *path, off_t length)
  14356. + {
  14357. +   BPTR fh = Open(path, MODE_OLDFILE);
  14358. +   int err;
  14359. +   chkabort();
  14360. +   if (fh)
  14361. +     {
  14362. +       int ret = _do_truncate(fh, length);
  14363. +       if (Close(fh) || ret) return ret;
  14364. +       err = IoErr();
  14365. +     }
  14366. +   else err = IoErr();
  14367. +   errno = convert_oserr(err);
  14368. +   return -1;
  14369. + }
  14370. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/uid.c emacs-18.59/amiga/unix/src/uid.c
  14371. *** /src/baseline/emacs-18.59/amiga/unix/src/uid.c    Thu Jan  1 00:00:00 1970
  14372. --- emacs-18.59/amiga/unix/src/uid.c    Sun Jul 19 17:47:02 1992
  14373. ***************
  14374. *** 0 ****
  14375. --- 1,4 ----
  14376. + #include "amiga.h"
  14377. + uid_t getuid(void) { return AMIGA_UID; }
  14378. + uid_t geteuid(void) { return AMIGA_UID; }
  14379. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/umask.c emacs-18.59/amiga/unix/src/umask.c
  14380. *** /src/baseline/emacs-18.59/amiga/unix/src/umask.c    Thu Jan  1 00:00:00 1970
  14381. --- emacs-18.59/amiga/unix/src/umask.c    Sun Jul 19 17:47:02 1992
  14382. ***************
  14383. *** 0 ****
  14384. --- 1,3 ----
  14385. + #include "amiga.h"
  14386. + int umask(int mask) { return 0; }
  14387. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/unix-hard.lib.uue emacs-18.59/amiga/unix/src/unix-hard.lib.uue
  14388. *** /src/baseline/emacs-18.59/amiga/unix/src/unix-hard.lib.uue    Thu Jan  1 00:00:00 1970
  14389. --- emacs-18.59/amiga/unix/src/unix-hard.lib.uue    Tue Jul 12 10:32:19 1994
  14390. ***************
  14391. *** 0 ****
  14392. --- 1,1186 ----
  14393. + begin 666 unix-hard.lib
  14394. + M```#^@``*UH```/I````"2!O``0@UTC0_/QP`$YU(&\`!"`O``AF`G`!(EA,
  14395. + MT/S\6(].T0```_(```/I````#$CG(#(@;P`80^\`'$7Z`!PF;P`4)`LL>0``
  14396. + M``!.K@``(`N0@DS?3`1.=1;`3G4``````^^!```#7T%B<T5X96-"87-E````
  14397. + M`0```!B&```#7TQ63U)A=T1O1FUT`````0```!X````````#\@```^D````*
  14398. + M(&\`!"\-*D@@#68$2^P``$'L```B31+89OPO#4ZZ``!83RI?3G4``````_@`
  14399. + M```!`````0```!(````!`````@````X````````#[X,```)?;6MT96UP````
  14400. + M``$````>`````````_$````#`````$]05%,`!`!````#\@```^H````$=#IT
  14401. + M;7!?6%A86%A8`````````_(```/K````"0```_(```/I````;R!O``0B;P`(
  14402. + MGOP`($CG+Q8F22](`"`O20`D<`Q.N@``*D`@+```4JP``"(L``#2@"\!2&P`
  14403. + M`$AO`#!.N@``3^\`#'!WL!-F-DHK``%F,$'O`"A#[``03KH``"9`+&P``$ZN
  14404. + M_\0N`'P`0>\`*"(()#P```/M3J[_XBH`>`%@1G!RL!-F-DHK``%F,$'O`"A#
  14405. + M[``23KH``"9`+&P``$ZN_\HJ`'@`0>\`*"(()#P```/N3J[_XBX`?`%@"G`6
  14406. + M*4```&```(Q*A6<$2H=F!$ZZ```@"V="2H5G/DJ'9SH@#6<V<``O`"\`+P!(
  14407. + M>/__+P8O!R`%(@0@;P`X3KH``$_O`!@K0``(9Q`JK```*4T``"M+``0@"V`Z
  14408. + M(`UG!B!-3KH``$J%9PY*A&<*(@4L;```3J[_W$J'9PY*AF<*(@<L;```3J[_
  14409. + MW"`+9P8@2TZZ``!P`$S?:/3>_``@3G4@;P`$44](YP$T)DA+[```+T@`$&`Z
  14410. + M(&H`!+'+9C`F52XK``@JDR!K``1.N@``($M.N@``0J=(;P`8+P=.N@``3^\`
  14411. + M#$J`:PX@+P`48`HJ2B15(`IFP'#_3-\L@%!/3G4``````_@````#`````0``
  14412. + M`)````!4````-`````,````"```!:````0P```$(`````````^^#```"0&UA
  14413. + M;&QO8P`````!````'H8```1?7V9I9F]?;V9F<V5T`````````@```"@````D
  14414. + MA@```U]?9FEF;U]B87-E``````$````L@P```U]?<W!R:6YT9@````````$`
  14415. + M```\@P```D!F;W!E;@```````@```)0```!8A@```E]$3U-"87-E````!```
  14416. + M`3X```$L````F@```%Z&```"7V5R<FYO```````!````OH,```)`7W-E=&5R
  14417. + M<@````$```#.@P``!$!?<W1A<G1?<')O8V5S<P`````!````^H,```)`9G)E
  14418. + M90````````(```&,```!'H,```)`9F-L;W-E``````(```&&```!3(,```)?
  14419. + M=V%I='!I9`````$```&8`````````_$````#`````$]05%,`!`!````#\@``
  14420. + M`^H````%<&EP93IU>&]P96XN)6QX`'<`<@````/R```#ZP````$```/R```#
  14421. + MZ0```,6>_``82.<A/DGY`````$7L`!@J6B!:+AHF;``D+T@`()/)+'@`!$ZN
  14422. + M_MHD;```($!#Z`!*($DB;```3J[_"B!L``!#[``$3J[^DD/O`"0B_(```"1P
  14423. + M`2+`0IDB+P`@0>\`)"0(+$I.KOVBX8`K0``8+'@`!$ZN_WPB2TZN_GI*@&<*
  14424. + M($`B34ZN_I)@"")-<!Q.KO\N3J[_=B)+<"!.KO\N(F\`("`'3J[_+DS??(3>
  14425. + M_``82H!.=2!O``0@+P`((B\`#"]O`!``!"]O`!0`""]O`!@`#"]O`!P`$"]O
  14426. + M`"``%"]O`"0`&%E/2.</%BHO`#@L+P`T+@`J2"]!`!QP'$ZZ```F0"!-2AAF
  14427. + M_%.(D<T@"%*`*4``('(!+'@`!$ZN_SHI0``<(D`2W6;\<!QR`4ZN_SHI0``8
  14428. + M<"!R`4ZN_SHI0``D<`$I0``00?K_G"`(0_K^L)")*4``%$'L``!.KO\B*4``
  14429. + M`"(+9P`!2DJL`!QG``%"2JP`&&<``3I*K``D9P`!,DJ`;P`!+"!L```@*``4
  14430. + M0?K^;B)L```B:0`08`(2V%.`9/I![```(FP`)!+89OP@+```4JP``"=```PG
  14431. + M1P`03>P`%CS\`!1P!1E```P@5C%\`!P`$A%```@@7B%K``P`%"`\@``#\DJ&
  14432. + M9@)P`2@`2H5O!"`%8`0@+```0J=(>``!+SR```/Z+P`O/(```_,O!B\$+R\`
  14433. + M3"\\@``#\2\O`%`O/(```_`O+P!4+SR```/O+R\`6"\\@``#[2\O`%@O/(``
  14434. + M`^XO!R\\@``#["!L```O*``0+SR```/K+&P``"(/3J[^#D_O`%0G0``(9S0@
  14435. + M;```+'@`!$ZN_H`@;```+'@`!$ZN_HQ*@&?D0JL`%$'L```B2RQX``1.KO\0
  14436. + M("L`#&!H+&P``$ZN_WQ.N@``8`)P#"E````@"V<&($M.N@``("P`'&<.(D`@
  14437. + M+``@+'@`!$ZN_RX@+``89PPB0'`<+'@`!$ZN_RX@+``D9PPB0'`@+'@`!$ZN
  14438. + M_RX@+```;PH@0"QX``1.KO\<</],WVCP6$].=0```_@````#`````0```5H`
  14439. + M``%6```!1@```!<````"```"_````NH```+8```"S````L0```)0```!S```
  14440. + M`<(```&J```!E@```8H```%\```!=````6P```%B```!0````30```$B```!
  14441. + M%````$0````X````&@```!`````````#[X$```-?3&EN:V5R1$(````````!
  14442. + M````"H8```)?1$]30F%S90````,```*F```"7@```"R&```$7U]S=&%R='5P
  14443. + M7W!O<G0```````,```)^```"<@```$"#```"0&UA;&QO8P`````!```!`(8`
  14444. + M``-?7V1O;W)?;F%M90`````!```!IH8```-?7VYE>'1?<&ED```````"```!
  14445. + MM@```;*&```#7U]S=&%C:U]S:7IE`````0```?J&```#7U]P<F]C97-S97,`
  14446. + M`````0```I*#```$0&-O;G9E<G1?;W-E<G(```````$```*NA@```E]E<G)N
  14447. + M;P```````0```K:#```"0&9R964````````!```"P`````````/Q`````P``
  14448. + M``!/4%13``0`0````_(```/J````!@````````````````````$`````````
  14449. + M`````_(```/K````"@```_(```/I`````TZZ```@+```3G4``````^^#```#
  14450. + M0&-H:V%B;W)T`````````0````*&```#7U]O=7)?<&ED`````````0````8`
  14451. + M```````#\0````,`````3U!44P`$`$````/R```#Z0```",@+P`$(&\`"")O
  14452. + M``Q(YP$4+@`F22I(3KH``'`!OH!M+'`@OH!L)B`+9PX@!^>`0^P``-/`)MDF
  14453. + MV2`-9PSGAT'L``#1QR#=(-UP`&`(<!8I0```</],WRB`3G4@+P`$(&\`")[\
  14454. + M`!`O2``(0J\`#$'O``A#UV&62H!G"#!\__\@"&`"(!?>_``03G4``````^^#
  14455. + M```#0&-H:V%B;W)T`````````0```!B&```$7U]S:6=?:&%N9&QE<G,`````
  14456. + M``(```!`````,(8```)?97)R;F\```````$```!0`````````_$````#````
  14457. + M`$]05%,`!`!````#\@```^D````5("\`!$CG#P`N`"PL``!.N@``*4<``'H`
  14458. + M>`$@+```P(1G#B`L``#`A&8&(`5.N@``4H78A'`@NH!MX"`&3-\`\$YU("\`
  14459. + M!"\'(@`@+```@($N'V"P```#[X8```-?7W-I9U]M87-K```````$````3```
  14460. + M`"0````4````#(,```-`8VAK86)O<G0````````!````$(8```1?7W-I9U]P
  14461. + M96YD:6YG`````````0```!R#```$0%]S:6=?9&ES<&%T8V@```````$````N
  14462. + M`````````_$````#`````$]05%,`!`!````#\@```^D```":(&\`!"`O``@B
  14463. + M;P`,+V\`$``$64](YR$T+@`F;P`<*D@D22])`!1@`AK:2A)G!%.';O:U[P`4
  14464. + M8QH0*O__<B^P`6<0=#JP`F<*4X=O!AK!8`(:VTH39P13AV[V0A5*AU[`1`!(
  14465. + M@$C`3-\LA%A/3G4@+P`$(&\`"")O``Q93TCG)S8N`"I(+TD`($JL``!G``#^
  14466. + M(&P``"9H``Q.N@``(BL`!+*`9@``Z"!L``!(:``L0>P``")3<`!&`&$`_UA8
  14467. + M3TJ`9P``RD'L```B31`8L!EF``"\2@!F]&8``+1*AV80(&P``"`H`!AR`["!
  14468. + M9P``H"!L```@*``8<ORP@6<$68!F/B)L```B$2QL``!.KO^"+``@;```T/P`
  14469. + M+"((=/Y.KO^L*@!G$B(%0>P``"0(3J[_FB(%3J[_IB(&3J[_@F`&*6@`(```
  14470. + M(&P``"EH``0`@"EH``@`?$/H``Q%[`"$)-DDV239(&P``"EH`!@`!"EH`!P`
  14471. + M="\O`"`O*P$8($U#[```<`!.N@``4$]P`6`"<`!,WVSD6$].=2!O``0B;P`(
  14472. + M2.<`%"9)*DA.N@``($TB2W``80#^R$J`9P1P`&`,($TB2TS?*`!.^@``3-\H
  14473. + M`$YU(&\`!")O``A(YP`4)DDJ2$ZZ```@32)+<`%A`/Z02H!F<$AX`/](;```
  14474. + M+PU.N@``3^\`#$J`:@P@32)+3-\H`$[Z``!+TT*=0JL`$G`!-T``#D)K`!`G
  14475. + M?````@``,C=```Q"JP`V0>P``")(2AEF_%.)D\@G20`60IT@/`\,/P`G0``B
  14476. + M)T``&B=``"HJ_```H?]P`$S?*`!.=0```_@````(`````0```7X```%P```!
  14477. + M:@```5H```%2```!3````4(```$H`````````^^&```#7VQA<W1?9&ER````
  14478. + M`````P```0(```"2````BH,```)`7V=E=%]C9`````$```":A@```U]L87-T
  14479. + M7V5N=')Y``````8```%D```!1@```1(```#P````X````*B&```#7U]T96UP
  14480. + M7V9N86UE````!````C8```'V````Q@```+"&```"7T1/4T)A<V4````!```!
  14481. + M"(,```-`7VQF:6)S=&%T```````!```!A(,```-`8VAK86)O<G0````````"
  14482. + M```!X````:B#```#0%]F:6)S=&%T`````````@```A````'&@P```U]R96%D
  14483. + M;&EN:P````````$```'\`````````_$````#`````$]05%,`!`!````#\@``
  14484. + M`^L```!!```#\@```^D```#0(&\`!%E/2.<`%"](``@@;P`(*F@!#&`*)E4@
  14485. + M34ZZ```J2R`-9O),WR@`6$].=2!O``2>_``02.<@-BI()FT`#$/K`0PO2``<
  14486. + M+TD`("!+8;1"K```0JL!#$*M``0@%>6`($`G:``,`1A!ZP`(+T@`&&```)Y!
  14487. + MZP`0(DA*&6;\4XF3R"`)D<C0_``L<@`R`-*(4H%T`#0!/T``%C]!`!0@`DZZ
  14488. + M```D0$J`9@9P#&```)Q-TD*>(&\`(""*+U``("SK`(@LZP"$0>L`C$/J``PB
  14489. + MV"+8(M@E:P`,`!@E:P!\`!Q+Z@`@.V\`%``$.V\`%@`&(&\`'"`H``12J``$
  14490. + M*T``"$'J`"Q#ZP`0$-EF_"JK``@J;P`<(A4D+P`8+&P``$ZN_Y1*@&8`_TXG
  14491. + M:P$,`1!"K0`$+&P``$ZN_WQR=-*!L(%F!'`!8`I.N@``*4```'``3-]L!-[\
  14492. + M`!!.=2!O``193TCG(#8O2``4<!!.N@``*D!P1^6(3KH``"9`(&\`%"`(2AAF
  14493. + M_%.(D<`@"%*`3KH``"1`3KH``"`-9P``@B`*9WP@"V=X*TL`#"M\```!'``(
  14494. + MD<@G2`$0)T@!#"=(`10FBB!O`!04V&;\3KH``"=```0B+P`4+&P``'3^3J[_
  14495. + MK"J`9R)!ZP`((@`D""QL``!.KO^:2H!G#B!-80#^.$J`9Q0@#6`^+&P``$ZN
  14496. + M_WQ.N@``*4```"!-80``-F`D<`PI0```(`UG!B!-3KH``"`*9P8@2DZZ```@
  14497. + M"V<&($M.N@``<`!,WVP$6$].=2!O``1(YP`6*D@F;0`,3KH``$*L```@2V$`
  14498. + M_:`@4TZZ```@%6<*(@`L;```3J[_IB!M``Q.N@``($U,WV@`3OH``"!O``19
  14499. + M3TCG`S0O2``4(&\`%"IH``R7RTZZ``!*K0$49R1^`"1M`0P@;P`4+"@`!&`$
  14500. + M4H<D4KZ&;`0@"F;T*TH!$$*M`10@+0$09R(F0-;\`"`I;P`4``!%[0$0(%(I
  14501. + M2```(%(DT"!O`!12J``$(`M,WRS`6$].=2!O``0O#2I(3KH``"`M``0J7TYU
  14502. + M(&\`!"`O``A(YP$4+@`J2"9M``Q.N@``<`$G0`$4*T<`!$S?*(!.=0```^^#
  14503. + M```"0&9R964````````'```"B@```H````)J```"/@```C0```(J````'H8`
  14504. + M``-?;&%S=%]D:7(````````#```"X@```EX```!2@P```D!M86QL;V,`````
  14505. + M!````8X```%V```!;````**&```"7T1/4T)A<V4````&```"=````@8```'L
  14506. + M```!U@```30```$<@P``!$!C;VYV97)T7V]S97)R```````"```"#@```4B&
  14507. + M```"7V5R<FYO```````#```"(````A(```%,@P```T!C:&MA8F]R=```````
  14508. + M``4```,N```##@```J8```):```!E(,```)`7V=E=%]C9`````$```'*A@``
  14509. + M`U]L87-T7V5N=')Y``````$```+L`````````_$````#`````$]05%,`!`!`
  14510. + M```#\@```^D````(2.<!`BQL``!R`$ZN_X(N`"(`3J[_@B`'3-]`@$YU````
  14511. + M``/OA@```E]$3U-"87-E`````0````8````````#\0````,`````3U!44P`$
  14512. + M`$````/R```#ZP````(```/R```#Z0```!L@;P`$("\`")[\`$1(YP,$+@`J
  14513. + M2'S_3KH``"!-0^\`#DZZ``!*@&8D<!#`KP`6YH!R4.6)PJ\`%NR!@H#"A[*'
  14514. + M9@1\`&`&<`TI0```(`9,WR#`WOP`1$YU(&\`!"`O``A(YP$$3-\@@&">````
  14515. + M``/O@P```T!C:&MA8F]R=`````````$````8@P```T!?9FEB<W1A=```````
  14516. + M``$````BA@```E]E<G)N;P```````0```$H````````#\0````,`````3U!4
  14517. + M4P`$`$````/R```#Z0```$$@+P`$(&\`"%E/2.<G%BX`*DA.N@``2&\`'$AX
  14518. + M"`$O!TZZ``!/[P`,4H!F!G#_8```RD*G+&P``'(")`].KO\<3^\`!"9`2H!G
  14519. + M+"(O`!PD"TZN_GI*0&<>("\`'.6`+PT@0"\H``@B0G``D<A.N@``4$]\`&!@
  14520. + M3J[_?"H`<BY&`;"!9D9\`"`O`!SE@"!`*J@`"$WM``1"GBS\```A_W`!/,`\
  14521. + MP$)>*WP```(``#)"K0`V0JT`%B`\#PP_`"M``"(K0``:*T``*F`,?/\@!4ZZ
  14522. + M```I0```(`MG#"0++&P``'("3J[_%DAO`!Q(>`@"+P=.N@``3^\`#"`&3-]H
  14523. + MY%A/3G4``````^^#```#0&-H:V%B;W)T`````````0```!2#```"7VEO8W1L
  14524. + M```````"````\@```"*&```"7T1/4T)A<V4````"````W@```#:#```#0%]L
  14525. + M9FEB<W1A=````````0```&Z#```$0&-O;G9E<G1?;W-E<G(```````$```#0
  14526. + MA@```E]E<G)N;P```````0```-0````````#\0````,`````3U!44P`$`$``
  14527. + M``/R```#Z0````X@;P`$(F\`"$CG,!8F22I(3KH``"(+)`TL;```=@%.KOY$
  14528. + M2H!G!'``8`9.N@``</],WV@,3G4``````^^#```#0&-H:V%B;W)T````````
  14529. + M`0```!*&```"7T1/4T)A<V4````!````&H,```)`7W-E=&5R<@````$````L
  14530. + M`````````_$````#`````$]05%,`!`!````#\@```^D````^(&\`!")O``A9
  14531. + M3TCG,S8J2'X`(&P``"PH`.`O20`@2H9F($JL``!F&D'L`!@B""QL```D/```
  14532. + M`^U.KO_B+`!G`GX!2H9G-B(&0>P`(B0(0>P``"8(+&P``$ZN_IXB!B0-)B\`
  14533. + M($ZN_IXB!G0*3J[^R$J'9U@B!DZN_]Q@4"!L```F:`"X,'S__[?(9T!#[``H
  14534. + M<"4L>``$3J[]V"1`2H!G+"EL````#"E-`!`O"B!++$I#[``$E<HF;P`D3J[]
  14535. + MM$S?!``B2BQX``1.KOYB3-]LS%A/3G4@;P`$0^\`"&$`_RI.=2!O``1#[P`(
  14536. + M80#_''`43KH``$YU``````/X````!@````$```"R````J````*0```".````
  14537. + M2@```"H````````#[X8```%?7W5S`````@```'X````4A@```U]?5T)E;F-H
  14538. + M37-G``````$````DA@```E]$3U-"87-E`````@```%8````PA@``!%]?4')O
  14539. + M9W)A;4YA;64````````"````H@```%"#```"0&5X:70````````!````\@``
  14540. + M``````/Q`````P````!/4%13``0`0````_(```/J````#T]K```````4````
  14541. + M`````````````````&-O;G-O;&4Z```E<SH@``!I;G1U:71I;VXN;&EB<F%R
  14542. + M>0```````^P````!`````0```!0````````#\@```^D````'2.<@`B(O``Q!
  14543. + M[P`0)`@L;```3J[_'$S?0`1.=0```^^&```"7T1/4T)A<V4````!````$```
  14544. + M``````/Q`````P````!/4%13``0`0````_(```/I````#R!O``0O#2I(*JP`
  14545. + M`$'M``0J7T[Z```@;P`$("\`"$CG`00N`"I((!5.N@``0>T`!"`'3-\@@$[Z
  14546. + M`````````^^&```#7U]S:6=?;6%S:P```````0````J#```"0%]S971J;7``
  14547. + M```!````%(,```-`<VEG<V5T;6%S:P`````!````*H,```-`7VQO;F=J;7``
  14548. + M```````!````.`````````/Q`````P````!/4%13``0`0````_(```/I````
  14549. + M!R!O``0@+P`(+P`O+```+PA.N@``3^\`#'``3G4```/OA@``!%]?<WES=&5M
  14550. + M7VYA;64````````!````#(,```)?<W1R;F-P>0````$````2`````````_$`
  14551. + M```#`````$]05%,`!`!````#\@```^D````I(&\`!)[\`%1(YS@6*D@@#6<D
  14552. + M2A5G("!-2AAF_%.(D<TB""!-<`).N@``0>P``'`"(@!.N@``("P``&\2L*P`
  14553. + M`&X,Y8!![```)G`(`&`L4H!F)"(L``!![P`;)@@L;```=`!X44ZN_BQ*0&<$
  14554. + M)D-@"D?L``1@!$?L``@@2TH89OQ3B)'+(@@@2W`"3KH``$'L`!QP`G(!3KH`
  14555. + M`$S?:!S>_`!43G4```/X````!`````$```"0````>````'(````L````````
  14556. + M`^^#```"0'=R:71E```````$````F````(P````T````*(8```)?97)R;F\`
  14557. + M``````$````XA@```U]S>7-?;F5R<@````````$````^A@```U]S>7-?97)R
  14558. + M;&ES=`````$```!&A@```E]?3U-%4E(``````0```%2&```"7T1/4T)A<V4`
  14559. + M```!````7@````````/Q`````P````!/4%13``0`0````_(```/J````"#H@
  14560. + M```T,@``56YK;F]W;B!E<G)O<B!C;V1E```*```````#\@```^D````````#
  14561. + M\0````,`````3U!44P`$``````/R```#Z@```,9N;R!S:6=N86P`:&%N9W5P
  14562. + M``!I;G1E<G)U<'0`<75I=```:6QL96=A;"!I;G-T<G5C=&EO;@!T<F%C92!T
  14563. + M<F%P``!A8F]R=`!E;70@:6YS=')U8W1I;VX`9FQO871I;F<@<&]I;G0@97AC
  14564. + M97!T:6]N``!K:6QL``!B=7,@97)R;W(`<V5G;65N=&%T:6]N('9I;VQA=&EO
  14565. + M;@``8F%D(&%R9W5M96YT('1O('-Y<W1E;2!C86QL`'=R:71E(&]N(&$@<&EP
  14566. + M92!W:71H(&YO(&]N92!T;R!R96%D(&ET``!A;&%R;2!C;&]C:P!S;V9T=V%R
  14567. + M92!T97)M:6YA=&EO;B!S:6=N86P@9G)O;2!K:6QL`'-T871U<R!S:6=N86P`
  14568. + M<V5N9&%B;&4@<W1O<"!S:6=N86P@;F]T(&9R;VT@='1Y`'-T;W`@<VEG;F%L
  14569. + M(&9R;VT@='1Y``!C;VYT:6YU92!A('-T;W!P960@<')O8V5S<P``8VAI;&0@
  14570. + M<W1A='5S(&AA<R!C:&%N9V5D``!B86-K9W)O=6YD(')E860@871T96UP=&5D
  14571. + M(&9R;VT@8V]N=')O;"!T='D``&)A8VMG<F]U;F0@=W)I=&4@871T96UP=&5D
  14572. + M(&9R;VT@8V]N=')O;"!T='D`:6YP=70@<F5C;W)D(&%V86EL86)L92!A="!C
  14573. + M;VYT<F]L('1T>0!E>&-E961E9"!#4%4@=&EM92!L:6UI=`!E>&-E961E9"!F
  14574. + M:6QE('-I>F4@;&EM:70``'5N:VYO=VX@<VEG;F%L``!U;FMN;W=N('-I9VYA
  14575. + M;```=VEN9&]W(&-H86YG960``'5N:VYO=VX@<VEG;F%L``!U<V5R('-I9VYA
  14576. + M;"`Q`'5S97(@<VEG;F%L(#(```````````H````2````'````"(````V````
  14577. + M0@```$@```!8````<@```'@```""````F@```+8```#>````Z@```1````$>
  14578. + M```!0````58```%R```!C````;@```'D```""@```B(```(\```"3````EP`
  14579. + M``)L```"?````HH```/L````(`````$```,4```#$````PP```,(```#!```
  14580. + M`P````+\```"^````O0```+P```"[````N@```+D```"X````MP```+8```"
  14581. + MU````M````+,```"R````L0```+````"O````K@```*T```"L````JP```*H
  14582. + M```"I````J````*<```"F`````````/R```#Z0```#H@+P`$(&\`""(O``PB
  14583. + M;P`064](YP<4+`$N`"I(+TD`%'H`)FP``&`N2H=G""`K``R^@&8@>@%P`;"K
  14584. + M`!1F%BHK``P@#6<$*JL`&"!+3KH``"`%8"HF4TJ39LX(!@``9P1P`&`:2H5F
  14585. + M"G`**4```'#_8`QP`$ZZ``!.N@``8*),WRC@6$].=2!O``0@+P`((F\`#$CG
  14586. + M`10B`'``3-\H@&``_W`@;P`$+PUP`"(`D\DJ7V``_UX@+P`$(&\`""(O``Q(
  14587. + MYP,$+`$N`"I(4H!F`GX`2H=J`D2'(`<B!B!-D\E,WR#`8`#_+``````#[X8`
  14588. + M``-?7W!R;V-E<W-E<P`````!````)(,```-`7V9R965?96YT<GD````!````
  14589. + M3H8```)?97)R;F\```````$```!L@P``!$!?=V%I=%]S:6=N86QS```````!
  14590. + M````=H,```1`7VAA;F1L95]S:6=N86QS`````0```'H````````#\0````,`
  14591. + M````3U!44P`$`$````/R```#Z0```!(@+P`$44](YP,`+@!.N@``(`=.N@``
  14592. + M2H!G(B)`(&D`'"](``P@:0`$<`$B;P`,3I$L`"`'3KH``"`&8`)P_TS?`,!0
  14593. + M3TYU``````/O@P```T!C:&MA8F]R=`````````$````.@P```T!?9FEN9%]F
  14594. + M9`````````$````4@P```T!?9G)E95]F9`````````$````V`````````_$`
  14595. + M```#`````$]05%,`!``````#\@```^D````#(&\`!"`O``A.^@`````#[X,`
  14596. + M``)`<W1R<F-H<@````$````*`````````_$````#`````$]05%,`!``````#
  14597. + M\@```^D````#(&\`!"`O``A.^@`````#[X,```)`<W1R8VAR``````$````*
  14598. + M`````````_$````#`````$]05%,`!``````#\@```^D```!-2.<`!G`(<@`L
  14599. + M>``$3J[_.BI`2H!F!'``8"Y"K0`$2'@`*'``+P!![```<@&3R<%!3KH``%!/
  14600. + M*H!F#")-<`A.KO\N<`!@`B`-3-]@`$YU(&\`!$CG``8J2"`-9Q@@36$``!X@
  14601. + M54ZZ```B37`(+'@`!$ZN_RY,WV``3G4@;P`$2.<`!BI(2JT`!&<4(E4L>``$
  14602. + M3J[^(")53J[^)D*M``1,WV``3G4@;P`$(%`B:``.<``0*0`/<@'AH2`!3G4@
  14603. + M;P`$("\`""(O``Q(YP,&+`$N`"I(8:I*AV8$2H9G'B)5(T<`("-&`"0S?``)
  14604. + M`!PL>``$3J[^,G`!*T``!$S?8,!.=2!O``1(YP`&*DA*K0`$9QPB52QX``1.
  14605. + MKOXL2D!G#B)53J[^)D*M``1P`6`"<`!,WV``3G4```/X`````0````$````H
  14606. + M`````````^^#```$0%]D979I8V5?;W!E;@````````$````R@P``!$!?9&5V
  14607. + M:6-E7V-L;W-E```````!````9@````````/Q`````P````!/4%13``0`0```
  14608. + M`_(```/J````!'1I;65R+F1E=FEC90````````/R```#Z0```!XO#B`L```B
  14609. + M`$A!0D'2@"`L``"S@"E```1"K``(0^P`!'``+'@`!$ZN_=@I0```</].KOZV
  14610. + M2(!(P"E```!*K```9PA*@&L$<`%@`G``*4``#"Q?3G4O#B`L``!K""QX``1.
  14611. + MKOZP("P``&<*(D`L>``$3J[^8BQ?3G4```/X`````P````$```!8````.@``
  14612. + M`!X````&`````@```&8```!.````/@```"P````:````%@````````/OA@``
  14613. + M!%]?<W1A<G1U<%]T:6UE```````!````!(8```%?7W5S`````0```!``````
  14614. + M```#\0````,`````3U!44P`$`$````/R```#Z@````7_____9FEF;RYL:6)R
  14615. + M87)Y`````````_(```/K````!````_(```/I````%B`O``113TCG`P`N`$ZZ
  14616. + M```@!TZZ``!*@&<H(D`@:0`<<D#EB<*1+T@`#"`!(&D`!")O``Q.D2P`(`=.
  14617. + MN@``(`9@`G#_3-\`P%!/3G4@+P`$+P<N'V"N``````/O@P```T!C:&MA8F]R
  14618. + M=`````````$````.@P```T!?9FEN9%]F9`````````$````4@P```T!?9G)E
  14619. + M95]F9`````````$````\`````````_$````#`````$]05%,`!``````#\@``
  14620. + M`^D```!B(&\`!"`O``@B;P`,+V\`$``$+V\`%``(+V\`&``,+V\`'``0+V\`
  14621. + M(``4+V\`)``844](YP<4+@!([P,``!1\`"IL``!@%DJM``1F"C!\``$K2``$
  14622. + M8`Q2AMK\`"2\K``$;>0@+``$O(!F>'(*TZP`!"`L``0B`.>!TH#E@2`!3KH`
  14623. + M`"I`2H!F#'`,*4```'#_8```CG#VT*P`!"(`YX'2@.6!(&P``")-8`(2V%.!
  14624. + M9/H@+```9P8@0$ZZ```I30``>O;:K``$(`7G@-"%Y8#;P)?+*TL`!%*%VOP`
  14625. + M)+JL``1M\"`&YX#0AN6`(&P``"&O`!0(!"&'"``AKP`8"`A+[P`@(9T(#"&=
  14626. + M"!`AG0@42^\`+"&="!@AG0@<(9T(("`&3-\HX%!/3G4@+P`$(@!K%K*L``1L
  14627. + M$"`!YX#0@>6`(&P``$*P"`1.=2`O``1(YP$$+@!K'KZL``1L&"`'YX#0A^6`
  14628. + M*FP``-O`2JT`!&<$(`U@"'`)*4```'``3-\@@$YU("P`!$YU``````/X````
  14629. + M$0````$```&"```!9````58```%````!,@```.P```#>````Q````+X```"R
  14630. + M````I````)@```!R````;@```&0```!>````0@````````/O@P```D!M86QL
  14631. + M;V,``````0```("&```"7V5R<FYO```````"```!=@```(R#```"0&9R964`
  14632. + M```````!````N@````````/Q`````P````!/4%13``0`0````_(```/K````
  14633. + M`@```_(```/I````&B!O``0B;P`(GOP`#$CG(18F22I(3KH``"`+9P8N*P`$
  14634. + M8`B1R$ZZ```N`'#_OH!F!'``8"@@!T'O`!1.N@``(@U![P`4)`@L;```3J[^
  14635. + M=$J`9P1P`&`&3KH``'#_3-]HA-[\``Q.=0`````#[X,```-`8VAK86)O<G0`
  14636. + M```````!````%H,```)`=&EM90````````$````F@P```T!?9VUT,F%M:6=A
  14637. + M``````$````\A@```E]$3U-"87-E`````0```$B#```"0%]S971E<G(````!
  14638. + M````6`````````/Q`````P````!/4%13``0`0````_(```/I````!R!O``0B
  14639. + M;P`(("\`#"\+)DDB2"!+)E].^@````````/O@P```D!M96UM;W9E`````0``
  14640. + M`!@````````#\0````,`````3U!44P`$``````/R```#Z0```%(@;P`$(F\`
  14641. + M"%%/2.<!%"9)*DA.N@``0>\`#$ZZ```@#6<(0>\`#"K8*M@@"V<``-)![P`,
  14642. + M3KH``"!`("@`)$2`<CQ.N@``)H!^`"!L``1#[```$!BP&68,2@!F]F8&?@1@
  14643. + M``":(&P`!$/L``@0&+`99@Q*`&;V9@9^`V```(`@;``$0^P`$!`8L!EF"DH`
  14644. + M9O9F!'X%8&8@;``$0^P`&!`8L!EF!DH`9O9G4"!L``1#[``<$!BP&68&2@!F
  14645. + M]F<\(&P`!$/L`"`0&+`99@9*`&;V9R@@;``$0^P`)!`8L!EF!DH`9O9G%"!L
  14646. + M``1#[``H$!BP&68(2@!F]F8"?@$G1P`$<`!,WRB`4$].=2!O``2>_``0+PTJ
  14647. + M2$'O``Q#[P`$80#^Z"JO``P@+P`00^T`!#+`("\`!#+`("P``#+`<``J7][\
  14648. + M`!!.=0`````#^`````@````!````[````-@```#$````L````)P```"$````
  14649. + M:@```%`````````#[X,```-`8VAK86)O<G0````````!````%(,```-`7V=E
  14650. + M='1I;64````````!````'(,```-`;&]C86QT:6UE```````!````-H,```)?
  14651. + M7T-81#,S``````$```!$A@```E]T>FYA;64`````"````.@```#4````P```
  14652. + M`*P```"8````@````&8```!,A@```U]D87EL:6=H=`````````$```$X````
  14653. + M`````_$````#`````$]05%,`!`!````#\@```^H````,3454($135`!7150@
  14654. + M1%-4`$5%5"!$4U0`1414`$-$5`!-1%0`4$14`$%+1%0````````#\@```^D`
  14655. + M```P(&\`!$CG``8J2"QL``!.KO^^!I4/##\`<`!,WV``3G4@+P`$(&\`"%E/
  14656. + M!(`/##\`(CP``5&`+H!.N@``((`@%R(\``%1@$ZZ```@`2Z!<CQ.N@``(4``
  14657. + M!"`7<CQ.N@``(`'E@)"!YX#0@="`(4``"%A/3G4@;P`$64](YR`$2]`@'2(`
  14658. + MZ8&2@"`!YX#0@2(`Y8'2@.^!(!TD`.F"E(#E@B`=+T$`"'(R3KH``-""T*\`
  14659. + M"`:`#PP_`$S?(`183TYU```#[X8```-?5&EM97)"87-E```````!````#(,`
  14660. + M``)?7T-81#,S``````4```"J````7@```%(```!(````.@````````/Q````
  14661. + M`P````!/4%13``0`0````_(```/I````"R`O``193RZ`0>P`!"`(6$].=2!O
  14662. + M``193RZ(0>P`!"`(6$].=2`L``1.=0`````#^`````,````!````)@```!P`
  14663. + M```*`````````_$````#`````$]05%,`!`!````#\@```^H````)````````
  14664. + M``````````$````````````"```````````````````#[`````(````!````
  14665. + M%`````@````````#\@```^D````J(&\`!")O``@@+P`,64](YS\V+@`J2"])
  14666. + M`"B7RTZZ```B#20++&P``$ZN_7XF0"("3J[]>"`+9@9.N@``8%XD;P`H0A(J
  14667. + M!U*%(A,D*P`$)@TH"BQL``!.KOY*2H!G&"(+3J[]>$H29@1P`F`L+P1.N@``
  14668. + M6$]@*$ZN_WPL`'(R1@&P@68(""L``0`+9I0B"TZN_7@@!DZZ```I0```</],
  14669. + MWVS\6$].=0`````#[X,```-`8VAK86)O<G0````````!````'H8```)?1$]3
  14670. + M0F%S90````(```!4````)H,```)`7W-E=&5R<@````$````Z@P```E]S=')L
  14671. + M96X``````0```'"#```$0&-O;G9E<G1?;W-E<G(```````$```"6A@```E]E
  14672. + M<G)N;P```````0```)H````````#\0````,`````3U!44P`$`$````/R```#
  14673. + MZ0```"Q93TJL`!)F#$'O``,I2``28>Y@%D'O``,B;``2L\AD!'`!8`)P_RE`
  14674. + M``!83TYU64](YP$4+B\`%$JL``!F`F'`*FP`%F`N("P``&\,0>\`#R)M``2S
  14675. + MR&(02H!J'$'O``\B;0`$L\AD$"95+PU.N@``6$\J2R`-9LXI30`62H=F!'``
  14676. + M8")0AR\'3KH``"!`(*P`%D/O`!,A20`$0^@`"%A/*4``%B`)3-\H@%A/3G4`
  14677. + M`````_@````'`````0```*(```"0````>@```$(````:````#@````0````#
  14678. + M`````@```$@````Z````*`````````/O@P```E]F<F5E`````````0```&Z#
  14679. + M```"7VUA;&QO8P`````!````B@````````/Q`````P````!/4%13``0`0```
  14680. + M`_(```/J````!T`H(REA;&QO8V$N8PDQ+C$```````````````````/R```#
  14681. + MZP````$```/R```#Z0```#8@;P`$64](YR,"(@@L;```=/Y.KO^L+T``$&<Z
  14682. + M+BP``$ZZ```L`&`>2&\`$$AX"`4O!DZZ``!/[P`,2H!F""E'``!P`&`24X9L
  14683. + MWB(O`!`L;```3J[_IG#_3-]`Q%A/3G4@;P`$2.<A!BI(3KH``"(-+&P``$ZN
  14684. + M_[A*@&<$<`!@4$ZN_WPN`')OTH&P@68@(@UT`$ZN_T9*@&<.(@U.KO^X2H!G
  14685. + M!"`"8"A.KO]\+@!P9="`OH!F#B!-80#_2DJ`9@1P`&`,(`=.N@``*4```'#_
  14686. + M3-]@A$YU``````/OA@```E]$3U-"87-E`````P```'(```!0````#H8```)?
  14687. + M97)R;F\```````,```#,````0````!Z#```#0%]L87-T7V9D`````````0``
  14688. + M`"*#```"7VEO8W1L```````!````-(,```-`8VAK86)O<G0````````!````
  14689. + M;(,```1`8V]N=F5R=%]O<V5R<@```````0```,@````````#\0````,`````
  14690. + M3U!44P`$`$````/R```#Z0```AI(YP`&<"(B/``!``$L>``$3J[_.BI`2H!F
  14691. + M!'``8"`;?``$``A-[0`.0AX@+```',`L[```0>T`%$ZZ```@#4S?8`!.=2!O
  14692. + M``0O#B)(<"(L>``$3J[_+BQ?3G4@;P`$2.<`!BI(("T`(&<*+&P``'(`3J[_
  14693. + MW"`M`"1G#"QL``!R0.&)3J[_W"`M`#1G!B!`3KH``"`M`#AG!B!`3KH``"!M
  14694. + M`#QAI"!-3-]@`$[Z``!(YP(&+`$J2$J`9Q0@+0`@(BT`-"QL```P?``!3J[_
  14695. + MRDJ&9Q0@+0`D(BT`."QL```P?``"3J[_RG`!(BP``..@3-]@0$YU2.<#-B9)
  14696. + M*D@N$R!O`!PL$&`4(&T`-+'*9@1^`&`(M>T`.&8"?``@;0`\+'@`!$ZN_HPD
  14697. + M0$J`9MI*AV<60I,@+0`@(BT`-"QL```P?``#3J[_RDJ&9U(@;P`<0I`@+0`D
  14698. + M(BT`."QL```P?``#3J[_RF`V<`$B+```XZ`L>``$3J[^PB!M`#PL>``$3J[^
  14699. + MC"1`2H!GWB!M`#2QRF8$?@!@"+7M`#AF`GP`2H=FUDJ&9M)P`2(L``#CH"(`
  14700. + M<``L>``$3J[^SDS?;,!.=5E/2.<#%BX`)DDJ2&```(9"K0`L""T``@`S9PQP
  14701. + M(RE```!P_V```*PL;```<@%.KO\Z("T`("(M`#0L;```,'P``4ZN_\H@;0`\
  14702. + M<``0*``/<@'AH2`!3KH``"P`("T`("(M`#0P?``#3J[_RF`0<`$B+```XZ`L
  14703. + M>``$3J[^PB!M`#PL>``$3J[^C$J`9^`@!DZZ```@+0`@0>\`%"(((&T`+"QL
  14704. + M``!.KO_6+`!G`/]B(`92@&8"?`"\AV,"+`<@!B!O`!1@`A;84X!D^B`&*T``
  14705. + M+$S?:,!83TYUGOP`2$CG#Q8N`"I()DDO20`<2H=F``"*("T`)"QL``!R0.&)
  14706. + M3J[_W"!-0^\`(!+89OQ![P`@0^P``$ZZ```@34/O`$(2V&;\0>\`0D/L``1.
  14707. + MN@``""T````S9P@(+0`/`#)G!D'O`"!@!$'O`$(@"')`Z8D@?```C@!.KO_B
  14708. + M*T``)&<``.PL;```3J[_Q$J`:@)2@.*`*T``*'``8```X$JM`"1G``#*+"T`
  14709. + M*'H`8```M+R'8P``CBP'8```B`@M``(`,V<02H5G!B`%8```L'`C8```I"`M
  14710. + M`"0B+0`X+&P``#!\``).KO_*(&T`/'``$"@`#W(!X:$@`4ZZ```H`"`M`"0B
  14711. + M+0`X,'P``TZN_\I@$'`!(BP``..@+'@`!$ZN_L(@;0`\+'@`!$ZN_HQ*@&?@
  14712. + M(`1.N@``2H!G"$J%9P0@!6`Z("T`)"(+($8L;```3J[_T"@`9P#_9DJ$:Q+:
  14713. + MA)Z$U\1P`+Z`8@#_2"`%8`YP#4ZZ``!P("E```!P_TS?:/#>_`!(3G6>_``,
  14714. + M2-<!`W`=*4```'#_WOP`#$YU64\N@&$`_")P`%A/3G6>_``L2.<@%B9)*DA*
  14715. + M@&<2!(````@!9R)3@&<``)Q@``"J2I-G"`CM``(`,V`&"*T``@`S<`!@``":
  14716. + M<`/`K0`P5X!F*`@M``\`,F<&0>P`&&`$0>P`&B\(+PU(;``(2&\`'$ZZ``!/
  14717. + M[P`08"H(+0```#-G$"\-2&P`'$AO`!A.N@``8`XO#4AL`"9(;P`83KH``$_O
  14718. + M``Q![P`0(@@L;```)#P```/M3J[_XB:`9P1P`&`@3KH``&`8(!-G"B(`+&P`
  14719. + M`$ZN_]QP`&`(<!8I0```</],WV@$WOP`+$YU(&\`!"`O``@B+P`,+V\`$``$
  14720. + MGOP`3$CG#S8J+P!P+`$N`$*O`&B;S9?++T@`('!`3KH``"1`2H!G``&@80#Z
  14721. + MHB]``&AG``&4<!1.N@``*D!*@&<``89P%$ZZ```F0$J`9P`!>'`%&T``""!O
  14722. + M`&@K2``.<A0[00`2%T``""=(``XW00`2)4@`/"5-`#0E2P`XD<@E2``D)4@`
  14723. + M("5(`#!*AV<&".H````S2H9G!@CJ``$`,TAZ_G!(>OY>2'K^1$AZ_+A(>OO:
  14724. + M2'K[#"`J`#`@2D/Z^KQ.N@``3^\`&"@`9P``\$J%9P8(Z@`/`#(@;P`@(DH2
  14725. + MV&;\($I#[P`D$MAF_$'O`"1#[``T3KH``"!*0^\`1A+89OQ![P!&0^P`.$ZZ
  14726. + M``!*AV<H2H9G!$J%9@9![P`D8`1![P!&(`@L;```<D#IB3!\#0!.KO_B)4``
  14727. + M($J&9RI*AV<$2H5G!D'O`"1@!$'O`$8@""QL``!R0.F)('P``(X`3J[_XB5`
  14728. + M`"1*J@`@9@1*AV8J("H`)&8$2H9F($J`9Q0L;```3J[_Q$J`:@)2@.*`)4``
  14729. + M*$*J`"P@!&!8("H`(&<*+&P``'(`3J[_W"`J`"1G"BQL``!R`$ZN_]Q*A&L&
  14730. + M(`1.N@``(`UG!B!-3KH``"`+9P8@2TZZ```J;P!H(`UG!B!-80#Y+B`*9P8@
  14731. + M2DZZ``!P_TS?;/#>_`!,3G4@;P`$GOP`("\-*DA.N@``2JP``&8(<`8I0```
  14732. + M8&@@+```4JP``"(L``#2@"\!2&P`/$AO``Q.N@``<``N@$'O`!!R`<%!80#]
  14733. + MN$_O``PJ@<<``O`$'O``AR`6$`_:)83RM```1K!'``8!P@%4ZZ``!*@&<*
  14734. + M($`@:``$80#XKB`53KH``'#_*E_>_``@3G4@+P`$(B\`""]O``P`!"!O`!">
  14735. + M_``H+PTJ2$CO``,`!$ZZ``!*K```9@AP!BE```!@:"`L``!2K```(BP``-*`
  14736. + M+P%(;`!(2&\`%$ZZ``!P`2Z`(@!![P`8P4%A`/T43^\`#"J`:S1"IT'O`!!P
  14737. + M`2(`80#\_EA/*T``!&L$<`!@'"`53KH``$J`9PH@0"!H``1A`/@*(!5.N@``
  14738. + M</\J7][\`"A.=0`````#^`````L````!```(!@``!V(```8\```&)@``!,P`
  14739. + M``2\```$H```!)@```22```"Y@```M`````````#[X8```-?7V9I9F]?<VEG
  14740. + M```````&```#K@```C````&H```!:@```.H````LA@```5]?=7,````!````
  14741. + M,H,```)`3F5W3&ES=`````$````ZA@```U]?1FEF;T)A<V4``````!$```;H
  14742. + M```&V```!K8```:(```&7````^8```-X```#(````K8```)B```!^@```5H`
  14743. + M``$\````W````,0```!\````;(,```)`9G)E90````````8```<D```'#```
  14744. + M!P(```"L````G````)"&```"7V5R<FYO```````&```'\```!TP```42```$
  14745. + M+```!!(```'>A@```E]$3U-"87-E`````P``!00```3B```!Z(,```1`7W=A
  14746. + M:71?<VEG;F%L<P```````@```Y0```(6@P``!$!?:&%N9&QE7W-I9VYA;',`
  14747. + M```"```#S@```E"#```"0'-T<F-A=``````$```&0```!BH```+J```"U(,`
  14748. + M``1`7W-I9U]D:7-P871C:````````0``!`R#```#7U]S<')I;G1F````````
  14749. + M!0``"`X```=J```$U```!,0```2H@P```D!?<V5T97)R`````0``!/B#```"
  14750. + M0&UA;&QO8P`````#```%>@``!6P```52@P```T!?86QL;V-?9F0```````$`
  14751. + M``7V@P```T!?9G)E95]F9`````````,```A:```'M@``!OB#```#0&-H:V%B
  14752. + M;W)T`````````@``!^0```=`A@```U]?9FEF;U]O:P````````(```?H```'
  14753. + M1(8```1?7V9I9F]?;V9F<V5T````````!```!_H```?V```'5@``!U*&```#
  14754. + M7U]F:69O7V)A<V4``````@``!_X```=:@P```T!?9FEN9%]F9`````````(`
  14755. + M``A&```'H@````````/Q`````P````!/4%13``0`0````_(```/J````%5]M
  14756. + M``!?<P``9FEF;SHE<R]R=V5S2R5S`&T```!F:69O.B5S+W(`9FEF;SHE<R]M
  14757. + M=V5+``!?;0``7W,``'5X9FEF;RXE;'@``'5X9FEF;RXE;'@``````_(```/I
  14758. + M````"2`O``193RZ`0>P`%B`(6$].=2!O``193RZ(0>P`%B`(6$].=0```_@`
  14759. + M```"`````0```!P````*`````````_$````#`````$]05%,`!`!````#\@``
  14760. + M`^H````)=7-E<@````````````!W:&5E;`````````X````4```````&```#
  14761. + M[`````0````!````(````!H````6````!@````````/R```#Z0```*D@+P`$
  14762. + M64\N@"`L`0QG#B!`3KH``$J`9P1R`6`"<@`@`5A/3G4@+P`$(&P!#'(`3OH`
  14763. + M`$ZZ```I0`$,9@I(;```3KH``%A/(&P!#$ZZ``"!K```3G4@;`$,3OH```CL
  14764. + M``P``DYU("\`!`@```Q6P$0`2(!(P$YU".P`#0`"3G4@+P`$"```#5;`1`!(
  14765. + M@$C`3G5.N@``<``@;```$"@`#W(!X:&#K```3G5.^@``("\`!%E/2.<!%B]`
  14766. + M`!!^`&`N("T`%$ZZ```F0$J`9Q1*JP`49@Y^`7`!)T``%"=M`!@`&")-<!PL
  14767. + M>``$3J[_+B!L```L>``$3J[^C"I`2H!FP"`'3-]H@%A/3G4@+P`$2.</!"X`
  14768. + M<`'OH"P`<`F^@&8&<`!.N@``("P!!,"&9P:-K`$(8'HJ!D:%RZP!"$J':V9P
  14769. + M(+Z`;&`@!^>`0>P`!"IP"``P?``!N\AF+"`'58!G%%.`9Q!R#9"!9SQ9@&<X
  14770. + M48!G-&`*2&P`&$ZZ``!83W``3KH``&`@(`UG'"`'YX`H!D'L``2(L`@$B:P!
  14771. + M!"`'3I5&A,FL`00@+`$(P(9FBDS?(/!.=2`O``0O#B(L``""@'``+'@`!$ZN
  14772. + M_LXL7TYU("\`!"\.(@`@+```@($L>``$3J[^PBQ?3G4@+P`$2.<#`"X`?`!A
  14773. + M`/X02H!G"'P!<`YA`/\,(`=A`/YB2H!G"'P!<`)A`/[Z(`=A`/YJ2H!G"'P!
  14774. + M<`-A`/[H(`=A`/Z&2H!G"'P!<!1A`/[6(`9,WP#`3G4@+P`$+P<I0```<`@N
  14775. + M'V``_KQP`&$`_V!@D&#V2.<!%'X`2^P`!#9\``$JBT*M``12AU"-<""^@&WP
  14776. + M0JP!"$*L`01"K```80#]U&$`_>IA`/VB3-\H@&``_?AA`/VX8`#^"``````#
  14777. + M^`````(````!```!=````#X````7`````@```H0```*````"?````F0```'6
  14778. + M```!N@```:8```&B```!F````9````%*```!.````2X```$F````I````'H`
  14779. + M``!@````5@```%````!(````.````"H````*`````````^^#```$0%]T:6UE
  14780. + M<E]E>'!I<F5D``````$````2@P``!$!?=&EM97)?<W1A<G0````````!````
  14781. + M,(,```1`7V%L;&]C7W1I;65R`````````0```#2#```"7U]F86EL```````!
  14782. + M````0H,```-`7W1I;65R7W-I9P`````!````3(,```-`7V9R965?=&EM97(`
  14783. + M```!````6H,```1`7VEN:71?<')O8V5S<V5S`````0```)*&```$7U]C:&EL
  14784. + M9')E;E]E>&ET``````(```#N````F(,```5`7V-L96%N=7!?<')O8V5S<V5S
  14785. + M``````$```"J@P```T!?9FEN9%]P:60```````$```#$@P```D!?7V5X:70`
  14786. + M`````@```8````$B@P```U]?;65S<V%G90````````$```%XA@```E]?1E!%
  14787. + M4E(``````0```D@````````#\0````,`````3U!44P`$`$````/R```#Z@``
  14788. + M``I&86EL960@=&\@8W)E871E('1I;65R``!U<V5R(&EN=&5R<G5P=``````#
  14789. + M\@```^L```!$```#\@```^D```(=2&P`!$ZZ``!83TYU("\`!"\-3KH``"I`
  14790. + M2H!F`F'B(`TJ7TYU(&\`!"`O``@O"TZZ```F0$J`9@)AQB`+)E].=2!O``0O
  14791. + M#2I((`UF!$OL``X@34H89OQ3B)'-(`A2@$ZZ```@0$J`9@1P`&`((D@2W6;\
  14792. + M(`@J7TYU64](YP,T?@!\`"!L```F:`#08"Q**P`(9B0P/`4`P&L`#F8:4H<@
  14793. + M:P`*(`A*&&;\4XB1P"`(W(#<JP`45(8F4TJ39M`@!U*`Y8#0AF$`_THI0``8
  14794. + MY8<@0")`T\=%Z0`$+T``%&8*0>P``"E(`!A@5B!L```J:`#08$)*+0`(9CHP
  14795. + M/`4`P&T`#F8P)FT`"BXM`!0@;P`4(,HO2``48`(4VTH39OH4_``])FT`$&`"
  14796. + M%-L@!U.'2H!F]D(:*E5*E6:Z(&\`%$*03-\LP%A/3G4@;P`$("\`""\-*D@J
  14797. + M@$*M``3E@&$`_K0K0``(*E].=2!O``0B;P`(("\`#$CG(C0F22I(2H!G"B!+
  14798. + M80#^PB1`8`(D2R`*9SXB%20M``2T@6TB+`'<AG00TH*\@6T"(@8J@2`!Y8`@
  14799. + M;0`(3KH``"M```AG$D?M``0B$U*;Y8$@6R&*&`!P`4S?+$1.=2!O``0B;P`(
  14800. + M("\`#&&22H!F!&$`_AI.=2!O``0B;P`(2.<`%"9)*D@@+0`$T*L`!+"5;Q+0
  14801. + M@"J`Y8`@;0`(80#^&BM```@B+0`$Y8$@;0`(T<$@*P`$(@#E@2)K``A@`A#9
  14802. + M4X%D^M&M``0@:P`(3-\H`$[Z```@;P`$(F\`""]O``P`!"`O`!`B+P`464](
  14803. + MYP(T+`$J221(+T@`$$J`9T13@&<*4X!G``"V8```]%.&9R(@+P`8(@V0@2!O
  14804. + M`!!",`@`($$B;P`08`(2V%.`9/I@``#.0>P`$")O`!`2V&;\8```OB9O`!A@
  14805. + M;G!<L!5F9DHM``%G8%2-<`&\@&8&%/P`86!4(`95@&9&$"W__TB`2,!R(Y"!
  14806. + M9RY5@&<J58!G)E.`9R)3@&<>4X!G&G(5D(%G%'(<D(%G#E6`9PIR'Y"!9P15
  14807. + M@&8$%/P`)Q3M__]@"!3M__]@`A3=N\MECF!`)F\`&&`V<"JP%68N2BT``6<H
  14808. + M5(T0+?__2(!(P')ED(%G#'()D(%F#!3\``I@#A3\`!M@"!3M__]@`A3=N\ME
  14809. + MQD(23-\L0%A/3G6>_`$L2.<_-BIO`5@@;```#&@`)0`49`I(>``43KH``%A/
  14810. + M0JP`''`!*4``&"E``#YP`BE``#HI0`!@*7P```"$`%R3R2QX``1.KO[:*4``
  14811. + M`$ZZ```I0``$9@I(;``23KH``%A/(&P`!$ZZ```I0``(+&P`!"!6+&@`%"E.
  14812. + M`!1![P$P3J[_OBEO`3``#$ZZ``!.N@``(&P``"`H`*QG$.6`(D`B*0`TY8$I
  14813. + M00`08`8I:`"$`!!*%68``.A![``J(@@L;```)#P```/N3J[_XBP`0>P`,"((
  14814. + M3J[_XBX`0>P`-B((3J[_XBH`2H9G"$J'9P1*A68B2H9G!B(&3J[_W$J'9P8B
  14815. + M!TZN_]Q*A6<&(@5.KO_<80#[<G`!+P`O!2\`+P<B!L%!3KH``"!L```@*``<
  14816. + M0>\!6&$`_)Y/[P`0?`!^`&!0(FP``"!I`"0@,'@`9SXB`$/O`#`D"2QL``!V
  14817. + M0.6+3J[^;DJ`9R8B;```(&D`)-''("@`!&<((@(D`$ZN_(Y![P%(0^\`,'`!
  14818. + M80#\V%*&4(<@;```O*@`'&VF8``"S"QL``!.KO_**`!.KO_$*@!^`"!L```L
  14819. + M*`#@9BA^`4'L`#PB""0\```#[4ZN_^(L`&820>P`/B((3J[_XBP`9@1A`/JD
  14820. + M+P<O!G``+P`O!2($P4%.N@``0>\!6'`!80#[UB`\```%&F$`^HX@0#%\!```
  14821. + M$B]``#QP0.6(80#Z>D_O`!!^0.6/+T`!.&`"4HT0%4B`2,!![``!"#```P@`
  14822. + M9NP0%6<``A9R(K`!9C!2C29-8!!P*K`59@A*+0`!9P)2C5*-$!5G!G(BL`%F
  14823. + MYB1-$!5R(K`!9@)2C7P"8%1P)[`59B!2C29-8`)2C1`59P9R)[`!9O0D37`G
  14824. + ML!5F`E*-?`%@+B9-8!!P7+`59@A*+0`!9P)2C5*-$!5G$G(@L`%G#'(*L`%G
  14825. + M!G()L`%FVB1-?``@2RH*FHL@!5*`+T@`*&$`^;8F0$JO`4QF("`%($LB;P`H
  14826. + M3KH``$(S6`!![P%((DMP`&$`^V!@`/\FVH5R$-J!NH=O%"!O`3A.N@``(`5A
  14827. + M`/EV+@4O0`$X+PH@!B!+(F\`+'(!80#[KEA/(@LD+P$X)@<L;```3J[\N"H`
  14828. + M;!!"$B\O`"A(;`!$3KH``%!/2H5F(B\*(`8@2R)O`"QR`&$`^W1![P%,(DMP
  14829. + M`&$`^NA83V``_JQZ`2!O`"Q"J``(0B@`$4(H`!`O"B`&($LB;P`L<@)A`/M`
  14830. + M0>\!0'`080#Z)EA/(@LD+P`L+&P``$ZN_,HH`&8\8"IZ`")O`"S2_`$80>\!
  14831. + M/'`!80#Z($J`9@1X9V`2(B\`+"QL``!.KOS$*`!*A&?2(B\`+"QL``!.KOR^
  14832. + M<'30@+B`9PI(;`!83KH``%A/2H5G(B\*(`8@2R)O`"QR`&$`^L!![P%,(DMP
  14833. + M`&$`^C183V``_?@@+P%`(&\!1$ZZ``!![P%(0^\!/&$`^BH@2TZZ``!@`/W6
  14834. + M(&\!.$ZZ```@;P`L3KH``&$`^))![`!R3KH``"E```!F"$'L`'@I2```0>P`
  14835. + M?DZZ```I0``49@8I;````!1![`"(3KH``"E``!AF"$'L`(XI2``80>P`DDZZ
  14836. + M```I0``<9@A![`"8*4@`'$'L`*!.N@``*4``'&8(0>P`JBE(`!P@+P%,(&\!
  14837. + M4")L`!A.N@``<`!.N@``3-]L_-[\`2Q.=0```_@````5`````0``"$X```A`
  14838. + M```(.```""H```@B```(%```"`````?X```'Z@``!X0```;0```%3@``!3H`
  14839. + M``18```$3```!#8```/6```"J````.````!.`````@```!(````"```(7@``
  14840. + M"%(```A(```%+@``!"P```0D```$$```!`0```/V```#[````^@```/@```#
  14841. + MT````\@```#J````Y````,H```"$`````````^^#```"7U]F86EL```````$
  14842. + M```'B```!M0```/:````!H,```)`;6%L;&]C``````(```!@````%(,```)`
  14843. + M<F5A;&QO8P````(```&R````,(,```)`9G)E90````````4```?B```'V@``
  14844. + M!\X```:4```"1H8```)?4WES0F%S90````$```.(@P```E]?6$-%6$E4````
  14845. + M`0```YB&```"7U]?:6]B```````&```#N@```[(```.N```#J````Z0```.>
  14846. + M@P``!$!?86QL;V-?=&EM97(````````!```#S(,```-`7W1I;65R7W-I9P``
  14847. + M```!```#Y(,```-`7VEN:71?9FEF;P`````!```$"(,```1`7VEN:71?<VEG
  14848. + M;F%L<P```````0``!`R&```"7T1/4T)A<V4````'```'=```!V(```<T```&
  14849. + MO@``!1P```34```$/(,```1`7VEN:71?=6YI>&EO`````````@``!6X```2@
  14850. + MA@```U]?5T)E;F-H37-G``````0```4.```$Y```!+X```2DA@```E]?7V-T
  14851. + M>7!E`````0``!;"#```"0'-T<FYC<'D````!```&;H,```)`='%S;W)T````
  14852. + M``$```>\@P```T!?7V=E=&5N=@````````4```A$```(+@``"!@```@$```'
  14853. + M[H8```-?7V%M:6=A7W5S97(````)```(/```"#(```@F```('```"!````@.
  14854. + M```("```!_P```?R@P```D!M86EN`````````0``"&*#```"0&5X:70`````
  14855. + M```!```(:`````````/Q`````P````!/4%13``0`0````_(```/J````+```
  14856. + M``!.;R!M96UO<GD```!A`$9A:6QE9"!T;R!C<F5A=&4@=&EM97(``$Y)3#H`
  14857. + M`$Y)3#H``$Y)3#H``"H`3DE,.@``26YV86QI9"!W:6QD8V%R9"`E<P!%<G)O
  14858. + M<B!E>'!A;F1I;F<@87)G=6UE;G1S`%5315(``'5S97(``%5315).04U%``!(
  14859. + M3TU%``!S.@``4TA%3$P`8FEN.G-H``!(3U-43D%-10``86UI9V$````#\@``
  14860. + M`^L````(```#\@```^D````$("\`!%E/+H!P`%A/3G4``````_$````#````
  14861. + M`$]05%,`!``````#\@```^D````^("\`!$CG`P`N`$JL``!G!"`'8&!\`"`'
  14862. + M`H````$D9P)\"`@'``=G!`!&``4(!P`$9P0(Q@`""`<``6<$",8```@'``-G
  14863. + M!`C&``$(!P``9P0(Q@`&(`=R2<"!<D"P@68$`$8`0@@'``EG!`C&``4@!@I`
  14864. + M``],WP#`3G4@+P`$2.<&`"P`2JP``&<((`8"0`__8%YZ``I&``\(!@`#9P1Z
  14865. + M2>6-(`9R!<"!6X!F!`C%``<(!@`"9P0(Q0`$"`8``&<$",4``2`&<D+`@6<$
  14866. + M",4`!@@&``%G!`C%``,(!@`&9P0(Q0``"`8`!6<$",4`"2`%3-\`8$YU````
  14867. + M``/X`````@````$```"&````#`````````/Q`````P````!/4%13``0`0```
  14868. + M`_(```/K`````0```_(```/I`````G``3G5P`$YU```#\0````,`````3U!4
  14869. + M4P`$``````/R```#Z0```!5(YP,`3KH``"X`?`!@"B\&3KH``%A/4H:\AVWR
  14870. + M3-\`P$YU("\`!"\'+@!AU$ZZ``!.N@``(&P``$ZZ```O!TZZ``!83RX?3G4@
  14871. + M+P`$+P<N'V#4``````/O@P```T!?;&%S=%]F9`````````$````&@P```E]C
  14872. + M;&]S90```````0```!*#```$0%]C;&5A;G5P7V9I9F\```````$````N@P``
  14873. + M!4!?8VQE86YU<%]S:6=N86QS`````````0```#*&```#7U]O9&1?=&EM97(`
  14874. + M`````0```#:#```#0%]F<F5E7W1I;65R`````0```#J#```"7U]80T58250`
  14875. + M```!````0`````````/Q`````P````!/4%13``0`0````_(```/I````$R`O
  14876. + M``0B+P`((&\`#%%/2.<#)"P!+@`J2$ZZ```@!TZZ``!*@&<:(D`@:0`@+T@`
  14877. + M%"`&(&D`!")-)&\`%$Z28`)P_TS?),!03TYU``````/O@P```T!C:&MA8F]R
  14878. + M=`````````$````:@P```T!?9FEN9%]F9`````````$````@`````````_$`
  14879. + M```#`````$]05%,`!``````#\@```^D```"8GOP`#$CG+S8J;P`T?@/.KP`X
  14880. + M?`$@;```)F@`N"H\```#[$ZZ``!*AV<*<`*^@&<$<@!@`G(!+T$`*'`!OH!G
  14881. + M"%6'9P1P`&`"<`$O0``L($U#[```3KH``$J`9@9X_V```51P_R!L```A0`"X
  14882. + M(@TL;```=/Y.KO^L+@`@;```(4L`N$J`9G@L;```3J[_?$ZZ```L`"`L``!R
  14883. + M+D8!L(%G!$J`9@I^`2H\```#[F`6(`95@&8,""\`"``Z9P1P`6`"<``N`$J'
  14884. + M9RQ\``@O``@`.F<<""\`#P`Z9P9X`F```-8@+P`\3KH``"@`8```R'C_8```
  14885. + MPBE&``!P_V```4)"IRQL``!R`B0/3J[_'$_O``0D0$J`9PPB!R0*3J[_FDJ`
  14886. + M9A8@"F<()`IR`DZN_Q9.N@``</]@``$(*"H`="0*<@).KO\6(@=.KO^F<%#I
  14887. + MB,"O`#@,@```!0!F#'`1*4```'#_8```VDJO`"AG!@@$``-F#$JO`"QG$@@$
  14888. + M``)G#'`-*4```'#_8```M@@O``D`.F<B(@TD/````^Y.KO_B2H!G""(`3J[_
  14889. + MW&`*3KH``'#_8```C`@O``@`.F<$(`5@!B`\```#[20`(@TL;```3J[_XBH`
  14890. + M9@A.N@``</]@8`@O``D`.F8$2H9F!"P$8`)\_WX`2J\`*&<"?@%*KP`L9P0(
  14891. + MQP`!""\``P`[9P0(QP`#+P<@!2(&3KH``%A/+@!L''#_(&P``"%``+@B!2QL
  14892. + M``!.KO_<(&P``"%+`+@@!TS?;/3>_``,3G4@;P`$+R\`#"\O``PO"&$`_:A/
  14893. + M[P`,3G4```/X`````0````$```!2`````````^^&```!7U]U<P````4```(V
  14894. + M```")````'P```!F````%H,```-`8VAK86)O<G0````````!````)(,```)`
  14895. + M<W1R:6-M<`````$```!6A@```E]$3U-"87-E````!0```BX```',```!`@``
  14896. + M`(@```!P@P``!$!C;VYV97)T7V]S97)R```````!````D(8```)?7T]315)2
  14897. + M``````$```"6@P``!4!?;6%K95]P<F]T96-T:6]N`````````0```.:&```"
  14898. + M7V5R<FYO```````#```!@@```5X```#V@P```D!?<V5T97)R`````P```=@`
  14899. + M``&L```!,(,```1`7V%L;&]C7V%M:6=A9F0``````0```A@````````#\0``
  14900. + M``,`````3U!44P`$`$````/R```#Z@````).24PZ`````````_(```/I```%
  14901. + M:"!O``1(YS@`</_`*``#<@`2`'#_P"@``G0`%`!P_\`H``%V`!8`</_`$'@`
  14902. + M&`#AA(B#X82(@N&$B($@!$S?`!Q.=4CG(S1+[`!R0>P`'$7L``PDR$'L`"`D
  14903. + MR$*L`!A"FGX`+"P`>D?L![Q@/"`K``0B`.6!($W1ZP`(0^@'ZD7L``PEB1@`
  14904. + M2H!G!G`!*4``&$J'9P9*JP`$9@@@$T2`*4``%%*'UOP`$+Z&;<!^`"PL`'9@
  14905. + M.G``(@<&@0``!=@0-1@`2,#I@"!-(@`&@0``!U+1]1@`!H````=.)#4(`.6"
  14906. + M0^@'ZD7L``PEB2@`4H>^AFW"3-\LQ$YU(&\`!")O``B>_`HH2.<[-B](`"@O
  14907. + M20`L(`AF"$WL`"0O3@`H<#H@;P`HL!!F!%*O`"@@;P`H<#I.N@``2H!F3G`*
  14908. + M(@`@;P`H(`A*&&;\4XB1P-*(4H%P0;*`909P_V```DQ![``P0^\`,1+89OQ!
  14909. + M[P`Q0^P`/$ZZ``!![P`Q(F\`*$ZZ``!![P`Q+T@`*$*G+R\`+$ZZ``!03RX`
  14910. + M4H!F!G#_8``"""`'0>\`<B(\```)VDZZ```L`"`'3KH``$J`9@9P++R`9`9P
  14911. + M_V```>!![P"*80#^."X`0>\`CF$`_BXJ;P`L*H!![P"280#^("M```1![P"6
  14912. + M80#^%"M```A![P":80#^""M```PB%6LP=#*R@FXJ)BT`"&\D>`JVA&X>*"T`
  14913. + M!&L8#(0```%R;A!*@&L,L()N"+:'9PI*AV<&</]@``%JTH'E@2`M``@D`-2"
  14914. + MU(#4@B`M``0F`.6#UH#6@M:M``S6@=:'<"S6@+R#9`9P_V```3A'[P">?``D
  14915. + M36`0($MA`/V()4``$%B+4H98BKRM``1MZGP`8"`0&R(&!H$```78&X`8`'(`
  14916. + M$@"RK0`(;09P_V```/92AKRM``1MVGP`0>T'2B1(+T@`)&!*($MA`/TZ)(!+
  14917. + MZP`%$"L`!'(`$@`E00`$9PI3@6<&</]@``"\1^T``1`5<@`2`"5!``AM"BIO
  14918. + M`"RRK0`,;P9P_V```)Q2AM3\`!"\K0`(;;!\`&`.(`8&@```!^H;FP@`4H:\
  14919. + MK0`,;>P@!@:````'ZD(U"`!\`-K\"!Y@'B!+80#\OBJ`1>L`!"!*80#\LBM`
  14920. + M``1'Z@`$4H90C2!O`"R\D&W:?``D;P`D*F\`+&`H2H=F!D*J``Q@&!`;2(!(
  14921. + MP"5```QR`;"!9PA*@&<$</]@#E*&U/P`$+RM``AMTG``3-]LW-[\"BA.=2!O
  14922. + M``193R\-*DA@`E*-$!4?0``$9R9(@$C`0>P``0@P``((`&86$"\`!'(LL`%G
  14923. + M#'(ML`%G!G(KL`%FT"`-*E]83TYU(&\`!")O``@@+P`,(B\`$%E/2.<'%"P!
  14924. + M+@`F22I((`UG$A`52(!(P$'L``$(,``""`!F!'``8$IZ`&`B$"\`%$B`2,`B
  14925. + M!>6!TH72@=*`*@%P,)J`NH9O!'``8"92C1`5'T``%&<02(!(P$'L``$(,``"
  14926. + M"`!FQKJ';`1P`&`$)H4@#4S?*.!83TYU(&\`!")O``A93TCG`!0F24/O``AP
  14927. + M`'(880#_;"I`2H!F!'``8&H@+P`((@#I@9*`(`'I@)"!Z8`F@'`ZL!5F3D'M
  14928. + M``%#[P`(<`!R.V$`_S@J0$J`9@1P`&`V("\`""(`Z8&2@.6!TY-P.K`59B!!
  14929. + M[0`!0^\`"'``<CMA`/\**D!*@&8$<`!@""`O``C1DR`-3-\H`%A/3G4@;P`$
  14930. + M(F\`"%E/2.<!%"I)+T@`#!`0<BVP`68(?@%2KP`,8#!(@$C`0>P``0@P``((
  14931. + M`&88<BL@;P`,LAA7P$0`2(!(P"](``Q*@&<$?@!@!'``8!P@;P`,(DUA`/\4
  14932. + M)D!*@&8$<`!@"$J'9P)$E2`+3-\H@%A/3G4@;P`$(F\`")[\``Q(YP`D*DDO
  14933. + M2``0<$JP$&8H0I5#Z``!0>T`!"](``P@22)O``QP`2(\```!;6$`_CPO0``0
  14934. + M8```M'!-L!!F?'`"*H!#Z``!0>T`#"](``P@22)O``QP`7(,80#^$")`2H!F
  14935. + M!G``8```P$7I``%P+K`19P9P`&```+!![0`((D@@2G`!<@5A`/WD(D!*@&8&
  14936. + M<`!@``"41>D``7`NL!%G!G``8```A$'M``0B2"!*<`!R!F$`_;@O0``08#`0
  14937. + M$$B`2,!#[``!"#$``@@`9QIP`2J`0^T`!'``(CP```%M80#]C"]``!!@!'``
  14938. + M8#P@+P`09@1P`&`R<"\@;P`0L!!F'$/H``%![0`0+T@`#"!)(F\`#&$`_=HO
  14939. + M0``08`@K?```'"``$"`O`!!,WR0`WOP`#$YU("\`!"(O``@@;P`,+V\`$``$
  14940. + MGOP`)$CG/Q0J2"H`+@$D!W8#Q(,O0``X+T$`/$J"9@P@!W)D3KH``$J!9A(@
  14941. + M!W)DY8E.N@``2H%G!'``8`)P`2P`(!5*@&<,4X!G2%.`9V9@``%^("T`!"(`
  14942. + M4X$D`=2"U($F`NF#EH(D`^F"E(/O@BX%WH(O1P!`2H9G``%4<CRP@6T``4P&
  14943. + MAP`!48`O1P!`8``!/B`M``0B`-*!TH`D`>F"E($B`NF!DH+O@=J!+T4`0&``
  14944. + M`1PH!7X`*BT`#%.%(`;0@-"&Z8!'[``^U\`O0``@8!H@&R(`TH'2@"0!Z8*4
  14945. + M@2("Z8&2@N^!V(%2A[Z%;>(N+P`\+T0`)"(M``QT`K*";@8F!U.#8`(F!R`#
  14946. + M<F1.N@``(@#2@4J`:@)6@.2`+T``+"`#+T$`,')D3KH``"`!:@)6@.2`=@G6
  14947. + MK0`,+T``-"`#+T$`*'(,3KH``%*!(`'G@)"!T("0@="`58!R"DZZ``!'[P`H
  14948. + MT)O0KP`TT)N0FU*`<@=.N@``+@%J`EZ'+"T`!)R':@)>AGH!*"T`"&`<+@9>
  14949. + MAR(M``SE@4'L`#K1[P`@OK`8`&P(+`=2A;J$;>`@!M"`T(8B`.F!DH`@`>F`
  14950. + MD('O@"(O`"32@"]!`$`@+P!`T*T`$-"O`$A,WRC\WOP`)$YU(&\`!")O``@@
  14951. + M+P`,GOP`6$CG/S8J2"Q-1^\`-";`)L@FR2].`#!*@&<<(`A*&&;\4XB1P"P(
  14952. + M(@C3KP`X<#.R@&4<?#)@&&$`^JHL`)R-+T``.'(#O(%L!G#_8``#>B]&`"P@
  14953. + M;P`X2A!F!G#_8``#:$/O`'1A`/OF+T``.&8&</]@``-4)F\`/$'L`*8B2V$`
  14954. + M][`N`&<"0I,@;P`X2A!G``*^*D@O2`!\80#Z2"(`DHTO0``X+T$`>'8#LH-L
  14955. + M!G#_8``#%"!O`#@0$&<@<BRP`6<:<CNP`6<40^\`<&$`^WXO0``X9A1P_V``
  14956. + M`NP@//__\?#0KP!T+T``<"!O`#@0$'(LL`%G"'([L`%F``%80^@``2!)0^\`
  14957. + M7&$`^[HJ0$J`9@9P_V```K!%[0`!<"RP%6<&</]@``*@($I#[P!(80#[E"]`
  14958. + M`#AF!G#_8``"BB!O`#A*$&<&</]@``)\($MP`B%```@A?````(@`!"`O`'!$
  14959. + M@$WH!THLP'`!+,!2ABS&("\`=$2`3>@'6BS`0IY"GM;\`!!%Z`78>@`L/```
  14960. + M![(@2B\O`'0O2``L(`4B!D'O`&!A`/QF+@`NKP!T(`4B!D'O`$QA`/Q46$\H
  14961. + M`$OJ``)%ZP`(OH!O&B!+((1P`2)O`"@2@"9*(4<`!"1-0BD``6`8($L@AR)O
  14962. + M`"A"$29*(40`!"1-$WP``0`!(`9R`\"!9@P@!G)D3KH``$J!9A(@!G)DY8E.
  14963. + MN@``2H%G!'``8`)P`2(`Y8%![`">(#`8`"(`TH'2@"8!Z8.6@20#Z8*4@^^"
  14964. + MVH)2A@R&```']6\`_T)@``$<(&\`.$H09P9P_V```69*AV<&</]@``%<>`!\
  14965. + M`'H`0J\`1'X`*DM@<$JM!TYG/B`O`$0B!^F!)"\`<`:!```'2B8S&`#6@B]#
  14966. + M`$1*AF<*L(-G!G#_8``!'$2"*T('2B`O`"Q2@"M`!U)\`6`F(`4B+P!T*BT'
  14967. + M2MJ!2H1G"K"%9P9P_V```.Y$@2M!!TI"K0=2>`%2A]K\`!"^JP`(;8I*AF<$
  14968. + M2H1F!G#_8```R'P`?@`J2R@O`$1@.G``(@<&@0``!=@0,Q@`2,#I@"!+T<!#
  14969. + MZ`=*+TD`0$J&9PI*J0`,9@0@!&`"(`71K0`0+"D`!%*'6(V^JP`$;<!@('``
  14970. + M<@$G00`()T``!"0O`'1$@DWK!THLPBS`+,`O0`!X*F\`/"XO`"P@!U*`*T``
  14971. + M#"PO`'AG"-"&4H`K0``,<C.P@6,$</]@,-K\!^H@!R!-(F\`,$ZZ```@3=''
  14972. + M2^@``4(02H9G$"`&($TB;P!\3KH``$(U:`!P`$S?;/S>_`!83G4@;P`$+PTJ
  14973. + M2$'L```B36$`]%!*@&<,0>P``")-<`%A`/P,*E].=2\-0>P`LDZZ```J0$J`
  14974. + M9@8J7V```%QP`2E`$\Y*%68>0JP`<D*L`'9"K`>\0JP'Q$'L``!#[`A<$MAF
  14975. + M_&`L($U#[`!R80#S]$J`9QYP.K`59Q`@34/L`')P`&$`^ZI*@&<(0>P`<F$`
  14976. + M_W8J7V``\PYP`2E`$\Y#[`!RD<AA`/.\2H!G"$'L`')A`/]48`#R[B!O``0@
  14977. + M+P`((F\`#)[\`!!(YP,4*DE([P$!`!`@;P`4+U``&$JL$\YF!&$`_T1*K`!V
  14978. + M9PH@+P`8L*P`@FP@?@!'[`!R8!!2A];\`!"^K`!Z;01^`&`R2JL'3F;J8"I^
  14979. + M`4?L`'8L+`!V8`X@+P`8L*L`$&T(4H=8B[Z&;>Y#[`!RT\=^`!XI!=?IAT'L
  14980. + M![S1QR\-+T@`("`00>\`'$/L`')A``#"(&\`("(H``0K00`@Y8%![`A<(F\`
  14981. + M(-'I``A#[``,(X@8`"M(`"A83TS?*,#>_``03G4@;P`$0^P``'``80#_*D'L
  14982. + M```@"$YU(&\`!"`O``@B;P`,2.<!%"X`)DDJ2$JL$])F#G`!*4`3TD'L"B!A
  14983. + M`/XZ+PL@!R!-0^P*(&$``$)83TJ'9P9![`"Z8`1![!(*)T@`*$S?*(!.=2!O
  14984. + M``1#[``L<`!AKD'L`"P@"$YU(&\`!"`O``@B;P`,+V\`$``$GOP`#$CG#S0N
  14985. + M`"9O`"PJ2'P`>@`H$2`$YX`O20`@T\!%Z0@>8$`O2@`D(!6PDFTV(&\`)+"0
  14986. + M9BA*A&8&("@`!&X:YX0B*``$(F\`(`:$```(&K*Q2`!N!'``8`)P`2H`+"@`
  14987. + M!&`&4X11BFRZ(!4B/``!48!.N@``*``@%2(\``%1@$ZZ``#2AY*&+`%@"`:&
  14988. + M``%1@%.$2H9K]&`(!(8``5&`4H0,A@`!48!L\"`&(CP```X03KH``"=```@@
  14989. + M!B(\```.$$ZZ```@`2]!`!QR/$ZZ```G0``$("\`''(\3KH``":!2H5G`E*3
  14990. + M(`18@'('3KH``"=!`!AL!%ZK`!@L/```![)*A&M`(`9R`\"!9@P@!G)D3KH`
  14991. + M`$J!9A(@!G)DY8E.N@``2H%G!'``8`)P`2H`(@#E@47L`)X@,A@`N(!M0%*&
  14992. + MF(!@P%.&(`9R`\"!9@P@!G)D3KH``$J!9A(@!G)DY8E.N@``2H%G!'``8`)P
  14993. + M`2H`Y8!![`">V+`(`$J$:\8$A@``!VPG1@`4)T0`'"`%T(#0A>F`1>P`/M7`
  14994. + M0JL`$&`.(BL`$.6!F+(8`%*K`!`B*P`0Y8&XLA@`;.92A"=$``Q"JP`@)T<`
  14995. + M)$S?+/#>_``,3G4@;P`$+PTJ2"`M`!@B`-*!TH!![`"^T<$@+0`0(@#2@=*`
  14996. + M0^P`T]/!(#P```=LT*T`%"\`+Q4O+0`$+RT`""\M``PO"2\(2&P`^$AL`%A.
  14997. + MN@``3^\`)$'L`%@@""I?3G4@;P`$+PUA`/TX($`J7V"4(&\`!")O``@@+P`,
  14998. + M+P<N`"`1L(=M%"('3KH``-&0(!$B!TZZ```B@6`J2H!J)E.0WY%L("`11(`B
  14999. + M!TZZ```B$)*`4X$@@2`11(`B!TZZ``">@2*'+A].=2!O``0B;P`(2.<!%"9)
  15000. + M*D@N+0`4GJL`%&8L+BT`$)ZK`!!F(BXM``R>JP`,9A@N+0`(GJL`"&8.+BT`
  15001. + M!)ZK``1F!"X5GI,@!TS?*(!.=2!O``0B;P`(("\`#"]O`!``!)[\`'!(YS\T
  15002. + M+@`J;P"8+TD`+$*5+T@`*$/O`%QP"B+84<C__"`O`%QR/K"!;`1*@&H.0>\`
  15003. + M8$/O`%QP/&$`_Q9![P!D0^\`8'`\80#_"$'O`&A#[P!D<!AA`/[Z0>\`<$/O
  15004. + M`&QP#&$`_NQ@3"`O`'!3KP!P!H````=K(@!T`\*"9@IR9$ZZ``!*@68:(#P`
  15005. + M``=LT*\`<')DY8E.N@``2H%G!'``8`)P`2(`Y8%![`">(#`8`-&O`&@@+P!H
  15006. + M;ZXL/```!VS<KP!P(`9R`\"!9@P@!G)D3KH``$J!9A(@!G)DY8E.N@``2H%G
  15007. + M!'``8`)P`20O`&SE@B8`UH/6@.F#0>P`/M'#+#`H`"`O`&BPAF\:1^\`:)V;
  15008. + M4I,,FP````QMGD*O`&Q2KP!P8)0@+P!<0J\`7'H`<@$O00"(+T``)%*%("\`
  15009. + MB-"`+T``B"`O`(AN[B`O`(AJ!'``8`1P`>N@+T``B$AO`#`O!TAO`)`@;P`X
  15010. + M3I!![P`\0^\`:&$`_BQ/[P`,*`!G+B`%4X5*@&H&</]@``$02H5J!E.O`(A@
  15011. + MQ'`!ZZ`L`$J$;P:=KP"(8+3=KP"(8*X@+P!\:P``Q"(O`%"R@&<``+I!^OGB
  15012. + M(F\`++/(9@9![`!R8`1![`H@?``F2"](`)!@``"(("L'3K"O`'QF=GH`)&\`
  15013. + MD&!D("H'3K"O`'QG5"`%Z8`B+P"((&\`D`:````'2M*P"`"2JP=*+T$`C$AO
  15014. + M`#`O!TAO`)0@;P`X3I!![P`\0^\`:&$`_6Q/[P`,2H!F$B`O`%"PKP!\9@@O
  15015. + M;P",`(A@)E*%U/P`$"!O`)"ZJ``(;9)2AM;\`!`@;P"0O*@`"&T`_W!P_V`D
  15016. + M("\`)-&O`(@O+P`H+P=(;P"0(&\`.$Z0<`$J@$_O``P@+P"(3-\L_-[\`'!.
  15017. + M=2!O``0B;P`(("\`#)[\``Q(YP<T+@`J2"])`!@,K0````$`(&\&<`$K0``@
  15018. + M2&\`'"`'($UA`/T>6$\L`$JO`!QF!B`M`"!J!B`&8```QD'Z^*XB;P`8L\AF
  15019. + M!D'L`')@!$'L"B!\`"9(+T@`(&```)8@*P=.L*T`(&8``(1Z`"1O`"!@<"`M
  15020. + M`"`B*@=.LH!G7B`%Z8`B%2!O`"`&@```!TK2L`@`DJL'2BJ!2JT`(%?`1`!(
  15021. + M@$C`*T``($AO`!P@!R!-(F\`'&$`_(Q83TJO`!QF0"`5D*H'2M"K!THJ@$JM
  15022. + M`"!7P$0`2(!(P"M``"!2A=3\`!`@;P`@NJ@`"&V&4H;6_``0(&\`(+RH``AM
  15023. + M`/]B</],WRS@WOP`#$YU(&\`!"\-0_KWVG``*E]@`/[@2JP3SF8$80#W+$YU
  15024. + M``````/X````'0````$``!*X```29@``$-@``!"T```0I```$%0``!`R```/
  15025. + M\@``#H(```X6```,^```#,H```RX```,J@``"O@```E*```(>```!Z0```%L
  15026. + M```!7````18```#F````H````(X```"`````7````%8```!0````3````"L`
  15027. + M```"```5E```%,8``!3````3D@``$XP``!#H```0W```#J(```Z:```.B```
  15028. + M#G0```YF```.8@``#EH```X\```.,@``#@H```WT```-X@``#=0```V\```-
  15029. + MN```#:0```V8```-D```#88```U\```-3```#3X```TZ```-*@``#1P```T(
  15030. + M```,_```#/0```SP```,[```#.@```S@````L````&@```!D````2```````
  15031. + M``/O@P```D!S=')C:'(``````0```3*#```"0'-T<F-A=``````"```!?```
  15032. + M`7"#```"7V]P96X````````!```!CH,```)`<F5A9`````````$```&L@P``
  15033. + M`D!C;&]S90```````0```;2&```"7U]?8W1Y<&4````%```&6@``!3X```1>
  15034. + M```$'````\J#```"7U]#6$0S,P`````<```2G```$HX``!)4```2/@``$4X`
  15035. + M`!$\```1)```$1H``!`@```0$@``#]X```_0```/K```#YH```^,```/@```
  15036. + M#W````\^```/,```"N8```K8```(4@``"#P```@F```("```!^P```<.```'
  15037. + M`(,```)`<W1R;F-P>0````(```R.```,=(,```-`7U]G971E;G8````````!
  15038. + M```,SH,```)?<W!R:6YT9@````$``!#@`````````_$````#`````$]05%,`
  15039. + M!`!````#\@```^H```!(1TU4`"`@(``@("``````!`````@``````````"`@
  15040. + M(``@("``<SIL;V-A;'1I;64`<SIZ;VYE:6YF;P``+P`````?````'````!\`
  15041. + M```>````'P```!X````?````'P```!X````?````'@```!\````?````'0``
  15042. + M`!\````>````'P```!X````?````'P```!X````?````'@```!\```%M```!
  15043. + M;G!O<VEX<G5L97,``%5.25A46@``("`@`%-U;DUO;E1U95=E9%1H=49R:5-A
  15044. + M=$IA;D9E8DUA<D%P<DUA>4IU;DIU;$%U9U-E<$]C=$YO=D1E8P`E+C-S("4N
  15045. + M,W,E,V0@)3`R+C)D.B4P,BXR9#HE,#(N,F0@)60*```````#[`````(````!
  15046. + M````$`````P````````#\@```^L```3V```#\@```^D```&<GOP`#$C7`0-P
  15047. + M_][\``Q.=5%/2-<#`%!/3G5(YS`"(A!**``-9P1P`&`<)`DF`"QL``!.KO_6
  15048. + M(@!2@&8(3KH``'#_8`(@`4S?0`Q.=5%/2.<_-BX`*DDF2"P3+T8`*"](`"Q*
  15049. + M*P`-9P9P`&```(Q**P`,9V8F3=?'>@!@6"1-8`)2BK7+9`9P"K`29O2WRF8$
  15050. + M*`I@!D'J``$H")B-(B\`*"0-)@0L;```3J[_T"P`4H!F"$ZZ``!P_V`^VH:V
  15051. + MAF8V2^H``9Z&<`!.N@``3KH``$J`9B)*AV:D8!PB!B0-)@<L;```3J[_T"H`
  15052. + M4H!F"$ZZ``!P_V`"(`5,WVS\4$].=5E/2.<_`BX`+!`O00`<2B@`#6<$<`!@
  15053. + M4E.!)@$B!B0'+&P``$ZN_[XJ`$ZN_WPH`%*%9P1*A&<.(`1.N@``*4```'#_
  15054. + M8"0B!G0`)@).KO^^+`!2@&<$2H1G#B`$3KH``"E```!P_V`"(`9,WT#\6$].
  15055. + M=9[\`0!(YS\&+@`J2"P5*BT`""`M``1G"B(`+&P``$ZN_Z88+0`-2(1(Q"!-
  15056. + M3KH``$J$9P1P`&!$(@9![P`@)`@L;```=D#EBTZN_F@H`$J'9@HB!DZN_]Q*
  15057. + M@&<:2H1G$G#_NH!G#"(")`5.KO]&2H!G!'``8`9.N@``</],WV#\WOP!`$YU
  15058. + M("\`!$CG(`(B`"QL``!T`$ZN_S1.KO]\="Y&`K""5\%$`4B!2,$@`4S?0`1.
  15059. + M=2`O``0@;P`((F\`#)[\`!!(YS<6+@`F22I(?`!AN$J`9GPB!RQL``!T`4ZN
  15060. + M_E9*@&=L(@=![```)`AV!$ZN_]!9@&92(@<D/```)Q!.KO\T2H!G0B('0>\`
  15061. + M("0(=A!.KO_6<@FP@6\N<)NP+P`@9B9![P`E(@@D"TZN_-`J`$'O`";1P"((
  15062. + M)`U.KOS04H!G!E*%9P)\`2('=`!.KOY6(`9,WVCLWOP`$$YU("\`!"(O``B>
  15063. + M_`(02.<_!BX`</\O0`(H+T$`)"('+&P``'0`=@%.KO^^+T``("('3J[_OBP`
  15064. + M3J[_?"H`+T`"+&8``,(H+P`D(@<D!';_3J[^.+""9@``KKR";```GBH$FH8H
  15065. + M!2`$<@%(02QX``1.KO\Z*D!*@&9J<@)(04ZN_RCBB"H`#(4```(`;1`@!7(!
  15066. + M2$%.KO\Z*D!*@&9&>D#GC4OO`"@P/`'_<@!![P`H$,%1R/_\8"RXA6\$(`5@
  15067. + M`B`$)@!.N@``(@<D#2QL``!.KO_0L(-G"DZN_WPO0`(L8`:8@TJ$;M!![P`H
  15068. + ML<UG#")-(`4L>``$3J[_+BHO`BQF!$*O`B@L+P`@O*\`)&P.(@<D!BQL``!V
  15069. + M_TZN_[XL+P(H9PH@!4ZZ```I0```(`9,WV#\WOP"$$YUGOP!"$CG-Q8N`"9)
  15070. + M*D@L%4HM``UF``$8(`<$@```!`!G(`2````$`&=*4X!G6%.`9UQ3@&=>4X!G
  15071. + M9E.`9VQ@``#N2BT`#&<F(`9![P$D0^\!(&$`_=9*@&<4("\!)#=```(@+P$@
  15072. + M-H!P`&```,IP&6```+XB!BQL``!.KO\H)H!P`&```+(FAG``8```JG``8```
  15073. + MI"`&(A-A`/XV8```F"M3``AP`&```(XJ$TJM``1F#B(5+&P``$ZN_HPK0``$
  15074. + M("T`!&=B)``B!2QL``!.KOY<2H!F4B(&0>\`("0(=D#EBTZN_FA*@&<^(@5.
  15075. + MKO^F(BT`!$ZN_Z8B!DZN_]PB`G0`3J[_1AM\``$`#2J"*T(`!$'O`"`B""QL
  15076. + M``!.KO^X2H!G!"`"8`Y.N@``8`9P%BE```!P_TS?:.S>_`$(3G4@+P`$(B\`
  15077. + M""]O``P`!$CG#P8J+P`<+`$N`'`.3KH``"I`2H!F"G`,*4```'#_8$Y#U2+'
  15078. + M0IDBQD(M``TB!RQL``!.KO\H&T``#$AZ_G1(>OO:2'K[9$AZ^JQ(>OIV2'KZ
  15079. + M:"`%($U#^OI03KH``$_O`!@H`&P&($U.N@``(`1,WV#P3G4@+P`$(B\`""]O
  15080. + M``P`!"]O`!``""]O`!0`#"]O`!@`$$CG#0`H+P`4*B\`$"X`<`!*@68$<$#E
  15081. + MB`!```$O`"`'<O]A`/]&6$]*@&9`<`!*A&8$<$#EB`!```(O`"`%<O]A`/\H
  15082. + M6$]3@&8B<`!*KP`<9@1P0.6(`$```B\`("\`''+_80#_!EA/58!G$$'L``8O
  15083. + M2``03-\`L$[Z``!,WP"P3G4``````_@````"`````0``!EH```)<````````
  15084. + M`^^&```"7T1/4T)A<V4````0```%B```!2(```34```$O@``!(````/D```#
  15085. + MG````O````),```"!````;0```&.```!(@```.(```"F````,(,```)`7W-E
  15086. + M=&5R<@````4```4R```!Z@```/````"T````/H,```1`7V-H96-K7W-I9VYA
  15087. + M;',``````0```,J#```$0%]H86YD;&5?<VEG;F%L<P````$```#.@P``!$!C
  15088. + M;VYV97)T7V]S97)R```````#```#]@```5X```$\A@```E]E<G)N;P``````
  15089. + M!0``!7(```4Z```#^@```6(```%`@P```D!F<F5E`````````@``!<(```&@
  15090. + M@P```T!C:&MA8F]R=`````````$```.4@P```D!M86QL;V,``````0``!6:#
  15091. + M```#0%]A;&QO8U]F9````````0``!;2#```"7U]F86EL```````!```&9@``
  15092. + M``````/Q`````P````!/4%13``0`0````_(```/J````")LP('$``$9A:6QE
  15093. + M9"!T;R!I;FET:6%L:7-E($DO3P`````#\@```^D````G(&\`!")O``A(YR$6
  15094. + M)DDJ2$ZZ```B#20++&P``$ZN_[)*@&<$<`!@;$ZN_WPN`'(T1@&P@692(@).
  15095. + MKO^X2H!G#B(-3J[_LDJ`9P1P`&!&3J[_?"X`<F_2@;"!9BPB`G0`3J[_1DJ`
  15096. + M9QHB"TZN_[A*@&<0(@TD"TZN_[)*@&<$<`!@$DZN_WPN`"`'3KH``"E```!P
  15097. + M_TS?:(1.=0`````#[X,```-`8VAK86)O<G0````````!````$H8```)?1$]3
  15098. + M0F%S90````$````:@P``!$!C;VYV97)T7V]S97)R```````!````C(8```)?
  15099. + M97)R;F\```````$```"0`````````_$````#`````$]05%,`!`!````#\@``
  15100. + M`^D````.(&\`!"`O``@B+P`,GOP`#$C7`0-P`-[\``Q.=2`O``0B+P`(+V\`
  15101. + M#``$44](UP`#<`!03TYU``````/Q`````P````!/4%13``0``````_(```/I
  15102. + M````$"!O``0B;P`(("\`#$CG`10N`"9)*DAF!'``8!P@!R!+(DUR`$J`9PX2
  15103. + M&)(99@13@&;V2(%(P2`!3-\H@$YU``````/Q`````P````!/4%13``0`````
  15104. + M`_(```/I````!2!O``0@+P`(<@!@`A#!4X!D^DYU```#\0````,`````3U!4
  15105. + M4P`$``````/R```#Z0````P@+P`$(B\`"%E/+P<N`"]!``1.N@``2&\`!$AX
  15106. + M"`,O!TZZ``!/[P`,+A]83TYU``````/O@P```T!C:&MA8F]R=`````````$`
  15107. + M```4@P```E]I;V-T;````````0```"(````````#\0````,`````3U!44P`$
  15108. + M``````/R```#Z0````T@+P`$(B\`"%E/+P<N`"`!3KH``"]```1.N@``2&\`
  15109. + M!$AX"`0O!TZZ``!/[P`,+A]83TYU```#[X,```5`7VUA:V5?<')O=&5C=&EO
  15110. + M;@````````$````2@P```T!C:&MA8F]R=`````````$````:@P```E]I;V-T
  15111. + M;````````0```"@````````#\0````,`````3U!44P`$``````/R```#Z0``
  15112. + M`!`@;P`$("\`""(O``R>_``,2-<!`W#_*4```-[\``Q.=2!O``0@+P`((B\`
  15113. + M#)[\``Q(UP$#</\I0```WOP`#$YU```#[X8```)?97)R;F\```````(````X
  15114. + M````&`````````/Q`````P````!/4%13``0`0````_(```/I````#2`O``19
  15115. + M3R\'+@!.N@``2&\`!$AX"``O!TZZ``!/[P`,2H!G!'``8`0@+P`$+A]83TYU
  15116. + M``````/O@P```T!C:&MA8F]R=`````````$````,@P```E]I;V-T;```````
  15117. + M`0```!H````````#\0````,`````3U!44P`$``````/R```#Z0````\@+P`$
  15118. + M2.<&`$ZZ```L`'``3KH``&`&<`!.N@``*@`@!4ZZ``!*@&?N(`9.N@``<`0I
  15119. + M0```</],WP!@3G4```/O@P```T!S:6=S971M87-K``````(````L````"H,`
  15120. + M``1`7V-H96-K7W-I9VYA;',``````0```!*#```$0%]W86ET7W-I9VYA;',`
  15121. + M``````$````:@P``!$!?:&%N9&QE7W-I9VYA;',````!````(H8```)?97)R
  15122. + M;F\```````$````R`````````_$````#`````$]05%,`!`!````#\@```^D`
  15123. + M```H(&\`!$CG(Q8J2'X`0J<L;```<@(D#TZN_QQ/[P`$)D!*@&=2(@UT_DZN
  15124. + M_ZPN`&=&(@<D"TZN_YI*@&<Z(BL`!%[`1`!(@$C`+``B!TZN_Z9R`DZN_Q9*
  15125. + MAF<4(@U.KO^X2H!G!'``8#).N@``8"IP%"E```!@(DZN_WQ.N@``*4```$J'
  15126. + M9P8B!TZN_Z8@"V<()`MR`DZN_Q9P_TS?:,1.=0```^^&```"7T1/4T)A<V4`
  15127. + M```!````$(,```)`7W-E=&5R<@````$```!JA@```E]E<G)N;P```````@``
  15128. + M`(````!R@P``!$!C;VYV97)T7V]S97)R```````!````?`````````/Q````
  15129. + M`P````!/4%13``0`0````_(```/I```!ER!O``0@+P`((F\`#"]O`!``!"\'
  15130. + M+@`I2``>*4``&G(!L(%E'B\O``@O"6$``"103TJ`9PX@;``>0A`@!Y"L`!I@
  15131. + M`G``+A].=2!O``0B;P`(2.<`%"9)*DA@``3X$!5R);`!9@`$RE*-$!5(@$C`
  15132. + M2H!G``#6<B60@6<`!+1R')"!9P``S%.`9P`!)E.`9P`!@%.`9P`!HEF`9P`!
  15133. + M[%.`9P`"!%F`9P`"FEN`9P`##E.`9P`#,%.`9P`#6%.`9P`#>E6`9P`#H%.`
  15134. + M9P`#1E.`9P`$)E.`9P`$0E^`9P``HE.`9P``_%.`9P`!.E.`9P`!7%.`9P`!
  15135. + M=%>`9P``Y%6`9P`!TE.`9P`![E.`9P`"!E.`9P`"3%.`9P`":%6`9P`"=E6`
  15136. + M9P`"JE.`9P`"U%.`9P`"]%>`9P`#9E.`9P`#?E.`9P`#C&```^A3C6```^(@
  15137. + M*P`8:P9R!K"!;P9P`&```_XB*P`8Y8%![`!V+S`8`&$`!,983TJ`9@`#V&``
  15138. + M`^`@*P`8:P9R!K"!;P9P`&```\XB*P`8Y8%![``<+S`8`&$`!)983TJ`9@`#
  15139. + MJ&```[`@*P`0:P9R"["!;P9P`&```YXB*P`0Y8%![`%.+S`8`&$`!&983TJ`
  15140. + M9@`#>&```X`@*P`0:P9R"["!;P9P`&```VXB*P`0Y8%![`#"+S`8`&$`!#98
  15141. + M3TJ`9@`#2&```U!![`%^(DMA`/XZ2H!F``,T8``#/$'L`90B2V$`_B9*@&8`
  15142. + M`R!@``,H0>P!IB)+80#^$DJ`9@`##&```Q1(>``P2'@``B\K``QA``-Z3^\`
  15143. + M#$J`9@`"[F```O9(>``@2'@``B\K``QA``-<3^\`#$J`9@`"T&```MA(>``P
  15144. + M2'@``B\K``AA``,^3^\`#$J`9@`"LF```KH@*P`(<@Q.N@``<`Q*@6<"(`%(
  15145. + M>``P2'@``B\`80`#$$_O``Q*@&8``H1@``*,("L`'%*`2'@`,$AX``,O`&$`
  15146. + M`NY/[P`,2H!F``)B8``":DAX`"!(>``"+RL`"&$``M!/[P`,2H!F``)$8``"
  15147. + M3"`K``AR#$ZZ``!P#$J!9P(@`4AX`"!(>``"+P!A``*B3^\`#$J`9@`"%F``
  15148. + M`AY(>``P2'@``B\K``1A``*$3^\`#$J`9@`!^&```@`@*P`04H!(>``P2'@`
  15149. + M`B\`80`"8D_O``Q*@&8``=9@``'>2&P!L&$``K!83TJ`9@`!PF```<H,JP``
  15150. + M``P`"&T&0>P!LF`$0>P!MB\(80`"BEA/2H!F``&<8``!I$'L`;HB2V$`_(Y*
  15151. + M@&8``8A@``&00>P!P")+80#\>DJ`9@`!=&```7Q(>``P2'@``B\380`!Y$_O
  15152. + M``Q*@&8``5A@``%@+PMA``%D6$]*@&8``49@``%.0>P!S")+80#\.$J`9@`!
  15153. + M,F```3I(;`'680`"#%A/2H!F``$>8``!)B`K`!Q>@)"K`!AR!TZZ``!(>``P
  15154. + M2'@``B\`80`!?D_O``Q*@&8``/)@``#Z("L`&&<$4X!@`G`&(BL`'%Z!DH`@
  15155. + M`7('3KH``$AX`#!(>``"+P!A``%&3^\`#$J`9@``NF```,)(>``P2'@``2\K
  15156. + M`!AA``$H3^\`#$J`9@``G&```*1![`'8(DMA`/N.2H!F``"(8```D"`\```'
  15157. + M;-"K`!1R9$ZZ``!(>``P2'@``B\!80``Z$_O``Q*@&9<8&8@/```!VS0JP`4
  15158. + M2'@`,$AX``0O`&$``,9/[P`,2H!F.F!$("L`*&<,+P!A``$46$]*@&8F<`!@
  15159. + M+DJL`!I7P$0`2(!(P%.L`!I*@&<$<`!@%B!L`!X0U2E(`!Y2C4H59@#[!B`L
  15160. + M`!I,WR@`3G4@;P`$GOP`+$CG`1!#[P`(<`HBV%'(__Q![P`(3KH``"X`1^P`
  15161. + M#6`:(`=R"DZZ``!P,-*`%H%3BR`'<@I.N@``+@!*AV\(0>P``+?(8MI(:P`!
  15162. + M80``@%A/3-\(@-[\`"Q.=2`O``0B+P`(+V\`#``$2.<'!!HO`!<L`2X`2^P`
  15163. + M%V`<(`=R"DZZ``!P,-*`&H%3C2`'<@I.N@``+@!3ADJ';PY![``/N\ABV&`$
  15164. + M&H53C4'L``^[R&,((`93ADJ`;NQ(;0`!80``#EA/3-\@X$YU(&\`!"\-*D@@
  15165. + M+``:9Q@2'2!L`!X0@68$<`%@"E*L`!Y3K``:8.(J7TYU```#^`````\````!
  15166. + M```$O```!"8```02```#T````[P```.F```#H````X(```(X```")````A``
  15167. + M``'X```!R````9@```%H````$@````(```94```&4```!D0```8\```&%```
  15168. + M!@8```7@```%J@``!88```5:```%3@``!4@```4\```%,````#X````V````
  15169. + M'````!@````````#[X,```)?7T-81#,S``````D```7Z```%Z@``!:````60
  15170. + M```$W```!'X```1&```#&@```JR#```"0&UK=&EM90`````!```%@```````
  15171. + M``/Q`````P````!/4%13``0`0````_(```/J````>5-U;@!-;VX`5'5E`%=E
  15172. + M9`!4:'4`1G)I`%-A=```````````!`````@````,````$````!0````84W5N
  15173. + M9&%Y``!-;VYD87D``%1U97-D87D`5V5D;F5S9&%Y`%1H=7)S9&%Y``!&<FED
  15174. + M87D``%-A='5R9&%Y```````X````0````$@```!0````6@```&0```!L2F%N
  15175. + M`$9E8@!-87(`07!R`$UA>0!*=6X`2G5L`$%U9P!397``3V-T`$YO=@!$96,`
  15176. + M````D@```)8```":````G@```*(```"F````J@```*X```"R````M@```+H`
  15177. + M``"^2F%N=6%R>0!&96)R=6%R>0``36%R8V@`07!R:6P`36%Y`$IU;F4``$IU
  15178. + M;'D``$%U9W5S=```4V5P=&5M8F5R`$]C=&]B97(`3F]V96UB97(``$1E8V5M
  15179. + M8F5R``````#R````^@```00```$*```!$````10```$:```!(````2@```$R
  15180. + M```!.@```40E82`E8B`E92`E2#HE33HE4R`E60``)6TO)60O)7D@)4@Z)4TZ
  15181. + M)5,`)6TO)60O)7D```H`4$T``$%-```E2#HE30`E23HE33HE4R`E<``E2#HE
  15182. + M33HE4P``"0`E;2\E9"\E>0````````/L````)@````$```%Z```!=@```7(`
  15183. + M``%N```!:@```68```%B```!7@```5H```%6```!4@```4X```#N````Z@``
  15184. + M`.8```#B````W@```-H```#6````T@```,X```#*````Q@```,(```".````
  15185. + MB@```(8```""````?@```'H```!V````-````#`````L````*````"0````@
  15186. + M````'`````````/R```#ZP````D```/R```#Z0```!8@;P`$("\`"$CG)P(N
  15187. + M`"((+&P``"0\```#[4ZN_^(L`$ZZ``!*AF<<(`8B!TZZ```J`"(&3J[_W$J`
  15188. + M9@1*A6<$(`5@#DZN_WQ.N@``*4```'#_3-]`Y$YU```#[X8```)?1$]30F%S
  15189. + M90````$````2@P```T!C:&MA8F]R=`````````$````B@P``!$!?9&]?=')U
  15190. + M;F-A=&4````````!````+H,```1`8V]N=F5R=%]O<V5R<@```````0```$J&
  15191. + M```"7V5R<FYO```````!````3@````````/Q`````P````!/4%13``0`0```
  15192. + M`_(```/I````U2!O``0B;P`(("\`#"(O`!`O;P`4``0O;P`8``@O;P`<``R>
  15193. + M_``P2.<O-BXO`%@O2``L*@`H`7Q`Y8XO0``D+T$`*"])`#!P0.6(3KH``"I`
  15194. + M+T``1"`%4H!F$BQL``!.KO_*+T``0$*O`%!@)DAO`$!(>`@!+P5.N@``3^\`
  15195. + M#%*`9@1"KP!`<`$O0`!0(`5.N@``(`12@&82+&P``$ZN_\0O0``\0J\`3&!&
  15196. + MNH1F#"]O`$``/$*O`$Q@-DAO`#Q(>`@!+P1.N@``3^\`#%*`9@9P`"]``#PB
  15197. + M+P`\LJ\`0%;`1`!(@$C`+T``3"`$3KH``'#_OH!F$"!L```O:`#@`#A"KP!(
  15198. + M8%!P_KZ`9@PO;P`\`#A"KP!(8#Y(;P`X2'@(`2\'3KH``$_O``Q2@&8&<``O
  15199. + M0``X("\`."(O`#RR@&<*L*\`0&<$<`%@`G``+T``2"`'3KH``$JO`$!G``%D
  15200. + M2J\`/&<``5Q*KP`X9@92AV8``5`@#6<``40F37@`+V\`,``T8```K$J$9@8@
  15201. + M;P`L8`(@521(>@,J2&`:4H40%7(JL`%G#'(BL`%G!G(*L`%F`E*%4HU*%6;B
  15202. + M*F\`1"!-T<8B2]/%3>D``;W(920@!M"&T(4L`"!-3KH``"I`2H!G``#:(`N0
  15203. + MKP!$)DW7P"]-`$0@2Q"\`"!4BQ%\`"(``2I*8"`0%7(BL`%G!G(JL`%F!A;\
  15204. + M`"I@"G(*L`%F!!;\`"L6W4H59MP6_``B4H18KP`T*F\`-$J59@#_3D(3*F\`
  15205. + M7"`-9Q`B#2QL``!T_DZN_ZPH`&`">`!*A&8$(`UF/"IO`$0O+P!@+P0O+P!0
  15206. + M+R\`1"\O`%PO+P!0("\`6"(O`&@@34ZZ``!/[P`8*@!2@&<:($U.N@``(`5@
  15207. + M>"QL``!.KO]\3KH``"E```!*A&<2(@0L;```3J[_IF`&<`PI0```("\`0&<0
  15208. + M2J\`4&<*(@`L;```3J[_W"`O`#QG$$JO`$QG"B(`+&P``$ZN_]P@+P`X9Q!*
  15209. + MKP!(9PHB`"QL``!.KO_<*F\`1"`-9P8@34ZZ``!P_TS?;/3>_``P3G4@;P`$
  15210. + M(F\`""`O``PB+P`0+V\`%``$+V\`&``(+P4J+P`,+P4O+P`,2'C__V$`_-A/
  15211. + M[P`,*A].=0```^^#```"0&UA;&QO8P`````!````3(8```)?1$]30F%S90``
  15212. + M``@```+\```"Y@```M````*R```"G````D@```":````7(,```)?:6]C=&P`
  15213. + M``````,```$D````Q@```'B#```$0%]P<V5U9&]?8VQO<V4```````,```%4
  15214. + M````[@```)"&```!7U]U<P````$```#X@P```D!R96%L;&]C`````0```=B#
  15215. + M```$0%]S=&%R=%]P<F]C97-S``````$```*$@P```D!F<F5E`````````@``
  15216. + M`PX```*4@P``!$!C;VYV97)T7V]S97)R```````!```"I(8```)?97)R;F\`
  15217. + M``````(```*^```"J`````````/Q`````P````!/4%13``0`0````_(```/I
  15218. + M`````G`!3G5P`4YU```#\0````,`````3U!44P`$``````/R```#Z0````X@
  15219. + M+P`$+P<N`$ZZ```@!R!L``!R`$ZZ``!@#"`L``!.N@``3KH``"!L``!.N@``
  15220. + M2H!GZ'``+A].=0```^^#```#0&-H:V%B;W)T`````````0````J&```#7U]O
  15221. + M9&1?=&EM97(``````@```"@````0@P``!$!?=&EM97)?<W1A<G0````````!
  15222. + M````%H8```-?7V]D9%]S:6<````````!````'(,```1`7W=A:71?<VEG;F%L
  15223. + M<P```````0```""#```$0%]H86YD;&5?<VEG;F%L<P````$````D@P``!$!?
  15224. + M=&EM97)?97AP:7)E9``````!````+`````````/Q`````P````!/4%13``0`
  15225. + M0````_(```/I````#R!O``0@+P`(2.<!!"X`*DA.N@``+P=(>`,!+PU.N@``
  15226. + M3^\`#$S?((!.=2!O``0@+P`(2.<!!$S?((!@S````^^#```#0&-H:V%B;W)T
  15227. + M`````````0```!*#```"7V]P96X````````!````'@````````/Q`````P``
  15228. + M``!/4%13``0``````_(```/I````(R`O``0@;P`((B\`#%E/2.<#-"P!+@`J
  15229. + M2$ZZ```@!TZZ```F0$J`9T0(*P`!``-G-@@K``,``V<6(&L`&"](`!0@:P`$
  15230. + M<`!R`B)O`!1.D2!K`!0O2``4(`8@:P`$(DTD;P`43I)@"'`-*4```'#_3-\L
  15231. + MP%A/3G4@+P`$(&\`""(O``Q(YP,$3-\@P&"````#[X,```-`8VAK86)O<G0`
  15232. + M```````!````&H,```-`7V9I;F1?9F0````````!````((8```)?97)R;F\`
  15233. + M``````$```!J`````````_$````#`````$]05%,`!`!````#\@```^D````,
  15234. + M(&\`!%%/+PTJ2$'O``1.N@``2H!J!'#_8`X@#6<&("\`!"J`("\`!"I?4$].
  15235. + M=0`````#[X,```-`7V=E='1I;64````````!````$`````````/Q`````P``
  15236. + M``!/4%13``0``````_(```/I````'2!O``2>_`!`2.<[%BI(3KH``"`-9U)*
  15237. + M%6=.(@U![P`@)`@L;```=D!X`$ZN_'8N`&TV3J[_?"P`4H!.N@``)D!*@&<D
  15238. + MOH9G%"8&4H,B#20+3J[\=DJ`;Q`@`F`.($(B2Q+89OP@"V`"<`!,WVC<WOP`
  15239. + M0$YU```#[X,```-`8VAK86)O<G0````````!````$(8```)?1$]30F%S90``
  15240. + M``$````D@P```D!M86QL;V,``````0```#P````````#\0````,`````3U!4
  15241. + M4P`$`$````/R```#Z0```!,@;P`$(F\`"$CG,Q(F22((+&P``'3^3J[_K"X`
  15242. + M3KH``$J'9QHB"R0'=@!.KOY$+``B`DZN_Z9*AF<$(`-@!DZZ``!P_TS?2,Q.
  15243. + M=0`````#[X8```)?1$]30F%S90````$````2@P```T!C:&MA8F]R=```````
  15244. + M``$````>@P```D!?<V5T97)R`````0```$`````````#\0````,`````3U!4
  15245. + M4P`$`$````/R```#Z0```"0@;P`$GOP`#$CG`10J2$H89OQ3B)'-(`@F3=?`
  15246. + M78M^84ZZ```O+```2&P``$AO`!=.N@``3^\`#$'O``\B2$H99OQ3B9/((`ER
  15247. + M!;"!;PA![P`*T<!@!$'O``\O"$AL``0O"TZZ``!/[P`,%H<@37``3KH``$J`
  15248. + M9@I2!W!ZO@!OZD(5(`U,WRB`WOP`#$YU``````/X`````@````$```!>````
  15249. + M*@````````/O@P```T!C:&MA8F]R=`````````$````BA@```5]?=7,````!
  15250. + M````)H,```-?7W-P<FEN=&8````````"````9````#*#```#0%]?86-C97-S
  15251. + M`````````0```'(````````#\0````,`````3U!44P`$`$````/R```#Z@``
  15252. + M``(E;'@`825S`````_(```/I````!B!O``0O#2I(3KH``"!-<$#IB"I?3OH`
  15253. + M`````^^#```#0&-H:V%B;W)T`````````0````J#```"0&=E=&-W9``````!
  15254. + M````%@````````/Q`````P````!/4%13``0``````_(```/I````#R!O``0@
  15255. + M+P`(2.<A!BX`*DA.N@``(`=.N@``)``B#2QL``!.KO]&2H!G!'``8`9.N@``
  15256. + M</],WV"$3G4``````^^#```#0&-H:V%B;W)T`````````0```!*#```%0%]M
  15257. + M86ME7W!R;W1E8W1I;VX````````!````&(8```)?1$]30F%S90````$````@
  15258. + M@P```D!?<V5T97)R`````0```#`````````#\0````,`````3U!44P`$`$``
  15259. + M``/R```#Z0```!P@+P`$(B\`""]O``P`!%%/2.<'`"HO`!@L`2X`3KH``"`'
  15260. + M3KH``$J`9QHB0"!I`!@O2``0(`8B!2!I``0B;P`03I%@`G#_3-\`X%!/3G4@
  15261. + M+P`$(B\`""]O``P`!$CG!P`J+P`0+T4`$$S?`.!@H``````#[X,```-`8VAK
  15262. + M86)O<G0````````!````'H,```-`7V9I;F1?9F0````````!````)```````
  15263. + M``/Q`````P````!/4%13``0``````_(```/I````'"`O``0@;P`((B\`#%E/
  15264. + M2.<#-"P!+@`J2$ZZ```@!TZZ```F0$J`9R8(*P````-G&"!K`!`O2``4(`8@
  15265. + M:P`$(DTD;P`43I)@"'`-*4```'#_3-\LP%A/3G4@+P`$(&\`""(O``Q(YP,$
  15266. + M3-\@P&">``````/O@P```T!C:&MA8F]R=`````````$````:@P```T!?9FEN
  15267. + M9%]F9`````````$````@A@```E]E<G)N;P```````0```$P````````#\0``
  15268. + M``,`````3U!44P`$`$````/R```#Z0```($@+P`$(&\`"")O``PO;P`0``0O
  15269. + M;P`4``B>_``L2.<_-B9)*D@O0`!`)&\`7"`*9PY*DF8*2JH`!&8$<`%@`G``
  15270. + M<@`O0``T)`UG`B(5=``O00`L)@MG`B03>@!^`2]"`#!@4B@O`"S(ARPO`##,
  15271. + MATZZ``!*A&8$2H9G-B`%3KH``"1`2H!F!G#_8``!;DJ$9P@(*@````-G#$J&
  15272. + M9Q0(*@`!``-F#'`-*4```'#_8``!2E*%WH>ZKP!`;:@D;P!<(`IG$"`2(BH`
  15273. + M!"!L``!.N@``8`@@;```3KH``'H`(`5"KP!0>@!^`2]``"A@.B@O`"S(ARPO
  15274. + M`##,ATJ$9@1*AF<B(`5.N@``(D`@:0`(+T@`/"`$(@8@:0`$(F\`/$Z1@:\`
  15275. + M4%*%WH>ZKP!`;<`H+P!0(`12@&<&2J\`-&<(<`!.N@``8`H@+```@(1.N@``
  15276. + M+T``3'P`>`$N+P`P*B\`*&!P("\`+,"$+T``2"('PH0O00!$2H!F!$J!9U(@
  15277. + M!DZZ```B0"!I``Q(;P!$+T@`/"!I``1#[P!,+&\`/$Z66$\@+P!(9@HB#6<&
  15278. + M(@1&@<.5("\`1&8*(@MG!B($1H'#DTJO`$AF!DJO`$1G`E*%4H;8A+RO`$!M
  15279. + MBB`O`$Q.N@``2H5F%"!L``!.N@``2H!F"$JO`#1G`/[H(`5,WVS\WOP`+$YU
  15280. + M``````/O@P```T!C:&MA8F]R=`````````$```!P@P```T!?9FEN9%]F9```
  15281. + M``````,```%^```!!````'Z&```"7V5R<FYO```````!````J(8```-?7V]D
  15282. + M9%]T:6UE<@`````#```!Y````-0```#*@P``!$!?=&EM97)?<W1A<G0`````
  15283. + M```!````SH,```1`7W1I;65R7V%B;W)T`````````0```-B#```$0%]C:&5C
  15284. + M:U]S:6=N86QS``````$```%`A@```U]?;V1D7W-I9P````````$```%&@P``
  15285. + M!$!?=V%I=%]S:6=N86QS```````!```!3(,```1`7VAA;F1L95]S:6=N86QS
  15286. + M`````0```=R#```$0%]T:6UE<E]E>'!I<F5D``````$```'H`````````_$`
  15287. + M```#`````$]05%,`!`!````#\@```^D````@44](YR,D+B\`($ZZ```L+P`H
  15288. + M(`=.N@``*D!*@&=8("\`)%>`9PQ3@&<.<!8I0```8$1P#,"58$`@%70,S((D
  15289. + M``)"__.$ABJ"<@3"@G0$P(*P@6<>+T$`&"!M`"`O2``4(&T`!$/O`!AP`"1O
  15290. + M`!1.DF`&<`!@`G#_3-\DQ%!/3G4```/O@P```T!C:&MA8F]R=`````````$`
  15291. + M```,@P```T!?9FEN9%]F9`````````$````6A@```E]E<G)N;P```````0``
  15292. + M`"X````````#\0````,`````3U!44P`$`$````/R```#Z0````````/Q````
  15293. + M`P````!/4%13``0``````_(```/J````WF%M:6=A('-P96-I9FEC(&5R<F]R
  15294. + M````````56YK;F]W;B!E<G)O<@!N;W0@;W=N97(`;F\@<W5C:"!F:6QE(&]R
  15295. + M(&1I<F5C=&]R>0!N;R!S=6-H('!R;V-E<W,`:6YT97)R=7!T960@<WES=&5M
  15296. + M(&-A;&P`:2]O(&5R<F]R`&YO('-U8V@@9&5V:6-E(&]R(&%D9')E<W,`87)G
  15297. + M=6UE;G0@;&ES="!T;V\@;&]N9P``97AE8R!F;W)M870@97)R;W(`8F%D(&9I
  15298. + M;&4@;G5M8F5R`&YO(&-H:6QD('!R;V-E<W,``&YO(&UO<F4@<')O8V5S<V5S
  15299. + M`&YO="!E;F]U9V@@;65M;W)Y`'!E<FUI<W-I;VX@9&5N:65D`&)A9"!A9&1R
  15300. + M97-S`&)L;V-K(&1E=FEC92!R97%U:7)E9`!M;W5N="!D979I8V5S(&)U<WD`
  15301. + M`&9I;&4@97AI<W1S`&-R;W-S+61E=FEC92!L:6YK`&YO('-U8V@@9&5V:6-E
  15302. + M``!N;W0@82!D:7)E8W1O<GD`:7,@82!D:7)E8W1O<GD``&EN=F%L:60@87)G
  15303. + M=6UE;G0``&9I;&4@=&%B;&4@;W9E<F9L;W<`=&]O(&UA;GD@;W!E;B!F:6QE
  15304. + M<P!N;W0@82!T>7!E=W)I=&5R``!T97AT(&9I;&4@8G5S>0``9FEL92!T;V\@
  15305. + M8FEG``!N;R!S<&%C92!L969T(&]N(&1E=FEC90!I;&QE9V%L('-E96L``')E
  15306. + M860M;VYL>2!F:6QE('-Y<W1E;0!T;V\@;6%N>2!L:6YK<P``8G)O:V5N('!I
  15307. + M<&4`;6%T:"!A<F=U;65N=`!R97-U;'0@=&]O(&QA<F=E``!)+T\@<W1R96%M
  15308. + M(&5M<'1Y``!F:6QE(&YA;64@=&]O(&QO;F<``&1I<F5C=&]R>2!N;W0@96UP
  15309. + M='D`=&]O(&UA;GD@<V]F="!L:6YK<R`H;&]O<#\I`````!H````H````,@``
  15310. + M`$P```!<````=````'X```"8````L````,(```#2````Y````/8```$(```!
  15311. + M&@```28```$\```!4````5P```%N```!?@```8X```&>```!L````<0```'8
  15312. + M```!Z@```?H```((```"(````BX```)$```"5````F````)N```"@````I(`
  15313. + M``*F```"N@```"8``````^P````H`````0```VX```-J```#9@```V(```->
  15314. + M```#6@```U8```-2```#3@```TH```-&```#0@```SX```,Z```#-@```S(`
  15315. + M``,N```#*@```R8```,B```#'@```QH```,6```#$@```PX```,*```#!@``
  15316. + M`P(```+^```"^@```O8```+R```"[@```NH```+F```"X@```MX```+:```"
  15317. + MU@```!8````````#\@```^D```!%("\`!"E```!*@&<``(9R9Y"!9P``@E6`
  15318. + M9P``@'()D(%G?%.`9WA3@&=T4X!G<%.`9VQ3@&=H4X!G:%.`9VAR49"!9V93
  15319. + M@&=F4X!G9E.`9V93@&=F4X!G9E6`9V93@&=F4X!G9E.`9V95@&=F4X!G9E.`
  15320. + M9V93@&=F4X!G9E.`9V95@&=F4X!G9E.`9V93@&=F8&AP`&!F<`Q@8G`+8%YP
  15321. + M%F!:<`=@5G`(8%)P$&!.<!%@2G`"8$9P`F!"<!9@/G`'8#IP%F`V<"1@,G`6
  15322. + M8"YP%F`J<!Y@)G`28")P)6`><"9@&G`38!9P%F`2<!Q@#G`-8`IP#6`&<`U@
  15323. + M`G#_3G4O#BQL``!.KO]\80#^^BE````L7TYU```#^`````$````!```!#@``
  15324. + M``````/OA@```E]?3U-%4E(``````0````:&```"7T1/4T)A<V4````!```!
  15325. + M`@````````/Q`````P````!/4%13``0`0````_(```/K`````0```_(```/I
  15326. + M````!4ZZ``!.N@``3KH``'(&3OH````````#[X,```-`8VAK86)O<G0`````
  15327. + M```!`````H,```-`7V-L;W-E7V%L;``````!````!H,```)`9V5T<&ED````
  15328. + M``$````*@P```D!K:6QL`````````0```!`````````#\0````,`````3U!4
  15329. + M4P`$``````/R```#Z0```%D@;P`$("\`"%E/2.<!%BX`+T@`$"!O`!`J4&!D
  15330. + M<`VP+0`(9EH@+0"L9P;E@"!`8`*1R"9(("T`G+"'9S0@+0"@L(=G+"`M`."P
  15331. + MAV<D(`MG+B`K`!RPAV<8("L`(+"'9Q`@*P`XL(=G""`K`#"PAV8.(DUP8.^(
  15332. + M+'@`!$ZN_KPJ54J59IA,WVB`6$].=2`O``0B+P`(2.<!`BX`(`%3@&<,4X!G
  15333. + M"%.`9P1=@&8L+'@`!$ZN_WP@;```T/P!EB`'80#_2"!L``#0_`&D(`=A`/\Z
  15334. + M3J[_=G``8`AP%BE```!P_TS?0(!.=2`O``0B+P`(2.<&!"P!*@!.N@``2H5J
  15335. + M`D2%NJP``&8.2H9G!B`&3KH``'``8$@@!4ZZ```J0$J`9P9*K0`49PIP`RE`
  15336. + M``!P_V`L(`9G*"(M`!#!06$`_U@B`'`)O(!F%'(!*T$`%"M``!AP%$ZZ``!P
  15337. + M`&`"(`%,WR!@3G4``````^^&```"7U-Y<T)A<V4````"````Q````+:&```"
  15338. + M7V5R<FYO```````"```!*@```-R#```#0&-H:V%B;W)T`````````0```/B&
  15339. + M```#7U]O=7)?<&ED`````````0```0*#```$0%]S:6=?9&ES<&%T8V@`````
  15340. + M``(```%4```!#H,```-`7V9I;F1?<&ED```````!```!&`````````/Q````
  15341. + M`P````!/4%13``0`0````_(```/I````0R!O``1(YP`&*D@B32QX``1.KO\$
  15342. + M($U,WV``3OH``"`O``1(YP$$+@`J;``(8`X@+0`,L(=F!"`-8`@J54J59NYP
  15343. + M`$S?((!.=4CG(`)![``(3KH``"`L```B+```)`"S@@*"`'___RE"``12@BE"
  15344. + M```O`2\`2&P``$AL`!1.N@``3^\`$"QX``1.KOUF*4``.&<00>P`%'``3KH`
  15345. + M`"E``#1F"DAL``Y.N@``6$],WT`$3G5(YP`&("P`.&<*($`L>``$3J[]8$JL
  15346. + M`#1G."QX``1.KO]\8`PB37`<+'@`!$ZN_RX@;``T+'@`!$ZN_HPJ0$J`9N(@
  15347. + M;``T3KH``"QX``1.KO]V3-]@`$YU``````/X`````@````$```"D````=@``
  15348. + M``P````"````]@```.0```#(````N````)X```"4````C@```'H```!N````
  15349. + M:````$X````J`````````^^#```"0&9R964````````!````'(,```)`3F5W
  15350. + M3&ES=`````$```!2A@```5]?=7,````!````5H8```1?7W-T87)T=7!?=&EM
  15351. + M90```````0```%J#```#7U]S<')I;G1F`````````0```'Z#```#0$-R96%T
  15352. + M95!O<G0``````0```)J#```"7U]F86EL```````!````J(,```-`1&5L971E
  15353. + M4&]R=``````!````^@````````/Q`````P````!/4%13``0`0````_(```/J
  15354. + M````!F1O;W(N)6QX+B5L>```3F\@;65M;W)Y`````_(```/K````#P```_(`
  15355. + M``/I````+R!O``0@+P`((B\`#")O`!`O;P`4``0O;P`8``A93TCG#S8H+P`L
  15356. + M*B\`*"P!+@`J22](`"`L>``$3J[]9B9`2H!G,"!+(`1.KOUR)$!*@&<B(`UG
  15357. + M""5-`"@E10`D(&\`("`'(DHB!DZN_D1*`&8$(`I@%B`*9P8@2DZN_6P@"V<&
  15358. + M($M.N@``<`!,WVSP6$].=2!O``1(YP`&*D@@#6<8(DTL>``$3J[^/B!M``Y.
  15359. + MN@``($U.KOUL3-]@`$YU```#[X,```-`1&5L971E4&]R=``````"````K@``
  15360. + M`(0````````#\0````,`````3U!44P`$``````/R```#Z0```!0@;P`$("\`
  15361. + M"$CG(08N`"I(3KH``"(-+&P``$ZN_XA*@&<B(@!.KO^F(`=.N@``(`=.N@``
  15362. + M)``B#4ZN_T9*@&<$<`!@!DZZ``!P_TS?8(1.=0```^^#```#0&-H:V%B;W)T
  15363. + M`````````0```!*&```"7T1/4T)A<V4````!````&(,```5`7VUA:V5?<')O
  15364. + M=&5C=&EO;@````````(````R````+(,```)`7W-E=&5R<@````$```!&````
  15365. + M`````_$````#`````$]05%,`!`!````#\@```^D```!U(&\`!")O``@O;P`,
  15366. + M``0@+P`0+V\`%``(2.<'-"X`)&\`("9)*D@L*P!T)*\`'$*J`!(U?``!``Y"
  15367. + M:@`0)7P```(``#(U?``"``PE:P"``#8@*P!\9A`B*P`$;PHE?```"```%F`$
  15368. + M)4``%B53``1!ZP"$3KH``"5``"(E0``:)4``*B`K``1:@&<^58!G4%F`9T!5
  15369. + M@&9F(`UG'$AX`/](;```+PU.N@``3^\`#"H`;P8E10`68`@E?````0``%B5\
  15370. + M``"@```(8$HE?```$```"&!`)7P``$````A\`&`T2I-F$$HK``AF"B5\```@
  15371. + M```(8"`E?```@```"&`6("L`!&\&<$#AB&`&(#P``(``)4``"$J'9P)\`"`&
  15372. + M3KH``(&J``A,WRS@3G4@;P`$(F\`"%E/2.<C%BI(?@`O20`80J<L;```<@(D
  15373. + M#TZN_QQ/[P`$)D!*@&=0(@UT_DZN_ZPN`&=$(@<D"TZN_YI*@&<X(@=.KO\N
  15374. + M2H!7QD0&2(9(QDJ`9P8B`$ZN_Z8@!^6`+R\`&"!`+R@`#")"(`8@36$`_GI0
  15375. + M3WP`8`Y\_TZN_WQ.N@``*4```$J'9P8B!TZN_Z8@"V<()`MR`DZN_Q8@!DS?
  15376. + M:,183TYU```#^`````$````!````H`````````/O@P```T!?86UI9V$R9VUT
  15377. + M``````$```!T@P```U]R96%D;&EN:P````````$```"F@P```T!?;6%K95]M
  15378. + M;V1E``````$```$<A@```E]$3U-"87-E`````0```4*#```$0&-O;G9E<G1?
  15379. + M;W-E<G(```````$```&NA@```E]E<G)N;P```````0```;(````````#\0``
  15380. + M``,`````3U!44P`$`$````/R```#ZP```$````/R```#^P``")L11`!?<V5T
  15381. + M:FUP`'1E>'0`0%]L;VYG:FUP`$!?<V5T:FUP`%]?;&]N9VIM<`!?7W-E=&IM
  15382. + M<`!S<')I;G1F`%],5D]287=$;T9M=`!?06)S17AE8T)A<V4`7U]S<')I;G1F
  15383. + M`'1M<&YA;2YC`%]M:W1E;7``0'1M<&YA;0!?=&UP;F%M`%]?34521T5$`'!O
  15384. + M<&5N+F,`7W=A:71P:60`0&9C;&]S90!`9G)E90!`7W-T87)T7W!R;V-E<W,`
  15385. + M0%]S971E<G(`7V5R<FYO`%]$3U-"87-E`$!F;W!E;@!?7V9I9F]?8F%S90!?
  15386. + M7V9I9F]?;V9F<V5T`$!M86QL;V,`0'!C;&]S90!?<&-L;W-E`$!P;W!E;@!?
  15387. + M<&]P96X`<W1A<G0N8P!`8V]N=F5R=%]O<V5R<@!?7W!R;V-E<W-E<P!?7W-T
  15388. + M86-K7W-I>F4`7U]N97AT7W!I9`!?7V1O;W)?;F%M90!?7W-T87)T=7!?<&]R
  15389. + M=`!?3&EN:V5R1$(`7U]S=&%R=%]P<F]C97-S`%]?8VAI;&1?9&]O<E]N86UE
  15390. + M`%]?8VAI;&1?8V]M;6%N9%]L96X`7U]C:&EL9%]C;VUM86YD`%]?8VAI;&1?
  15391. + M97AI=`!?7V-H:6QD7V5N=')Y`&=E='!I9"YC`%]?;W5R7W!I9`!`8VAK86)O
  15392. + M<G0`0&=E='!I9`!?9V5T<&ED`'-I9VYA;"YC`%]?<VEG7VAA;F1L97)S`$!S
  15393. + M:6=N86P`7W-I9VYA;`!`<VEG=F5C`%]S:6=V96,`<VEG<V5T;6%S:RYC`$!?
  15394. + M<VEG7V1I<W!A=&-H`%]?<VEG7W!E;F1I;F<`7U]S:6=?;6%S:P!`<VEG8FQO
  15395. + M8VL`7W-I9V)L;V-K`$!S:6=S971M87-K`%]S:6=S971M87-K`'-T870N8P!?
  15396. + M<F5A9&QI;FL`0%]F:6)S=&%T`$!?;&9I8G-T870`7U]T96UP7V9N86UE`%]L
  15397. + M87-T7V5N=')Y`$!?9V5T7V-D`%]L87-T7V1I<@!`;'-T870`7VQS=&%T`$!S
  15398. + M=&%T`%]S=&%T`&1I<BYC`$!S965K9&ER`%]S965K9&ER`$!T96QL9&ER`%]T
  15399. + M96QL9&ER`$!R96%D9&ER`%]R96%D9&ER`$!C;&]S961I<@!?8VQO<V5D:7(`
  15400. + M0&]P96YD:7(`7V]P96YD:7(`9&ER7V1A=&$N8P!?7V=E=%]C9`!A8V-E<W,N
  15401. + M8P!`86-C97-S`%]A8V-E<W,`0%]?86-C97-S`%]?7V%C8V5S<P!F<W1A="YC
  15402. + M`%]I;V-T;`!`9G-T870`7V9S=&%T`'-Y;6QI;FLN8P!`<WEM;&EN:P!?<WEM
  15403. + M;&EN:P!M97-S86=E+F,`0&5X:70`7U]0<F]G<F%M3F%M90!?7U="96YC:$US
  15404. + M9P!?7W5S`%]?9F%I;`!?7VUE<W-A9V4`86QL;V-D;W,N8P!?06QL;V-$;W-/
  15405. + M8FIE8W1486=S`'-E=&IM<"YC`$!L;VYG:FUP`%]L;VYG:FUP`$!S971J;7``
  15406. + M9V5T:&]S=&YA;64N8P!?<W1R;F-P>0!?7W-Y<W1E;5]N86UE`$!G971H;W-T
  15407. + M;F%M90!?9V5T:&]S=&YA;64`<&5R<F]R+F,`7U]/4T524@!?<WES7V5R<FQI
  15408. + M<W0`7W-Y<U]N97)R`$!W<FET90!`<&5R<F]R`%]P97)R;W(`<VEG;&ES="YC
  15409. + M`%]S>7-?<VEG;&ES=`!W86ET-"YC`$!?:&%N9&QE7W-I9VYA;',`0%]W86ET
  15410. + M7W-I9VYA;',`0%]F<F5E7V5N=')Y`$!W86ET<&ED`$!W86ET`%]W86ET`$!W
  15411. + M86ET,P!?=V%I=#,`0'=A:70T`%]W86ET-`!P<V5U9&]?8RYC`$!?9G)E95]F
  15412. + M9`!`7V9I;F1?9F0`0%]P<V5U9&]?8VQO<V4`7U]P<V5U9&]?8VQO<V4`<FEN
  15413. + M9&5X+F,`0'-T<G)C:'(`0')I;F1E>`!?<FEN9&5X`&EN9&5X+F,`0'-T<F-H
  15414. + M<@!`:6YD97@`7VEN9&5X`'1I;65R<RYC`$!?9&5V:6-E7V-L;W-E`$!?9&5V
  15415. + M:6-E7V]P96X`0%]T:6UE<E]E>'!I<F5D`%]?=&EM97)?97AP:7)E9`!`7W1I
  15416. + M;65R7W-T87)T`%]?=&EM97)?<W1A<G0`0%]T:6UE<E]S:6<`7U]T:6UE<E]S
  15417. + M:6<`0%]T:6UE<E]A8F]R=`!?7W1I;65R7V%B;W)T`$!?9G)E95]T:6UE<@!?
  15418. + M7V9R965?=&EM97(`0%]A;&QO8U]T:6UE<@!?7V%L;&]C7W1I;65R`&9I9F]F
  15419. + M9"YC`%]?<W1A<G1U<%]T:6UE`$!?8VQE86YU<%]F:69O`%]?8VQE86YU<%]F
  15420. + M:69O`$!?:6YI=%]F:69O`%]?:6YI=%]F:69O`%]?9FEF;U]S:6<`7U]F:69O
  15421. + M7V]K`%]?1FEF;T)A<V4`8VQO<V4N8P!`8VQO<V4`7V-L;W-E`$!?7V-L;W-E
  15422. + M`%]?7V-L;W-E`&9I;&5S+F,`0%]L87-T7V9D`%]?;&%S=%]F9`!?7V9I;F1?
  15423. + M9F0`7U]F<F5E7V9D`$!?86QL;V-?9F0`7U]A;&QO8U]F9`!U=&EM92YC`$!?
  15424. + M9VUT,F%M:6=A`$!T:6UE`$!U=&EM90!?=71I;64`8F-O<'DN8P!`;65M;6]V
  15425. + M90!`8F-O<'D`7V)C;W!Y`&%M:6=A=&EM92YC`%]D87EL:6=H=`!?='IN86UE
  15426. + M`%]?0UA$,S,`0&QO8V%L=&EM90!`7V=E='1I;64`0&9T:6UE`%]F=&EM90!`
  15427. + M9V5T=&EM96]F9&%Y`%]G971T:6UE;V9D87D`=&EM96-O;G9E<G0N8P!?5&EM
  15428. + M97)"87-E`$!?86UI9V$R9VUT`%]?86UI9V$R9VUT`%]?9VUT,F%M:6=A`%]?
  15429. + M9V5T=&EM90!P=V0N8P!`9V5T;&]G:6X`7V=E=&QO9VEN`$!G971P=VYA;0!?
  15430. + M9V5T<'=N86T`0&=E='!W=6ED`%]G971P=W5I9`!?7V%M:6=A7W5S97(`<F5A
  15431. + M9&QI;FLN8P!?<W1R;&5N`$!R96%D;&EN:P!A;&QO8V$N8P!?;6%L;&]C`%]F
  15432. + M<F5E`%]A;&QO8V$`=6YL:6YK+F,`0'5N;&EN:P!?=6YL:6YK`'!I<&4N8P!`
  15433. + M<W1R8V%T`$!.97=,:7-T`$!S;V-K971P86ER`%]S;V-K971P86ER`$!P:7!E
  15434. + M`%]P:7!E`&=R<"YC`$!G971G<FYA;0!?9V5T9W)N86T`0&=E=&=R9VED`%]G
  15435. + M971G<F=I9`!S:6=N86QS+F,`7U]&4$524@!`7U]E>&ET`$!?9FEN9%]P:60`
  15436. + M0%]C;&5A;G5P7W!R;V-E<W-E<P!?7V-H:6QD<F5N7V5X:70`0%]I;FET7W!R
  15437. + M;V-E<W-E<P!`7V-L96%N=7!?<VEG;F%L<P!?7V-L96%N=7!?<VEG;F%L<P!`
  15438. + M7VEN:71?<VEG;F%L<P!?7VEN:71?<VEG;F%L<P!`0VAK7T%B;W)T`%]#:&M?
  15439. + M06)O<G0`7V-H:V%B;W)T`$!#6$9%4E(`7T-81D524@!?7VAA;F1L95]S:6=N
  15440. + M86QS`%]?=V%I=%]S:6=N86QS`$!?8VAE8VM?<VEG;F%L<P!?7V-H96-K7W-I
  15441. + M9VYA;',`7U]S:6=?9&ES<&%T8V@`0&%L87)M`%]A;&%R;0!?;6%I;BYC`$!M
  15442. + M86EN`$!?7V=E=&5N=@!`='%S;W)T`$!S=')N8W!Y`%]?7V-T>7!E`$!?:6YI
  15443. + M=%]U;FEX:6\`7U]?:6]B`%]?6$-%6$E4`%]3>7-"87-E`$!R96%L;&]C`%]?
  15444. + M7VUA:6X`0&UA:V5?96YV:7)O;@!?;6%K95]E;G9I<F]N`%]E;G9I<F]N`%]?
  15445. + M;V1D7W-I9P!?7V]D9%]T:6UE<@!U;6%S:RYC`$!U;6%S:P!?=6UA<VL`<')O
  15446. + M=&5C=&EO;BYC`$!?;6%K95]M;V1E`%]?;6%K95]M;V1E`$!?;6%K95]P<F]T
  15447. + M96-T:6]N`%]?;6%K95]P<F]T96-T:6]N`%]U<V5?86UI9V%?9FQA9W,`9VED
  15448. + M+F,`0&=E=&5G:60`7V=E=&5G:60`0&=E=&=I9`!?9V5T9VED`%]E>&ET+F,`
  15449. + M0%]E>&ET`%]?97AI=`!?7U]E>&ET`$!?8VQO<V5?86QL`%]?8VQO<V5?86QL
  15450. + M`&EO8W1L+F,`0&EO8W1L`&]P96XN8P!`7V%L;&]C7V%M:6=A9F0`0'-T<FEC
  15451. + M;7``7V]P96X`7U]?;W!E;@!C=&EM92YC`%]S<')I;G1F`$!R96%D`$!?='IS
  15452. + M970`7U]T>G-E=`!`;6MT:6UE`%]M:W1I;64`0&-T:6UE`%]C=&EM90!`87-C
  15453. + M=&EM90!?87-C=&EM90!`9VUT:6UE`%]G;71I;64`7VQO8V%L=&EM90!`='IS
  15454. + M971W86QL`%]T>G-E='=A;&P`0'1Z<V5T`%]T>G-E=`!?=&EM97IO;F4`86UI
  15455. + M9V%D;W,N8P!?7VEN:71?=6YI>&EO`%]?86QL;V-?86UI9V%F9`!`7V1O7W1R
  15456. + M=6YC871E`%]?9&]?=')U;F-A=&4`<F5N86UE+F,`0')E;F%M90!?<F5N86UE
  15457. + M`&-H;W=N+F,`0&9C:&]W;@!?9F-H;W=N`$!C:&]W;@!?8VAO=VX`8F-M<"YC
  15458. + M`$!B8VUP`%]B8VUP`&)Z97)O+F,`0&)Z97)O`%]B>F5R;P!F=')U;F-A=&4N
  15459. + M8P!`9G1R=6YC871E`%]F=')U;F-A=&4`9F-H;6]D+F,`0&9C:&UO9`!?9F-H
  15460. + M;6]D`&UK9FEF;RYC`$!M:VYO9`!?;6MN;V0`0&UK9FEF;P!?;6MF:69O`&ES
  15461. + M871T>2YC`$!I<V%T='D`7VES871T>0!S:6=P875S92YC`$!S:6=P875S90!?
  15462. + M<VEG<&%U<V4`<FUD:7(N8P!`<FUD:7(`7W)M9&ER`'-T<F9T:6UE+F,`0'-T
  15463. + M<F9T:6UE`%]S=')F=&EM90!T<G5N8V%T92YC`$!T<G5N8V%T90!?=')U;F-A
  15464. + M=&4`97AE8RYC`$!E>&5C`%]E>&5C`$!E97AE8P!?965X96,`=6ED+F,`0&=E
  15465. + M=&5U:60`7V=E=&5U:60`0&=E='5I9`!?9V5T=6ED`'-L965P+F,`0'-L965P
  15466. + M`%]S;&5E<`!C<F5A="YC`$!C<F5A=`!?8W)E870`0%]?8W)E870`7U]?8W)E
  15467. + M870`=W)I=&4N8P!?=W)I=&4`0%]?=W)I=&4`7U]?=W)I=&4`=&EM92YC`%]T
  15468. + M:6UE`&=E=&5N=BYC`%]?7V=E=&5N=@!L:6YK+F,`0&QI;FL`7VQI;FL`;6MT
  15469. + M96UP+F,`0&UK=&5M<`!G971W9"YC`$!G971C=V0`0&=E='=D`%]G971W9`!C
  15470. + M:&UO9"YC`$!C:&UO9`!?8VAM;V0`;'-E96LN8P!`;'-E96L`7VQS965K`$!?
  15471. + M7VQS965K`%]?7VQS965K`')E860N8P!?<F5A9`!`7U]R96%D`%]?7W)E860`
  15472. + M<V5L96-T+F,`0'-E;&5C=`!?<V5L96-T`&9C;G1L+F,`7V9C;G1L`&5R<F]R
  15473. + M7VUS9RYC`&5R<F]R+F,`7U]S971E<G(`7V-O;G9E<G1?;W-E<G(`86)O<G0N
  15474. + M8P!`:VEL;`!`86)O<G0`7V%B;W)T`&MI;&PN8P!?:VEL;`!P<F]C97-S97,N
  15475. + M8P!`1&5L971E4&]R=`!`0W)E871E4&]R=`!?7V-L96%N=7!?<')O8V5S<V5S
  15476. + M`%]?:6YI=%]P<F]C97-S97,`7U]F:6YD7W!I9`!?7V9R965?96YT<GD`9&5V
  15477. + M:6-E<RYC`%]?9&5V:6-E7V-L;W-E`%]?9&5V:6-E7V]P96X`;6MD:7(N8P!`
  15478. + M;6MD:7(`7VUK9&ER`&9I8G-T870M:&%R9"YC`%]?9FEB<W1A=`!?7VQF:6)S
  15479. + M=&%T`````0````$`"0`)`^D````$``X`%@`!`!@`!``!`"$`#@`!`"L````!
  15480. + M`#0`#``!``D`#`/I``(`/`!)``$`5@````$`8``I``,`"0`*`^D``0!H``(`
  15481. + M<0`$``$`>0````$`@0`$`^H``````($`"0/K``````"*`%0``P`)`&\#Z0`,
  15482. + M`)$`F@"B`*@`N`#"`,D`T0!5`-D`Y0#R``0`^P%>``$!`P%:``$!"P`(``$!
  15483. + M$@````$`@0`%`^H``````($``0/K``````$9`2T``P`)`,4#Z0`+`*(`P@$@
  15484. + M`3`!/`%)`50`\@%@`,D!;P`"`*D`Y@`!`7D`M@`!`($`!@/J``````"!``H#
  15485. + MZP````4!B0`D``$!FP`@``$!KP`<``$!OP`8``$!S`````$!V@)M``$`"0`#
  15486. + M`^D``@'C`>P``@'W`````0'_`````0('`H8``0`)`",#Z0`#`,("$`'L``0"
  15487. + M'P!B``$")P!:``$"+P`,``$"-P````$"/P+&``$`"0`5`^D`!`)+`EL![`)I
  15488. + M``0"=`!&``$"?@!"``$"B``$``$"E`````$"H`,"``(`"0":`^D`"0*F`K`!
  15489. + M[`*Z`,D"Q@+3`MX"Z``$`O(!U@`!`OD!S@`!`P`!G@`!`P8!E@`!`($`00/K
  15490. + M``````,,`_4``0`)`-`#Z0`)`M,"W@'L`,(!(`#)`/("Z`"B``H#$@,@``$#
  15491. + M&P,8``$#)`,(``$#+0,$``$#-@*0``$#/P*,``$#2`).``$#4@)*``$#7`%>
  15492. + M``$#90%:``$#;@48``(`"0`(`^D``0#)``("WP````$#>0````$`@0`"`^L`
  15493. + M```"`M,`!``!`N@````!`X(%,@`!``D`&P/I``,`P@*P`>P`!`.+`&```0.3
  15494. + M`%@``0.;``@``0.E`````0.O!6@``0`)`$$#Z0`&`,(!(`*Z`,D#M@'L``(#
  15495. + MO@`(``$#Q0````$#S`77``$`"0`.`^D``P"X`,D![``"`]8`"``!`]\````!
  15496. + M`^@%_P`"``D`/@/I``4#\0/X`,D$!@02``($%P#B``$$'@#4``$`@0`/`^H`
  15497. + M````!"@&A@`!``D`!P/I``$`R0`!!#,````!!$<&G``!``D`#P/I``0`#0*'
  15498. + M`!<":0`$!%``'@`!!%D`%@`!!&(`!``!``$````!!&H&S``!``D`!P/I``($
  15499. + M=P2!``($CP`(``$$G`````$$J0;I``(`"0`I`^D`!@#)!+($N@3'`,($T``"
  15500. + M!-@`!``!!.`````!`($`"`/J``````3H!U(``@`)```#Z0``````@0#&`^H`
  15501. + M```!!/("F``!!/\(1P`!``D`.@/I``4%!@47`,(%)@$P``@%-`#```$`D@"T
  15502. + M``$%/0"F``$%0P"B``$%20"2``$%4`"&``$%5P`0``$%7@````$%90BJ``$`
  15503. + M"0`2`^D``P5O!7D![``"!80`!``!!9,````!!:((V``!``D``P/I``$%J@`"
  15504. + M!;0`"``!!;P````!!<0(Z@`!``D``P/I``$%RP`"!=0`"``!!=L````!!>((
  15505. + M_``"``D`30/I``(%Z@7Y``P&"`$$``$&&`$```$&*`#(``$&-@"\``$&1`"H
  15506. + M``$&4`"D``$&7`!^``$&:@!Z``$&>`!2``$&A0!.``$&D@````$&H`````$`
  15507. + M@0`$`^H`````!JX);0`#``D`'@/I``($$@:W``0&Q@!4``$&U0!4``$&Y```
  15508. + M``$&\`````$`@0`%`^H````!!OP````!`($`!`/K````!`<'``P``0#E``@`
  15509. + M`0#9``0``0<1`````0<<";H``0`)`!8#Z0`#!6\%>0'L``0')`!0``$'*P!,
  15510. + M``$',@`$``$'.P````$'1`GL``(`"0!B`^D``P"B`,(`\@`(!TP!@``!!U8!
  15511. + M@``!!7H!3``!!V`!2``!!7`!+``!!VH!*``!!W0`,``!!W\````!`($``@/K
  15512. + M``````>*"H```0`)`!H#Z0`%`+@`R0>1!YT![``"!Z0`"``!!ZL````!![(*
  15513. + MOP`!``D`!P/I``$'N0`"!\,`#``!!\H````!!]$*U0`"``D`4@/I``8'W0?G
  15514. + M!^X']@@!`>P`!`@,`0X``0@3`0H``0@:``@``0@H`````0"!``P#Z@`````(
  15515. + M-@MU``$`"0`P`^D``@?N"$0`!@A/`'@``0A;`'0``0>2`"@``0AG`"```0@"
  15516. + M``0``0AS`````0A]"[X``@`)``L#Z0````8(@P`D``$(C0`D``$(EP`6``$(
  15517. + MH0`2``$(JP`$``$(M0````$`@0`)`^H````!"+\`!``!",P+Z@`!``D`*@/I
  15518. + M``8`P@$@"-8`N`#)`>P``@C?``P``0*G`````0CI#$```P`)`"P#Z0`""/$(
  15519. + M^0`!"0``+@`!`($`!P/J``````"!``$#ZP`````)"`R=``$`"0`V`^D`!@$@
  15520. + M`>P#M@=+`,(`R0`""1$`9``!"1D`8``!"2$-`P`"``D"&@/I`!4%>0#9`.4'
  15521. + M!P'L!6\'<P#R`+@`50)+"2<%!@47`,D`P@"B!Q$)+P02!OP`!`DY!]0``0E%
  15522. + M!\(``0E1!S8``0E7!S(``0"!`!4#Z@`````)70_\``(`"0`)`^D````$"6,`
  15523. + M%@`!"6T`$@`!"7<`!``!"8$````!`($`"0/J``````F+$"<``P`)`*D#Z0`-
  15524. + M"94$'0F<":0)KPG$"=,&=P9#!!8&D08G!@<`%`GE`IH``0GW`IH``0H)`EP`
  15525. + M`0H8`EP``0HG`EH``0HR`EH``0'M`E(``0H]`E(``0I'`D0``0I/`D```04'
  15526. + M`>H``0I7`>8``048`=```0IH`<P``0IW`;8``0J'`;(``0),`0P``0J7`0@`
  15527. + M`0JF`"@``0JM`"0``0"!``H#Z@``````@0!$`^L````#`EL!"``!`FD!!``!
  15528. + M`A``!``!"K0170`#``D"'0/I`!4#\0J["+\*P0K+"M,*W00&"N4`R0H(!N,&
  15529. + M0P:1"O0*^@L$`*(+#`#R!!8``PL6`WH``0L>`'@``0LL`'@``0"!`"P#Z@``
  15530. + M````@0`(`^L````(!($`'``!"SH`&``!"$0`%``!`3P`$``!!K<`#``!"T,`
  15531. + M"``!"TT`!``!!!(````!"UD4>P`!``D`!`/I`````@MA``0``0MH`````0MO
  15532. + M%(<``@`)`#X#Z0````0+?`!^``$+B`!Z``$+E``$``$+I@````$`@0`!`^L`
  15533. + M```!"[@````!"\D4U@`!``D``@/I````!`O/``0``0O8``0``0OA`````0OI
  15534. + M`````0OQ%.```0`)`!4#Z0`'"OH&=PM-">0&Q0<J!TL`!@OY`$P``0P``$@`
  15535. + M`0F=`"8``0P'`"(``0P/`````0P;`````0PG%2H``0`)`!,#Z0`"!7D![``"
  15536. + M#"\`#``!`[<````!##854P`"``D`F`/I``H,/`"X`,(+DP2R`2``R0Q,`>P$
  15537. + M$@`"#%8"2``!#%P````!`($``@/J``````QD%D0``P`)!6@#Z0`*#&L*P0K3
  15538. + M!^X*W0<C#'0,50DG!<L`$`Q[%9(``0R#%9(``0R+%80``0R3%8```0R;$/0`
  15539. + M`0RB$/```0RI$)0``0RR$)```0R[#I@``0S##I0``0?W#C```0S+#BP``0S6
  15540. + M#38``0SA#38``0SL#,8``0SS#,8``0"!`$@#Z@````,'W0`8``$,^@`4``$'
  15541. + MYP`,``$`@03V`^L`````#00<K``"``D!G`/I``L$%@=S`/(![`"B`,(!(`4&
  15542. + M"G8`N`#)``8*Y@7L``$-#P7,``$,/056``$-'05(``$-+0+8``$-.P+0``$`
  15543. + M@0`(`^H`````#4D>O``!``D`)P/I``0`P@$@`,D![``"#5(`"``!#5H````!
  15544. + M#6(?!``!``D`#@/I````!`UJ`"H``0UR`!P``0UZ``P``0V!`````0V('QH`
  15545. + M`0`)`!`#Z0````(-CP`,``$-E0````$-FQ\R``$`"0`%`^D````"#:,`"``!
  15546. + M#:H````!#;$?/P`!``D`#`/I``(#M@'L``(-O0`(``$-R`````$-TQ]@``$`
  15547. + M"0`-`^D``P.V`>P+DP`"#=P`"``!#>0````!#>P?B@`!``D`$`/I``$`P@`$
  15548. + M#?4`+``!#?P`(``!#@,`#``!#@L````!#A,?J@`!``D`#0/I``(#M@'L``(.
  15549. + M'``$``$.)`````$.+!_,``$`"0`/`^D`!0#"!08%%PIV`H<``@XW``0``0Y!
  15550. + M`````0Y+(`8``0`)`"@#Z0`$`2``P@"X`,D``@Y3``0``0Y:`````0YA($\`
  15551. + M`P`)`9<#Z0`"#(H'[@`"#FP`$@`!#G8````!`($`>0/J``````"!``D#ZP``
  15552. + M```.@"+2``$`"0`6`^D`!0#"`2`-+`'L`,D``@Z+``@``0Z5`````0Z?(Q``
  15553. + M`0`)`-4#Z0`*`,(!(`"B`*@+#`02!8,#M@#)`/(`!`ZF`S@``0ZL`QP``0ZR
  15554. + M`"(``0ZY`````0[`)#,``0`)``(#Z0````0.Q@`$``$.SP`$``$.V`````$.
  15555. + MX`````$.Z"0]``$`"0`.`^D`!P8'!08%%PM#!B<+30'L``(.\``$``$.]P``
  15556. + M``$._B2$``$`"0`/`^D``@Q5`>P`!`\&`#(``0\-`"H``0\4``@``0\=````
  15557. + M`0\F)*@``0`)`",#Z0`#`,(%>0'L``0$T0""``$/+@!V``$/-0`,``$//@``
  15558. + M``$/1R3F``$`"0`,`^D``0@!``('G@`$``$/3@````$/5"4"``$`"0`=`^D`
  15559. + M`P#R`,D![``""L(`!``!#UT````!#V<E.0`!``D`$P/I``,`N`'L`,D``@]N
  15560. + M``@``0]T`````0]Z)68``@`)`"0#Z0`$`YH`5002`>P``@^#``0``0!I````
  15561. + M`0"!``(#Z@`````/BR6V``$`"0`&`^D``@^2`>P``@^;``0``0^B`````0^I
  15562. + M)=$``0`)``\#Z0`$`+@`R0N3`>P``@^Q``@``0^X`````0^_)@(``0`)`!P#
  15563. + MZ0`"!7D![``$#\<`7``!#\X`3@`!#]4`#@`!#]X````!#^<F-``!``D`'`/I
  15564. + M``,`P@5Y`>P`!`QU`&0``0_N`%@``0_T``P``0_\`````1`$)FL``0`)`($#
  15565. + MZ0`+!@<%!@47"T,*=@9;!B<+30#"!7D![``"$`T`&``!$!4````!$!TG00`!
  15566. + M``D`(`/I``,`P@5Y`>P``1`E`````1`L)WP``@`)```#Z0``````@0#>`^H`
  15567. + M```"!,<#<@`!!+H"U@`!$#@HD0`"``D`10/I``(`R02R``0`N0#^``$00`#^
  15568. + M``$!(0`$``$020````$`@0`!`^L````!`,(````!$%@H\@`!``D`!0/I``00
  15569. + M7P'V#`X![``"$&8````!$&T````!$'0I%P`!``D`60/I``8)I`)+`>,![`#"
  15570. + M"P0``A!@`.X``1![`.8``1"!*:```P`)`$,#Z0`($(P$%A"8`%4&MP02"2\`
  15571. + MH@`(";``L@`!$*4`L@`!"=0`2``!$+D`2``!":4`(@`!$,H`'@`!!2<`!``!
  15572. + M$-4````!`($`!@/J``````"!``\#ZP````8!8``X``$)Q``T``$!5``4``$!
  15573. + M,``(``$!XP`$``$!20````$0XBHY``$`"0`O`^D``1",``0%ZP"4``$0[`"0
  15574. + M``$%^@`<``$0^P````$1"2IY``$`"0`4`^D`!`"X"Y,`R0'L``(1$0`(``$1
  15575. + M&`````$1'RJP``(`"0!U`^D`!@#"`2``R0M[`J8(3@`$`K$!,``!$2X!*``!
  15576. + >`KL`&``!$3@````!`($`0`/K`````0+&`````0``
  15577. + `
  15578. + end
  15579. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/unix.lib.uue emacs-18.59/amiga/unix/src/unix.lib.uue
  15580. *** /src/baseline/emacs-18.59/amiga/unix/src/unix.lib.uue    Thu Jan  1 00:00:00 1970
  15581. --- emacs-18.59/amiga/unix/src/unix.lib.uue    Tue Jul 12 10:32:02 1994
  15582. ***************
  15583. *** 0 ****
  15584. --- 1,1186 ----
  15585. + begin 666 unix.lib
  15586. + M```#^@``*UH```/I````"2!O``0@UTC0_/QP`$YU(&\`!"`O``AF`G`!(EA,
  15587. + MT/S\6(].T0```_(```/I````#$CG(#(@;P`80^\`'$7Z`!PF;P`4)`LL>0``
  15588. + M``!.K@``(`N0@DS?3`1.=1;`3G4``````^^!```#7T%B<T5X96-"87-E````
  15589. + M`0```!B&```#7TQ63U)A=T1O1FUT`````0```!X````````#\@```^D````*
  15590. + M(&\`!"\-*D@@#68$2^P``$'L```B31+89OPO#4ZZ``!83RI?3G4``````_@`
  15591. + M```!`````0```!(````!`````@````X````````#[X,```)?;6MT96UP````
  15592. + M``$````>`````````_$````#`````$]05%,`!`!````#\@```^H````$=#IT
  15593. + M;7!?6%A86%A8`````````_(```/K````"0```_(```/I````;R!O``0B;P`(
  15594. + MGOP`($CG+Q8F22](`"`O20`D<`Q.N@``*D`@+```4JP``"(L``#2@"\!2&P`
  15595. + M`$AO`#!.N@``3^\`#'!WL!-F-DHK``%F,$'O`"A#[``03KH``"9`+&P``$ZN
  15596. + M_\0N`'P`0>\`*"(()#P```/M3J[_XBH`>`%@1G!RL!-F-DHK``%F,$'O`"A#
  15597. + M[``23KH``"9`+&P``$ZN_\HJ`'@`0>\`*"(()#P```/N3J[_XBX`?`%@"G`6
  15598. + M*4```&```(Q*A6<$2H=F!$ZZ```@"V="2H5G/DJ'9SH@#6<V<``O`"\`+P!(
  15599. + M>/__+P8O!R`%(@0@;P`X3KH``$_O`!@K0``(9Q`JK```*4T``"M+``0@"V`Z
  15600. + M(`UG!B!-3KH``$J%9PY*A&<*(@4L;```3J[_W$J'9PY*AF<*(@<L;```3J[_
  15601. + MW"`+9P8@2TZZ``!P`$S?:/3>_``@3G4@;P`$44](YP$T)DA+[```+T@`$&`Z
  15602. + M(&H`!+'+9C`F52XK``@JDR!K``1.N@``($M.N@``0J=(;P`8+P=.N@``3^\`
  15603. + M#$J`:PX@+P`48`HJ2B15(`IFP'#_3-\L@%!/3G4``````_@````#`````0``
  15604. + M`)````!4````-`````,````"```!:````0P```$(`````````^^#```"0&UA
  15605. + M;&QO8P`````!````'H8```1?7V9I9F]?;V9F<V5T`````````@```"@````D
  15606. + MA@```U]?9FEF;U]B87-E``````$````L@P```U]?<W!R:6YT9@````````$`
  15607. + M```\@P```D!F;W!E;@```````@```)0```!8A@```E]$3U-"87-E````!```
  15608. + M`3X```$L````F@```%Z&```"7V5R<FYO```````!````OH,```)`7W-E=&5R
  15609. + M<@````$```#.@P``!$!?<W1A<G1?<')O8V5S<P`````!````^H,```)`9G)E
  15610. + M90````````(```&,```!'H,```)`9F-L;W-E``````(```&&```!3(,```)?
  15611. + M=V%I='!I9`````$```&8`````````_$````#`````$]05%,`!`!````#\@``
  15612. + M`^H````%<&EP93IU>&]P96XN)6QX`'<`<@````/R```#ZP````$```/R```#
  15613. + MZ0```,6>_``82.<A/DGY`````$7L`!@J6B!:+AHF;``D+T@`()/)+'@`!$ZN
  15614. + M_MHD;```($!#Z`!*($DB;```3J[_"B!L``!#[``$3J[^DD/O`"0B_(```"1P
  15615. + M`2+`0IDB+P`@0>\`)"0(+$I.KOVBX8`K0``8+'@`!$ZN_WPB2TZN_GI*@&<*
  15616. + M($`B34ZN_I)@"")-<!Q.KO\N3J[_=B)+<"!.KO\N(F\`("`'3J[_+DS??(3>
  15617. + M_``82H!.=2!O``0@+P`((B\`#"]O`!``!"]O`!0`""]O`!@`#"]O`!P`$"]O
  15618. + M`"``%"]O`"0`&%E/2.</%BHO`#@L+P`T+@`J2"]!`!QP'$ZZ```F0"!-2AAF
  15619. + M_%.(D<T@"%*`*4``('(!+'@`!$ZN_SHI0``<(D`2W6;\<!QR`4ZN_SHI0``8
  15620. + M<"!R`4ZN_SHI0``D<`$I0``00?K_G"`(0_K^L)")*4``%$'L``!.KO\B*4``
  15621. + M`"(+9P`!2DJL`!QG``%"2JP`&&<``3I*K``D9P`!,DJ`;P`!+"!L```@*``4
  15622. + M0?K^;B)L```B:0`08`(2V%.`9/I![```(FP`)!+89OP@+```4JP``"=```PG
  15623. + M1P`03>P`%CS\`!1P!1E```P@5C%\`!P`$A%```@@7B%K``P`%"`\@``#\DJ&
  15624. + M9@)P`2@`2H5O!"`%8`0@+```0J=(>``!+SR```/Z+P`O/(```_,O!B\$+R\`
  15625. + M3"\\@``#\2\O`%`O/(```_`O+P!4+SR```/O+R\`6"\\@``#[2\O`%@O/(``
  15626. + M`^XO!R\\@``#["!L```O*``0+SR```/K+&P``"(/3J[^#D_O`%0G0``(9S0@
  15627. + M;```+'@`!$ZN_H`@;```+'@`!$ZN_HQ*@&?D0JL`%$'L```B2RQX``1.KO\0
  15628. + M("L`#&!H+&P``$ZN_WQ.N@``8`)P#"E````@"V<&($M.N@``("P`'&<.(D`@
  15629. + M+``@+'@`!$ZN_RX@+``89PPB0'`<+'@`!$ZN_RX@+``D9PPB0'`@+'@`!$ZN
  15630. + M_RX@+```;PH@0"QX``1.KO\<</],WVCP6$].=0```_@````#`````0```5H`
  15631. + M``%6```!1@```!<````"```"_````NH```+8```"S````L0```)0```!S```
  15632. + M`<(```&J```!E@```8H```%\```!=````6P```%B```!0````30```$B```!
  15633. + M%````$0````X````&@```!`````````#[X$```-?3&EN:V5R1$(````````!
  15634. + M````"H8```)?1$]30F%S90````,```*F```"7@```"R&```$7U]S=&%R='5P
  15635. + M7W!O<G0```````,```)^```"<@```$"#```"0&UA;&QO8P`````!```!`(8`
  15636. + M``-?7V1O;W)?;F%M90`````!```!IH8```-?7VYE>'1?<&ED```````"```!
  15637. + MM@```;*&```#7U]S=&%C:U]S:7IE`````0```?J&```#7U]P<F]C97-S97,`
  15638. + M`````0```I*#```$0&-O;G9E<G1?;W-E<G(```````$```*NA@```E]E<G)N
  15639. + M;P```````0```K:#```"0&9R964````````!```"P`````````/Q`````P``
  15640. + M``!/4%13``0`0````_(```/J````!@````````````````````$`````````
  15641. + M`````_(```/K````"@```_(```/I`````TZZ```@+```3G4``````^^#```#
  15642. + M0&-H:V%B;W)T`````````0````*&```#7U]O=7)?<&ED`````````0````8`
  15643. + M```````#\0````,`````3U!44P`$`$````/R```#Z0```",@+P`$(&\`"")O
  15644. + M``Q(YP$4+@`F22I(3KH``'`!OH!M+'`@OH!L)B`+9PX@!^>`0^P``-/`)MDF
  15645. + MV2`-9PSGAT'L``#1QR#=(-UP`&`(<!8I0```</],WRB`3G4@+P`$(&\`")[\
  15646. + M`!`O2``(0J\`#$'O``A#UV&62H!G"#!\__\@"&`"(!?>_``03G4``````^^#
  15647. + M```#0&-H:V%B;W)T`````````0```!B&```$7U]S:6=?:&%N9&QE<G,`````
  15648. + M``(```!`````,(8```)?97)R;F\```````$```!0`````````_$````#````
  15649. + M`$]05%,`!`!````#\@```^D````5("\`!$CG#P`N`"PL``!.N@``*4<``'H`
  15650. + M>`$@+```P(1G#B`L``#`A&8&(`5.N@``4H78A'`@NH!MX"`&3-\`\$YU("\`
  15651. + M!"\'(@`@+```@($N'V"P```#[X8```-?7W-I9U]M87-K```````$````3```
  15652. + M`"0````4````#(,```-`8VAK86)O<G0````````!````$(8```1?7W-I9U]P
  15653. + M96YD:6YG`````````0```!R#```$0%]S:6=?9&ES<&%T8V@```````$````N
  15654. + M`````````_$````#`````$]05%,`!`!````#\@```^D```":(&\`!"`O``@B
  15655. + M;P`,+V\`$``$64](YR$T+@`F;P`<*D@D22])`!1@`AK:2A)G!%.';O:U[P`4
  15656. + M8QH0*O__<B^P`6<0=#JP`F<*4X=O!AK!8`(:VTH39P13AV[V0A5*AU[`1`!(
  15657. + M@$C`3-\LA%A/3G4@+P`$(&\`"")O``Q93TCG)S8N`"I(+TD`($JL``!G``#^
  15658. + M(&P``"9H``Q.N@``(BL`!+*`9@``Z"!L``!(:``L0>P``")3<`!&`&$`_UA8
  15659. + M3TJ`9P``RD'L```B31`8L!EF``"\2@!F]&8``+1*AV80(&P``"`H`!AR`["!
  15660. + M9P``H"!L```@*``8<ORP@6<$68!F/B)L```B$2QL``!.KO^"+``@;```T/P`
  15661. + M+"((=/Y.KO^L*@!G$B(%0>P``"0(3J[_FB(%3J[_IB(&3J[_@F`&*6@`(```
  15662. + M(&P``"EH``0`@"EH``@`?$/H``Q%[`"$)-DDV239(&P``"EH`!@`!"EH`!P`
  15663. + M="\O`"`O*P$8($U#[```<`!.N@``4$]P`6`"<`!,WVSD6$].=2!O``0B;P`(
  15664. + M2.<`%"9)*DA.N@``($TB2W``80#^R$J`9P1P`&`,($TB2TS?*`!.^@``3-\H
  15665. + M`$YU(&\`!")O``A(YP`4)DDJ2$ZZ```@32)+<`%A`/Z02H!F<$AX`/](;```
  15666. + M+PU.N@``3^\`#$J`:@P@32)+3-\H`$[Z``!+TT*=0JL`$G`!-T``#D)K`!`G
  15667. + M?````@``,C=```Q"JP`V0>P``")(2AEF_%.)D\@G20`60IT@/`\,/P`G0``B
  15668. + M)T``&B=``"HJ_```H?]P`$S?*`!.=0```_@````(`````0```7X```%P```!
  15669. + M:@```5H```%2```!3````4(```$H`````````^^&```#7VQA<W1?9&ER````
  15670. + M`````P```0(```"2````BH,```)`7V=E=%]C9`````$```":A@```U]L87-T
  15671. + M7V5N=')Y``````8```%D```!1@```1(```#P````X````*B&```#7U]T96UP
  15672. + M7V9N86UE````!````C8```'V````Q@```+"&```"7T1/4T)A<V4````!```!
  15673. + M"(,```-`7VQF:6)S=&%T```````!```!A(,```-`8VAK86)O<G0````````"
  15674. + M```!X````:B#```#0%]F:6)S=&%T`````````@```A````'&@P```U]R96%D
  15675. + M;&EN:P````````$```'\`````````_$````#`````$]05%,`!`!````#\@``
  15676. + M`^L```!!```#\@```^D```#0(&\`!%E/2.<`%"](``@@;P`(*F@!#&`*)E4@
  15677. + M34ZZ```J2R`-9O),WR@`6$].=2!O``2>_``02.<@-BI()FT`#$/K`0PO2``<
  15678. + M+TD`("!+8;1"K```0JL!#$*M``0@%>6`($`G:``,`1A!ZP`(+T@`&&```)Y!
  15679. + MZP`0(DA*&6;\4XF3R"`)D<C0_``L<@`R`-*(4H%T`#0!/T``%C]!`!0@`DZZ
  15680. + M```D0$J`9@9P#&```)Q-TD*>(&\`(""*+U``("SK`(@LZP"$0>L`C$/J``PB
  15681. + MV"+8(M@E:P`,`!@E:P!\`!Q+Z@`@.V\`%``$.V\`%@`&(&\`'"`H``12J``$
  15682. + M*T``"$'J`"Q#ZP`0$-EF_"JK``@J;P`<(A4D+P`8+&P``$ZN_Y1*@&8`_TXG
  15683. + M:P$,`1!"K0`$+&P``$ZN_WQR=-*!L(%F!'`!8`I.N@``*4```'``3-]L!-[\
  15684. + M`!!.=2!O``193TCG(#8O2``4<!!.N@``*D!P1^6(3KH``"9`(&\`%"`(2AAF
  15685. + M_%.(D<`@"%*`3KH``"1`3KH``"`-9P``@B`*9WP@"V=X*TL`#"M\```!'``(
  15686. + MD<@G2`$0)T@!#"=(`10FBB!O`!04V&;\3KH``"=```0B+P`4+&P``'3^3J[_
  15687. + MK"J`9R)!ZP`((@`D""QL``!.KO^:2H!G#B!-80#^.$J`9Q0@#6`^+&P``$ZN
  15688. + M_WQ.N@``*4```"!-80``-F`D<`PI0```(`UG!B!-3KH``"`*9P8@2DZZ```@
  15689. + M"V<&($M.N@``<`!,WVP$6$].=2!O``1(YP`6*D@F;0`,3KH``$*L```@2V$`
  15690. + M_:`@4TZZ```@%6<*(@`L;```3J[_IB!M``Q.N@``($U,WV@`3OH``"!O``19
  15691. + M3TCG`S0O2``4(&\`%"IH``R7RTZZ``!*K0$49R1^`"1M`0P@;P`4+"@`!&`$
  15692. + M4H<D4KZ&;`0@"F;T*TH!$$*M`10@+0$09R(F0-;\`"`I;P`4``!%[0$0(%(I
  15693. + M2```(%(DT"!O`!12J``$(`M,WRS`6$].=2!O``0O#2I(3KH``"`M``0J7TYU
  15694. + M(&\`!"`O``A(YP$4+@`J2"9M``Q.N@``<`$G0`$4*T<`!$S?*(!.=0```^^#
  15695. + M```"0&9R964````````'```"B@```H````)J```"/@```C0```(J````'H8`
  15696. + M``-?;&%S=%]D:7(````````#```"X@```EX```!2@P```D!M86QL;V,`````
  15697. + M!````8X```%V```!;````**&```"7T1/4T)A<V4````&```"=````@8```'L
  15698. + M```!U@```30```$<@P``!$!C;VYV97)T7V]S97)R```````"```"#@```4B&
  15699. + M```"7V5R<FYO```````#```"(````A(```%,@P```T!C:&MA8F]R=```````
  15700. + M``4```,N```##@```J8```):```!E(,```)`7V=E=%]C9`````$```'*A@``
  15701. + M`U]L87-T7V5N=')Y``````$```+L`````````_$````#`````$]05%,`!`!`
  15702. + M```#\@```^D````(2.<!`BQL``!R`$ZN_X(N`"(`3J[_@B`'3-]`@$YU````
  15703. + M``/OA@```E]$3U-"87-E`````0````8````````#\0````,`````3U!44P`$
  15704. + M`$````/R```#ZP````(```/R```#Z0```!L@;P`$("\`")[\`$1(YP,$+@`J
  15705. + M2'S_3KH``"!-0^\`#DZZ``!*@&8D<!#`KP`6YH!R4.6)PJ\`%NR!@H#"A[*'
  15706. + M9@1\`&`&<`TI0```(`9,WR#`WOP`1$YU(&\`!"`O``A(YP$$3-\@@&">````
  15707. + M``/O@P```T!C:&MA8F]R=`````````$````8@P```T!?9FEB<W1A=```````
  15708. + M``$````BA@```E]E<G)N;P```````0```$H````````#\0````,`````3U!4
  15709. + M4P`$`$````/R```#Z0```$$@+P`$(&\`"%E/2.<G%BX`*DA.N@``2&\`'$AX
  15710. + M"`$O!TZZ``!/[P`,4H!F!G#_8```RD*G+&P``'(")`].KO\<3^\`!"9`2H!G
  15711. + M+"(O`!PD"TZN_GI*0&<>("\`'.6`+PT@0"\H``@B0G``D<A.N@``4$]\`&!@
  15712. + M3J[_?"H`<BY&`;"!9D9\`"`O`!SE@"!`*J@`"$WM``1"GBS\```A_W`!/,`\
  15713. + MP$)>*WP```(``#)"K0`V0JT`%B`\#PP_`"M``"(K0``:*T``*F`,?/\@!4ZZ
  15714. + M```I0```(`MG#"0++&P``'("3J[_%DAO`!Q(>`@"+P=.N@``3^\`#"`&3-]H
  15715. + MY%A/3G4``````^^#```#0&-H:V%B;W)T`````````0```!2#```"7VEO8W1L
  15716. + M```````"````\@```"*&```"7T1/4T)A<V4````"````W@```#:#```#0%]L
  15717. + M9FEB<W1A=````````0```&Z#```$0&-O;G9E<G1?;W-E<G(```````$```#0
  15718. + MA@```E]E<G)N;P```````0```-0````````#\0````,`````3U!44P`$`$``
  15719. + M``/R```#Z0````X@;P`$(F\`"$CG,!8F22I(3KH``"(+)`TL;```=@%.KOY$
  15720. + M2H!G!'``8`9.N@``</],WV@,3G4``````^^#```#0&-H:V%B;W)T````````
  15721. + M`0```!*&```"7T1/4T)A<V4````!````&H,```)`7W-E=&5R<@````$````L
  15722. + M`````````_$````#`````$]05%,`!`!````#\@```^D````^(&\`!")O``A9
  15723. + M3TCG,S8J2'X`(&P``"PH`.`O20`@2H9F($JL``!F&D'L`!@B""QL```D/```
  15724. + M`^U.KO_B+`!G`GX!2H9G-B(&0>P`(B0(0>P``"8(+&P``$ZN_IXB!B0-)B\`
  15725. + M($ZN_IXB!G0*3J[^R$J'9U@B!DZN_]Q@4"!L```F:`"X,'S__[?(9T!#[``H
  15726. + M<"4L>``$3J[]V"1`2H!G+"EL````#"E-`!`O"B!++$I#[``$E<HF;P`D3J[]
  15727. + MM$S?!``B2BQX``1.KOYB3-]LS%A/3G4@;P`$0^\`"&$`_RI.=2!O``1#[P`(
  15728. + M80#_''`43KH``$YU``````/X````!@````$```"R````J````*0```".````
  15729. + M2@```"H````````#[X8```%?7W5S`````@```'X````4A@```U]?5T)E;F-H
  15730. + M37-G``````$````DA@```E]$3U-"87-E`````@```%8````PA@``!%]?4')O
  15731. + M9W)A;4YA;64````````"````H@```%"#```"0&5X:70````````!````\@``
  15732. + M``````/Q`````P````!/4%13``0`0````_(```/J````#T]K```````4````
  15733. + M`````````````````&-O;G-O;&4Z```E<SH@``!I;G1U:71I;VXN;&EB<F%R
  15734. + M>0```````^P````!`````0```!0````````#\@```^D````'2.<@`B(O``Q!
  15735. + M[P`0)`@L;```3J[_'$S?0`1.=0```^^&```"7T1/4T)A<V4````!````$```
  15736. + M``````/Q`````P````!/4%13``0`0````_(```/I````#R!O``0O#2I(*JP`
  15737. + M`$'M``0J7T[Z```@;P`$("\`"$CG`00N`"I((!5.N@``0>T`!"`'3-\@@$[Z
  15738. + M`````````^^&```#7U]S:6=?;6%S:P```````0````J#```"0%]S971J;7``
  15739. + M```!````%(,```-`<VEG<V5T;6%S:P`````!````*H,```-`7VQO;F=J;7``
  15740. + M```````!````.`````````/Q`````P````!/4%13``0`0````_(```/I````
  15741. + M!R!O``0@+P`(+P`O+```+PA.N@``3^\`#'``3G4```/OA@``!%]?<WES=&5M
  15742. + M7VYA;64````````!````#(,```)?<W1R;F-P>0````$````2`````````_$`
  15743. + M```#`````$]05%,`!`!````#\@```^D````I(&\`!)[\`%1(YS@6*D@@#6<D
  15744. + M2A5G("!-2AAF_%.(D<TB""!-<`).N@``0>P``'`"(@!.N@``("P``&\2L*P`
  15745. + M`&X,Y8!![```)G`(`&`L4H!F)"(L``!![P`;)@@L;```=`!X44ZN_BQ*0&<$
  15746. + M)D-@"D?L``1@!$?L``@@2TH89OQ3B)'+(@@@2W`"3KH``$'L`!QP`G(!3KH`
  15747. + M`$S?:!S>_`!43G4```/X````!`````$```"0````>````'(````L````````
  15748. + M`^^#```"0'=R:71E```````$````F````(P````T````*(8```)?97)R;F\`
  15749. + M``````$````XA@```U]S>7-?;F5R<@````````$````^A@```U]S>7-?97)R
  15750. + M;&ES=`````$```!&A@```E]?3U-%4E(``````0```%2&```"7T1/4T)A<V4`
  15751. + M```!````7@````````/Q`````P````!/4%13``0`0````_(```/J````"#H@
  15752. + M```T,@``56YK;F]W;B!E<G)O<B!C;V1E```*```````#\@```^D````````#
  15753. + M\0````,`````3U!44P`$``````/R```#Z@```,9N;R!S:6=N86P`:&%N9W5P
  15754. + M``!I;G1E<G)U<'0`<75I=```:6QL96=A;"!I;G-T<G5C=&EO;@!T<F%C92!T
  15755. + M<F%P``!A8F]R=`!E;70@:6YS=')U8W1I;VX`9FQO871I;F<@<&]I;G0@97AC
  15756. + M97!T:6]N``!K:6QL``!B=7,@97)R;W(`<V5G;65N=&%T:6]N('9I;VQA=&EO
  15757. + M;@``8F%D(&%R9W5M96YT('1O('-Y<W1E;2!C86QL`'=R:71E(&]N(&$@<&EP
  15758. + M92!W:71H(&YO(&]N92!T;R!R96%D(&ET``!A;&%R;2!C;&]C:P!S;V9T=V%R
  15759. + M92!T97)M:6YA=&EO;B!S:6=N86P@9G)O;2!K:6QL`'-T871U<R!S:6=N86P`
  15760. + M<V5N9&%B;&4@<W1O<"!S:6=N86P@;F]T(&9R;VT@='1Y`'-T;W`@<VEG;F%L
  15761. + M(&9R;VT@='1Y``!C;VYT:6YU92!A('-T;W!P960@<')O8V5S<P``8VAI;&0@
  15762. + M<W1A='5S(&AA<R!C:&%N9V5D``!B86-K9W)O=6YD(')E860@871T96UP=&5D
  15763. + M(&9R;VT@8V]N=')O;"!T='D``&)A8VMG<F]U;F0@=W)I=&4@871T96UP=&5D
  15764. + M(&9R;VT@8V]N=')O;"!T='D`:6YP=70@<F5C;W)D(&%V86EL86)L92!A="!C
  15765. + M;VYT<F]L('1T>0!E>&-E961E9"!#4%4@=&EM92!L:6UI=`!E>&-E961E9"!F
  15766. + M:6QE('-I>F4@;&EM:70``'5N:VYO=VX@<VEG;F%L``!U;FMN;W=N('-I9VYA
  15767. + M;```=VEN9&]W(&-H86YG960``'5N:VYO=VX@<VEG;F%L``!U<V5R('-I9VYA
  15768. + M;"`Q`'5S97(@<VEG;F%L(#(```````````H````2````'````"(````V````
  15769. + M0@```$@```!8````<@```'@```""````F@```+8```#>````Z@```1````$>
  15770. + M```!0````58```%R```!C````;@```'D```""@```B(```(\```"3````EP`
  15771. + M``)L```"?````HH```/L````(`````$```,4```#$````PP```,(```#!```
  15772. + M`P````+\```"^````O0```+P```"[````N@```+D```"X````MP```+8```"
  15773. + MU````M````+,```"R````L0```+````"O````K@```*T```"L````JP```*H
  15774. + M```"I````J````*<```"F`````````/R```#Z0```#H@+P`$(&\`""(O``PB
  15775. + M;P`064](YP<4+`$N`"I(+TD`%'H`)FP``&`N2H=G""`K``R^@&8@>@%P`;"K
  15776. + M`!1F%BHK``P@#6<$*JL`&"!+3KH``"`%8"HF4TJ39LX(!@``9P1P`&`:2H5F
  15777. + M"G`**4```'#_8`QP`$ZZ``!.N@``8*),WRC@6$].=2!O``0@+P`((F\`#$CG
  15778. + M`10B`'``3-\H@&``_W`@;P`$+PUP`"(`D\DJ7V``_UX@+P`$(&\`""(O``Q(
  15779. + MYP,$+`$N`"I(4H!F`GX`2H=J`D2'(`<B!B!-D\E,WR#`8`#_+``````#[X8`
  15780. + M``-?7W!R;V-E<W-E<P`````!````)(,```-`7V9R965?96YT<GD````!````
  15781. + M3H8```)?97)R;F\```````$```!L@P``!$!?=V%I=%]S:6=N86QS```````!
  15782. + M````=H,```1`7VAA;F1L95]S:6=N86QS`````0```'H````````#\0````,`
  15783. + M````3U!44P`$`$````/R```#Z0```!(@+P`$44](YP,`+@!.N@``(`=.N@``
  15784. + M2H!G(B)`(&D`'"](``P@:0`$<`$B;P`,3I$L`"`'3KH``"`&8`)P_TS?`,!0
  15785. + M3TYU``````/O@P```T!C:&MA8F]R=`````````$````.@P```T!?9FEN9%]F
  15786. + M9`````````$````4@P```T!?9G)E95]F9`````````$````V`````````_$`
  15787. + M```#`````$]05%,`!``````#\@```^D````#(&\`!"`O``A.^@`````#[X,`
  15788. + M``)`<W1R<F-H<@````$````*`````````_$````#`````$]05%,`!``````#
  15789. + M\@```^D````#(&\`!"`O``A.^@`````#[X,```)`<W1R8VAR``````$````*
  15790. + M`````````_$````#`````$]05%,`!``````#\@```^D```!-2.<`!G`(<@`L
  15791. + M>``$3J[_.BI`2H!F!'``8"Y"K0`$2'@`*'``+P!![```<@&3R<%!3KH``%!/
  15792. + M*H!F#")-<`A.KO\N<`!@`B`-3-]@`$YU(&\`!$CG``8J2"`-9Q@@36$``!X@
  15793. + M54ZZ```B37`(+'@`!$ZN_RY,WV``3G4@;P`$2.<`!BI(2JT`!&<4(E4L>``$
  15794. + M3J[^(")53J[^)D*M``1,WV``3G4@;P`$(%`B:``.<``0*0`/<@'AH2`!3G4@
  15795. + M;P`$("\`""(O``Q(YP,&+`$N`"I(8:I*AV8$2H9G'B)5(T<`("-&`"0S?``)
  15796. + M`!PL>``$3J[^,G`!*T``!$S?8,!.=2!O``1(YP`&*DA*K0`$9QPB52QX``1.
  15797. + MKOXL2D!G#B)53J[^)D*M``1P`6`"<`!,WV``3G4```/X`````0````$````H
  15798. + M`````````^^#```$0%]D979I8V5?;W!E;@````````$````R@P``!$!?9&5V
  15799. + M:6-E7V-L;W-E```````!````9@````````/Q`````P````!/4%13``0`0```
  15800. + M`_(```/J````!'1I;65R+F1E=FEC90````````/R```#Z0```!XO#B`L```B
  15801. + M`$A!0D'2@"`L``"S@"E```1"K``(0^P`!'``+'@`!$ZN_=@I0```</].KOZV
  15802. + M2(!(P"E```!*K```9PA*@&L$<`%@`G``*4``#"Q?3G4O#B`L``!K""QX``1.
  15803. + MKOZP("P``&<*(D`L>``$3J[^8BQ?3G4```/X`````P````$```!8````.@``
  15804. + M`!X````&`````@```&8```!.````/@```"P````:````%@````````/OA@``
  15805. + M!%]?<W1A<G1U<%]T:6UE```````!````!(8```%?7W5S`````0```!``````
  15806. + M```#\0````,`````3U!44P`$`$````/R```#Z@````7_____9FEF;RYL:6)R
  15807. + M87)Y`````````_(```/K````!````_(```/I````%B`O``113TCG`P`N`$ZZ
  15808. + M```@!TZZ``!*@&<H(D`@:0`<<D#EB<*1+T@`#"`!(&D`!")O``Q.D2P`(`=.
  15809. + MN@``(`9@`G#_3-\`P%!/3G4@+P`$+P<N'V"N``````/O@P```T!C:&MA8F]R
  15810. + M=`````````$````.@P```T!?9FEN9%]F9`````````$````4@P```T!?9G)E
  15811. + M95]F9`````````$````\`````````_$````#`````$]05%,`!``````#\@``
  15812. + M`^D```!B(&\`!"`O``@B;P`,+V\`$``$+V\`%``(+V\`&``,+V\`'``0+V\`
  15813. + M(``4+V\`)``844](YP<4+@!([P,``!1\`"IL``!@%DJM``1F"C!\``$K2``$
  15814. + M8`Q2AMK\`"2\K``$;>0@+``$O(!F>'(*TZP`!"`L``0B`.>!TH#E@2`!3KH`
  15815. + M`"I`2H!F#'`,*4```'#_8```CG#VT*P`!"(`YX'2@.6!(&P``")-8`(2V%.!
  15816. + M9/H@+```9P8@0$ZZ```I30``>O;:K``$(`7G@-"%Y8#;P)?+*TL`!%*%VOP`
  15817. + M)+JL``1M\"`&YX#0AN6`(&P``"&O`!0(!"&'"``AKP`8"`A+[P`@(9T(#"&=
  15818. + M"!`AG0@42^\`+"&="!@AG0@<(9T(("`&3-\HX%!/3G4@+P`$(@!K%K*L``1L
  15819. + M$"`!YX#0@>6`(&P``$*P"`1.=2`O``1(YP$$+@!K'KZL``1L&"`'YX#0A^6`
  15820. + M*FP``-O`2JT`!&<$(`U@"'`)*4```'``3-\@@$YU("P`!$YU``````/X````
  15821. + M$0````$```&"```!9````58```%````!,@```.P```#>````Q````+X```"R
  15822. + M````I````)@```!R````;@```&0```!>````0@````````/O@P```D!M86QL
  15823. + M;V,``````0```("&```"7V5R<FYO```````"```!=@```(R#```"0&9R964`
  15824. + M```````!````N@````````/Q`````P````!/4%13``0`0````_(```/K````
  15825. + M`@```_(```/I````&B!O``0B;P`(GOP`#$CG(18F22I(3KH``"`+9P8N*P`$
  15826. + M8`B1R$ZZ```N`'#_OH!F!'``8"@@!T'O`!1.N@``(@U![P`4)`@L;```3J[^
  15827. + M=$J`9P1P`&`&3KH``'#_3-]HA-[\``Q.=0`````#[X,```-`8VAK86)O<G0`
  15828. + M```````!````%H,```)`=&EM90````````$````F@P```T!?9VUT,F%M:6=A
  15829. + M``````$````\A@```E]$3U-"87-E`````0```$B#```"0%]S971E<G(````!
  15830. + M````6`````````/Q`````P````!/4%13``0`0````_(```/I````!R!O``0B
  15831. + M;P`(("\`#"\+)DDB2"!+)E].^@````````/O@P```D!M96UM;W9E`````0``
  15832. + M`!@````````#\0````,`````3U!44P`$``````/R```#Z0```%(@;P`$(F\`
  15833. + M"%%/2.<!%"9)*DA.N@``0>\`#$ZZ```@#6<(0>\`#"K8*M@@"V<``-)![P`,
  15834. + M3KH``"!`("@`)$2`<CQ.N@``)H!^`"!L``1#[```$!BP&68,2@!F]F8&?@1@
  15835. + M``":(&P`!$/L``@0&+`99@Q*`&;V9@9^`V```(`@;``$0^P`$!`8L!EF"DH`
  15836. + M9O9F!'X%8&8@;``$0^P`&!`8L!EF!DH`9O9G4"!L``1#[``<$!BP&68&2@!F
  15837. + M]F<\(&P`!$/L`"`0&+`99@9*`&;V9R@@;``$0^P`)!`8L!EF!DH`9O9G%"!L
  15838. + M``1#[``H$!BP&68(2@!F]F8"?@$G1P`$<`!,WRB`4$].=2!O``2>_``0+PTJ
  15839. + M2$'O``Q#[P`$80#^Z"JO``P@+P`00^T`!#+`("\`!#+`("P``#+`<``J7][\
  15840. + M`!!.=0`````#^`````@````!````[````-@```#$````L````)P```"$````
  15841. + M:@```%`````````#[X,```-`8VAK86)O<G0````````!````%(,```-`7V=E
  15842. + M='1I;64````````!````'(,```-`;&]C86QT:6UE```````!````-H,```)?
  15843. + M7T-81#,S``````$```!$A@```E]T>FYA;64`````"````.@```#4````P```
  15844. + M`*P```"8````@````&8```!,A@```U]D87EL:6=H=`````````$```$X````
  15845. + M`````_$````#`````$]05%,`!`!````#\@```^H````,3454($135`!7150@
  15846. + M1%-4`$5%5"!$4U0`1414`$-$5`!-1%0`4$14`$%+1%0````````#\@```^D`
  15847. + M```P(&\`!$CG``8J2"QL``!.KO^^!I4/##\`<`!,WV``3G4@+P`$(&\`"%E/
  15848. + M!(`/##\`(CP``5&`+H!.N@``((`@%R(\``%1@$ZZ```@`2Z!<CQ.N@``(4``
  15849. + M!"`7<CQ.N@``(`'E@)"!YX#0@="`(4``"%A/3G4@;P`$64](YR`$2]`@'2(`
  15850. + MZ8&2@"`!YX#0@2(`Y8'2@.^!(!TD`.F"E(#E@B`=+T$`"'(R3KH``-""T*\`
  15851. + M"`:`#PP_`$S?(`183TYU```#[X8```-?5&EM97)"87-E```````!````#(,`
  15852. + M``)?7T-81#,S``````4```"J````7@```%(```!(````.@````````/Q````
  15853. + M`P````!/4%13``0`0````_(```/I````"R`O``193RZ`0>P`!"`(6$].=2!O
  15854. + M``193RZ(0>P`!"`(6$].=2`L``1.=0`````#^`````,````!````)@```!P`
  15855. + M```*`````````_$````#`````$]05%,`!`!````#\@```^H````)````````
  15856. + M``````````$````````````"```````````````````#[`````(````!````
  15857. + M%`````@````````#\@```^D````J(&\`!")O``@@+P`,64](YS\V+@`J2"])
  15858. + M`"B7RTZZ```B#20++&P``$ZN_7XF0"("3J[]>"`+9@9.N@``8%XD;P`H0A(J
  15859. + M!U*%(A,D*P`$)@TH"BQL``!.KOY*2H!G&"(+3J[]>$H29@1P`F`L+P1.N@``
  15860. + M6$]@*$ZN_WPL`'(R1@&P@68(""L``0`+9I0B"TZN_7@@!DZZ```I0```</],
  15861. + MWVS\6$].=0`````#[X,```-`8VAK86)O<G0````````!````'H8```)?1$]3
  15862. + M0F%S90````(```!4````)H,```)`7W-E=&5R<@````$````Z@P```E]S=')L
  15863. + M96X``````0```'"#```$0&-O;G9E<G1?;W-E<G(```````$```"6A@```E]E
  15864. + M<G)N;P```````0```)H````````#\0````,`````3U!44P`$`$````/R```#
  15865. + MZ0```"Q93TJL`!)F#$'O``,I2``28>Y@%D'O``,B;``2L\AD!'`!8`)P_RE`
  15866. + M``!83TYU64](YP$4+B\`%$JL``!F`F'`*FP`%F`N("P``&\,0>\`#R)M``2S
  15867. + MR&(02H!J'$'O``\B;0`$L\AD$"95+PU.N@``6$\J2R`-9LXI30`62H=F!'``
  15868. + M8")0AR\'3KH``"!`(*P`%D/O`!,A20`$0^@`"%A/*4``%B`)3-\H@%A/3G4`
  15869. + M`````_@````'`````0```*(```"0````>@```$(````:````#@````0````#
  15870. + M`````@```$@````Z````*`````````/O@P```E]F<F5E`````````0```&Z#
  15871. + M```"7VUA;&QO8P`````!````B@````````/Q`````P````!/4%13``0`0```
  15872. + M`_(```/J````!T`H(REA;&QO8V$N8PDQ+C$```````````````````/R```#
  15873. + MZP````$```/R```#Z0```#8@;P`$64](YR,"(@@L;```=/Y.KO^L+T``$&<Z
  15874. + M+BP``$ZZ```L`&`>2&\`$$AX"`4O!DZZ``!/[P`,2H!F""E'``!P`&`24X9L
  15875. + MWB(O`!`L;```3J[_IG#_3-]`Q%A/3G4@;P`$2.<A!BI(3KH``"(-+&P``$ZN
  15876. + M_[A*@&<$<`!@4$ZN_WPN`')OTH&P@68@(@UT`$ZN_T9*@&<.(@U.KO^X2H!G
  15877. + M!"`"8"A.KO]\+@!P9="`OH!F#B!-80#_2DJ`9@1P`&`,(`=.N@``*4```'#_
  15878. + M3-]@A$YU``````/OA@```E]$3U-"87-E`````P```'(```!0````#H8```)?
  15879. + M97)R;F\```````,```#,````0````!Z#```#0%]L87-T7V9D`````````0``
  15880. + M`"*#```"7VEO8W1L```````!````-(,```-`8VAK86)O<G0````````!````
  15881. + M;(,```1`8V]N=F5R=%]O<V5R<@```````0```,@````````#\0````,`````
  15882. + M3U!44P`$`$````/R```#Z0```AI(YP`&<"(B/``!``$L>``$3J[_.BI`2H!F
  15883. + M!'``8"`;?``$``A-[0`.0AX@+```',`L[```0>T`%$ZZ```@#4S?8`!.=2!O
  15884. + M``0O#B)(<"(L>``$3J[_+BQ?3G4@;P`$2.<`!BI(("T`(&<*+&P``'(`3J[_
  15885. + MW"`M`"1G#"QL``!R0.&)3J[_W"`M`#1G!B!`3KH``"`M`#AG!B!`3KH``"!M
  15886. + M`#QAI"!-3-]@`$[Z``!(YP(&+`$J2$J`9Q0@+0`@(BT`-"QL```P?``!3J[_
  15887. + MRDJ&9Q0@+0`D(BT`."QL```P?``"3J[_RG`!(BP``..@3-]@0$YU2.<#-B9)
  15888. + M*D@N$R!O`!PL$&`4(&T`-+'*9@1^`&`(M>T`.&8"?``@;0`\+'@`!$ZN_HPD
  15889. + M0$J`9MI*AV<60I,@+0`@(BT`-"QL```P?``#3J[_RDJ&9U(@;P`<0I`@+0`D
  15890. + M(BT`."QL```P?``#3J[_RF`V<`$B+```XZ`L>``$3J[^PB!M`#PL>``$3J[^
  15891. + MC"1`2H!GWB!M`#2QRF8$?@!@"+7M`#AF`GP`2H=FUDJ&9M)P`2(L``#CH"(`
  15892. + M<``L>``$3J[^SDS?;,!.=5E/2.<#%BX`)DDJ2&```(9"K0`L""T``@`S9PQP
  15893. + M(RE```!P_V```*PL;```<@%.KO\Z("T`("(M`#0L;```,'P``4ZN_\H@;0`\
  15894. + M<``0*``/<@'AH2`!3KH``"P`("T`("(M`#0P?``#3J[_RF`0<`$B+```XZ`L
  15895. + M>``$3J[^PB!M`#PL>``$3J[^C$J`9^`@!DZZ```@+0`@0>\`%"(((&T`+"QL
  15896. + M``!.KO_6+`!G`/]B(`92@&8"?`"\AV,"+`<@!B!O`!1@`A;84X!D^B`&*T``
  15897. + M+$S?:,!83TYUGOP`2$CG#Q8N`"I()DDO20`<2H=F``"*("T`)"QL``!R0.&)
  15898. + M3J[_W"!-0^\`(!+89OQ![P`@0^P``$ZZ```@34/O`$(2V&;\0>\`0D/L``1.
  15899. + MN@``""T````S9P@(+0`/`#)G!D'O`"!@!$'O`$(@"')`Z8D@?```C@!.KO_B
  15900. + M*T``)&<``.PL;```3J[_Q$J`:@)2@.*`*T``*'``8```X$JM`"1G``#*+"T`
  15901. + M*'H`8```M+R'8P``CBP'8```B`@M``(`,V<02H5G!B`%8```L'`C8```I"`M
  15902. + M`"0B+0`X+&P``#!\``).KO_*(&T`/'``$"@`#W(!X:$@`4ZZ```H`"`M`"0B
  15903. + M+0`X,'P``TZN_\I@$'`!(BP``..@+'@`!$ZN_L(@;0`\+'@`!$ZN_HQ*@&?@
  15904. + M(`1.N@``2H!G"$J%9P0@!6`Z("T`)"(+($8L;```3J[_T"@`9P#_9DJ$:Q+:
  15905. + MA)Z$U\1P`+Z`8@#_2"`%8`YP#4ZZ``!P("E```!P_TS?:/#>_`!(3G6>_``,
  15906. + M2-<!`W`=*4```'#_WOP`#$YU64\N@&$`_")P`%A/3G6>_``L2.<@%B9)*DA*
  15907. + M@&<2!(````@!9R)3@&<``)Q@``"J2I-G"`CM``(`,V`&"*T``@`S<`!@``":
  15908. + M<`/`K0`P5X!F*`@M``\`,F<&0>P`&&`$0>P`&B\(+PU(;``(2&\`'$ZZ``!/
  15909. + M[P`08"H(+0```#-G$"\-2&P`'$AO`!A.N@``8`XO#4AL`"9(;P`83KH``$_O
  15910. + M``Q![P`0(@@L;```)#P```/M3J[_XB:`9P1P`&`@3KH``&`8(!-G"B(`+&P`
  15911. + M`$ZN_]QP`&`(<!8I0```</],WV@$WOP`+$YU(&\`!"`O``@B+P`,+V\`$``$
  15912. + MGOP`3$CG#S8J+P!P+`$N`$*O`&B;S9?++T@`('!`3KH``"1`2H!G``&@80#Z
  15913. + MHB]``&AG``&4<!1.N@``*D!*@&<``89P%$ZZ```F0$J`9P`!>'`%&T``""!O
  15914. + M`&@K2``.<A0[00`2%T``""=(``XW00`2)4@`/"5-`#0E2P`XD<@E2``D)4@`
  15915. + M("5(`#!*AV<&".H````S2H9G!@CJ``$`,TAZ_G!(>OY>2'K^1$AZ_+A(>OO:
  15916. + M2'K[#"`J`#`@2D/Z^KQ.N@``3^\`&"@`9P``\$J%9P8(Z@`/`#(@;P`@(DH2
  15917. + MV&;\($I#[P`D$MAF_$'O`"1#[``T3KH``"!*0^\`1A+89OQ![P!&0^P`.$ZZ
  15918. + M``!*AV<H2H9G!$J%9@9![P`D8`1![P!&(`@L;```<D#IB3!\#0!.KO_B)4``
  15919. + M($J&9RI*AV<$2H5G!D'O`"1@!$'O`$8@""QL``!R0.F)('P``(X`3J[_XB5`
  15920. + M`"1*J@`@9@1*AV8J("H`)&8$2H9F($J`9Q0L;```3J[_Q$J`:@)2@.*`)4``
  15921. + M*$*J`"P@!&!8("H`(&<*+&P``'(`3J[_W"`J`"1G"BQL``!R`$ZN_]Q*A&L&
  15922. + M(`1.N@``(`UG!B!-3KH``"`+9P8@2TZZ```J;P!H(`UG!B!-80#Y+B`*9P8@
  15923. + M2DZZ``!P_TS?;/#>_`!,3G4@;P`$GOP`("\-*DA.N@``2JP``&8(<`8I0```
  15924. + M8&@@+```4JP``"(L``#2@"\!2&P`/$AO``Q.N@``<``N@$'O`!!R`<%!80#]
  15925. + MN$_O``PJ@<<``O`$'O``AR`6$`_:)83RM```1K!'``8!P@%4ZZ``!*@&<*
  15926. + M($`@:``$80#XKB`53KH``'#_*E_>_``@3G4@+P`$(B\`""]O``P`!"!O`!">
  15927. + M_``H+PTJ2$CO``,`!$ZZ``!*K```9@AP!BE```!@:"`L``!2K```(BP``-*`
  15928. + M+P%(;`!(2&\`%$ZZ``!P`2Z`(@!![P`8P4%A`/T43^\`#"J`:S1"IT'O`!!P
  15929. + M`2(`80#\_EA/*T``!&L$<`!@'"`53KH``$J`9PH@0"!H``1A`/@*(!5.N@``
  15930. + M</\J7][\`"A.=0`````#^`````L````!```(!@``!V(```8\```&)@``!,P`
  15931. + M``2\```$H```!)@```22```"Y@```M`````````#[X8```-?7V9I9F]?<VEG
  15932. + M```````&```#K@```C````&H```!:@```.H````LA@```5]?=7,````!````
  15933. + M,H,```)`3F5W3&ES=`````$````ZA@```U]?1FEF;T)A<V4``````!$```;H
  15934. + M```&V```!K8```:(```&7````^8```-X```#(````K8```)B```!^@```5H`
  15935. + M``$\````W````,0```!\````;(,```)`9G)E90````````8```<D```'#```
  15936. + M!P(```"L````G````)"&```"7V5R<FYO```````&```'\```!TP```42```$
  15937. + M+```!!(```'>A@```E]$3U-"87-E`````P``!00```3B```!Z(,```1`7W=A
  15938. + M:71?<VEG;F%L<P```````@```Y0```(6@P``!$!?:&%N9&QE7W-I9VYA;',`
  15939. + M```"```#S@```E"#```"0'-T<F-A=``````$```&0```!BH```+J```"U(,`
  15940. + M``1`7W-I9U]D:7-P871C:````````0``!`R#```#7U]S<')I;G1F````````
  15941. + M!0``"`X```=J```$U```!,0```2H@P```D!?<V5T97)R`````0``!/B#```"
  15942. + M0&UA;&QO8P`````#```%>@``!6P```52@P```T!?86QL;V-?9F0```````$`
  15943. + M``7V@P```T!?9G)E95]F9`````````,```A:```'M@``!OB#```#0&-H:V%B
  15944. + M;W)T`````````@``!^0```=`A@```U]?9FEF;U]O:P````````(```?H```'
  15945. + M1(8```1?7V9I9F]?;V9F<V5T````````!```!_H```?V```'5@``!U*&```#
  15946. + M7U]F:69O7V)A<V4``````@``!_X```=:@P```T!?9FEN9%]F9`````````(`
  15947. + M``A&```'H@````````/Q`````P````!/4%13``0`0````_(```/J````%5]M
  15948. + M``!?<P``9FEF;SHE<R]R=V5S2R5S`&T```!F:69O.B5S+W(`9FEF;SHE<R]M
  15949. + M=V5+``!?;0``7W,``'5X9FEF;RXE;'@``'5X9FEF;RXE;'@``````_(```/I
  15950. + M````"2`O``193RZ`0>P`%B`(6$].=2!O``193RZ(0>P`%B`(6$].=0```_@`
  15951. + M```"`````0```!P````*`````````_$````#`````$]05%,`!`!````#\@``
  15952. + M`^H````)=7-E<@````````````!W:&5E;`````````X````4```````&```#
  15953. + M[`````0````!````(````!H````6````!@````````/R```#Z0```*D@+P`$
  15954. + M64\N@"`L`0QG#B!`3KH``$J`9P1R`6`"<@`@`5A/3G4@+P`$(&P!#'(`3OH`
  15955. + M`$ZZ```I0`$,9@I(;```3KH``%A/(&P!#$ZZ``"!K```3G4@;`$,3OH```CL
  15956. + M``P``DYU("\`!`@```Q6P$0`2(!(P$YU".P`#0`"3G4@+P`$"```#5;`1`!(
  15957. + M@$C`3G5.N@``<``@;```$"@`#W(!X:&#K```3G5.^@``("\`!%E/2.<!%B]`
  15958. + M`!!^`&`N("T`%$ZZ```F0$J`9Q1*JP`49@Y^`7`!)T``%"=M`!@`&")-<!PL
  15959. + M>``$3J[_+B!L```L>``$3J[^C"I`2H!FP"`'3-]H@%A/3G4@+P`$2.</!"X`
  15960. + M<`'OH"P`<`F^@&8&<`!.N@``("P!!,"&9P:-K`$(8'HJ!D:%RZP!"$J':V9P
  15961. + M(+Z`;&`@!^>`0>P`!"IP"``P?``!N\AF+"`'58!G%%.`9Q!R#9"!9SQ9@&<X
  15962. + M48!G-&`*2&P`&$ZZ``!83W``3KH``&`@(`UG'"`'YX`H!D'L``2(L`@$B:P!
  15963. + M!"`'3I5&A,FL`00@+`$(P(9FBDS?(/!.=2`O``0O#B(L``""@'``+'@`!$ZN
  15964. + M_LXL7TYU("\`!"\.(@`@+```@($L>``$3J[^PBQ?3G4@+P`$2.<#`"X`?`!A
  15965. + M`/X02H!G"'P!<`YA`/\,(`=A`/YB2H!G"'P!<`)A`/[Z(`=A`/YJ2H!G"'P!
  15966. + M<`-A`/[H(`=A`/Z&2H!G"'P!<!1A`/[6(`9,WP#`3G4@+P`$+P<I0```<`@N
  15967. + M'V``_KQP`&$`_V!@D&#V2.<!%'X`2^P`!#9\``$JBT*M``12AU"-<""^@&WP
  15968. + M0JP!"$*L`01"K```80#]U&$`_>IA`/VB3-\H@&``_?AA`/VX8`#^"``````#
  15969. + M^`````(````!```!=````#X````7`````@```H0```*````"?````F0```'6
  15970. + M```!N@```:8```&B```!F````9````%*```!.````2X```$F````I````'H`
  15971. + M``!@````5@```%````!(````.````"H````*`````````^^#```$0%]T:6UE
  15972. + M<E]E>'!I<F5D``````$````2@P``!$!?=&EM97)?<W1A<G0````````!````
  15973. + M,(,```1`7V%L;&]C7W1I;65R`````````0```#2#```"7U]F86EL```````!
  15974. + M````0H,```-`7W1I;65R7W-I9P`````!````3(,```-`7V9R965?=&EM97(`
  15975. + M```!````6H,```1`7VEN:71?<')O8V5S<V5S`````0```)*&```$7U]C:&EL
  15976. + M9')E;E]E>&ET``````(```#N````F(,```5`7V-L96%N=7!?<')O8V5S<V5S
  15977. + M``````$```"J@P```T!?9FEN9%]P:60```````$```#$@P```D!?7V5X:70`
  15978. + M`````@```8````$B@P```U]?;65S<V%G90````````$```%XA@```E]?1E!%
  15979. + M4E(``````0```D@````````#\0````,`````3U!44P`$`$````/R```#Z@``
  15980. + M``I&86EL960@=&\@8W)E871E('1I;65R``!U<V5R(&EN=&5R<G5P=``````#
  15981. + M\@```^L```!$```#\@```^D```(=2&P`!$ZZ``!83TYU("\`!"\-3KH``"I`
  15982. + M2H!F`F'B(`TJ7TYU(&\`!"`O``@O"TZZ```F0$J`9@)AQB`+)E].=2!O``0O
  15983. + M#2I((`UF!$OL``X@34H89OQ3B)'-(`A2@$ZZ```@0$J`9@1P`&`((D@2W6;\
  15984. + M(`@J7TYU64](YP,T?@!\`"!L```F:`#08"Q**P`(9B0P/`4`P&L`#F8:4H<@
  15985. + M:P`*(`A*&&;\4XB1P"`(W(#<JP`45(8F4TJ39M`@!U*`Y8#0AF$`_THI0``8
  15986. + MY8<@0")`T\=%Z0`$+T``%&8*0>P``"E(`!A@5B!L```J:`#08$)*+0`(9CHP
  15987. + M/`4`P&T`#F8P)FT`"BXM`!0@;P`4(,HO2``48`(4VTH39OH4_``])FT`$&`"
  15988. + M%-L@!U.'2H!F]D(:*E5*E6:Z(&\`%$*03-\LP%A/3G4@;P`$("\`""\-*D@J
  15989. + M@$*M``3E@&$`_K0K0``(*E].=2!O``0B;P`(("\`#$CG(C0F22I(2H!G"B!+
  15990. + M80#^PB1`8`(D2R`*9SXB%20M``2T@6TB+`'<AG00TH*\@6T"(@8J@2`!Y8`@
  15991. + M;0`(3KH``"M```AG$D?M``0B$U*;Y8$@6R&*&`!P`4S?+$1.=2!O``0B;P`(
  15992. + M("\`#&&22H!F!&$`_AI.=2!O``0B;P`(2.<`%"9)*D@@+0`$T*L`!+"5;Q+0
  15993. + M@"J`Y8`@;0`(80#^&BM```@B+0`$Y8$@;0`(T<$@*P`$(@#E@2)K``A@`A#9
  15994. + M4X%D^M&M``0@:P`(3-\H`$[Z```@;P`$(F\`""]O``P`!"`O`!`B+P`464](
  15995. + MYP(T+`$J221(+T@`$$J`9T13@&<*4X!G``"V8```]%.&9R(@+P`8(@V0@2!O
  15996. + M`!!",`@`($$B;P`08`(2V%.`9/I@``#.0>P`$")O`!`2V&;\8```OB9O`!A@
  15997. + M;G!<L!5F9DHM``%G8%2-<`&\@&8&%/P`86!4(`95@&9&$"W__TB`2,!R(Y"!
  15998. + M9RY5@&<J58!G)E.`9R)3@&<>4X!G&G(5D(%G%'(<D(%G#E6`9PIR'Y"!9P15
  15999. + M@&8$%/P`)Q3M__]@"!3M__]@`A3=N\MECF!`)F\`&&`V<"JP%68N2BT``6<H
  16000. + M5(T0+?__2(!(P')ED(%G#'()D(%F#!3\``I@#A3\`!M@"!3M__]@`A3=N\ME
  16001. + MQD(23-\L0%A/3G6>_`$L2.<_-BIO`5@@;```#&@`)0`49`I(>``43KH``%A/
  16002. + M0JP`''`!*4``&"E``#YP`BE``#HI0`!@*7P```"$`%R3R2QX``1.KO[:*4``
  16003. + M`$ZZ```I0``$9@I(;``23KH``%A/(&P`!$ZZ```I0``(+&P`!"!6+&@`%"E.
  16004. + M`!1![P$P3J[_OBEO`3``#$ZZ``!.N@``(&P``"`H`*QG$.6`(D`B*0`TY8$I
  16005. + M00`08`8I:`"$`!!*%68``.A![``J(@@L;```)#P```/N3J[_XBP`0>P`,"((
  16006. + M3J[_XBX`0>P`-B((3J[_XBH`2H9G"$J'9P1*A68B2H9G!B(&3J[_W$J'9P8B
  16007. + M!TZN_]Q*A6<&(@5.KO_<80#[<G`!+P`O!2\`+P<B!L%!3KH``"!L```@*``<
  16008. + M0>\!6&$`_)Y/[P`0?`!^`&!0(FP``"!I`"0@,'@`9SXB`$/O`#`D"2QL``!V
  16009. + M0.6+3J[^;DJ`9R8B;```(&D`)-''("@`!&<((@(D`$ZN_(Y![P%(0^\`,'`!
  16010. + M80#\V%*&4(<@;```O*@`'&VF8``"S"QL``!.KO_**`!.KO_$*@!^`"!L```L
  16011. + M*`#@9BA^`4'L`#PB""0\```#[4ZN_^(L`&820>P`/B((3J[_XBP`9@1A`/JD
  16012. + M+P<O!G``+P`O!2($P4%.N@``0>\!6'`!80#[UB`\```%&F$`^HX@0#%\!```
  16013. + M$B]``#QP0.6(80#Z>D_O`!!^0.6/+T`!.&`"4HT0%4B`2,!![``!"#```P@`
  16014. + M9NP0%6<``A9R(K`!9C!2C29-8!!P*K`59@A*+0`!9P)2C5*-$!5G!G(BL`%F
  16015. + MYB1-$!5R(K`!9@)2C7P"8%1P)[`59B!2C29-8`)2C1`59P9R)[`!9O0D37`G
  16016. + ML!5F`E*-?`%@+B9-8!!P7+`59@A*+0`!9P)2C5*-$!5G$G(@L`%G#'(*L`%G
  16017. + M!G()L`%FVB1-?``@2RH*FHL@!5*`+T@`*&$`^;8F0$JO`4QF("`%($LB;P`H
  16018. + M3KH``$(S6`!![P%((DMP`&$`^V!@`/\FVH5R$-J!NH=O%"!O`3A.N@``(`5A
  16019. + M`/EV+@4O0`$X+PH@!B!+(F\`+'(!80#[KEA/(@LD+P$X)@<L;```3J[\N"H`
  16020. + M;!!"$B\O`"A(;`!$3KH``%!/2H5F(B\*(`8@2R)O`"QR`&$`^W1![P%,(DMP
  16021. + M`&$`^NA83V``_JQZ`2!O`"Q"J``(0B@`$4(H`!`O"B`&($LB;P`L<@)A`/M`
  16022. + M0>\!0'`080#Z)EA/(@LD+P`L+&P``$ZN_,HH`&8\8"IZ`")O`"S2_`$80>\!
  16023. + M/'`!80#Z($J`9@1X9V`2(B\`+"QL``!.KOS$*`!*A&?2(B\`+"QL``!.KOR^
  16024. + M<'30@+B`9PI(;`!83KH``%A/2H5G(B\*(`8@2R)O`"QR`&$`^L!![P%,(DMP
  16025. + M`&$`^C183V``_?@@+P%`(&\!1$ZZ``!![P%(0^\!/&$`^BH@2TZZ``!@`/W6
  16026. + M(&\!.$ZZ```@;P`L3KH``&$`^))![`!R3KH``"E```!F"$'L`'@I2```0>P`
  16027. + M?DZZ```I0``49@8I;````!1![`"(3KH``"E``!AF"$'L`(XI2``80>P`DDZZ
  16028. + M```I0``<9@A![`"8*4@`'$'L`*!.N@``*4``'&8(0>P`JBE(`!P@+P%,(&\!
  16029. + M4")L`!A.N@``<`!.N@``3-]L_-[\`2Q.=0```_@````5`````0``"$X```A`
  16030. + M```(.```""H```@B```(%```"`````?X```'Z@``!X0```;0```%3@``!3H`
  16031. + M``18```$3```!#8```/6```"J````.````!.`````@```!(````"```(7@``
  16032. + M"%(```A(```%+@``!"P```0D```$$```!`0```/V```#[````^@```/@```#
  16033. + MT````\@```#J````Y````,H```"$`````````^^#```"7U]F86EL```````$
  16034. + M```'B```!M0```/:````!H,```)`;6%L;&]C``````(```!@````%(,```)`
  16035. + M<F5A;&QO8P````(```&R````,(,```)`9G)E90````````4```?B```'V@``
  16036. + M!\X```:4```"1H8```)?4WES0F%S90````$```.(@P```E]?6$-%6$E4````
  16037. + M`0```YB&```"7U]?:6]B```````&```#N@```[(```.N```#J````Z0```.>
  16038. + M@P``!$!?86QL;V-?=&EM97(````````!```#S(,```-`7W1I;65R7W-I9P``
  16039. + M```!```#Y(,```-`7VEN:71?9FEF;P`````!```$"(,```1`7VEN:71?<VEG
  16040. + M;F%L<P```````0``!`R&```"7T1/4T)A<V4````'```'=```!V(```<T```&
  16041. + MO@``!1P```34```$/(,```1`7VEN:71?=6YI>&EO`````````@``!6X```2@
  16042. + MA@```U]?5T)E;F-H37-G``````0```4.```$Y```!+X```2DA@```E]?7V-T
  16043. + M>7!E`````0``!;"#```"0'-T<FYC<'D````!```&;H,```)`='%S;W)T````
  16044. + M``$```>\@P```T!?7V=E=&5N=@````````4```A$```(+@``"!@```@$```'
  16045. + M[H8```-?7V%M:6=A7W5S97(````)```(/```"#(```@F```('```"!````@.
  16046. + M```("```!_P```?R@P```D!M86EN`````````0``"&*#```"0&5X:70`````
  16047. + M```!```(:`````````/Q`````P````!/4%13``0`0````_(```/J````+```
  16048. + M``!.;R!M96UO<GD```!A`$9A:6QE9"!T;R!C<F5A=&4@=&EM97(``$Y)3#H`
  16049. + M`$Y)3#H``$Y)3#H``"H`3DE,.@``26YV86QI9"!W:6QD8V%R9"`E<P!%<G)O
  16050. + M<B!E>'!A;F1I;F<@87)G=6UE;G1S`%5315(``'5S97(``%5315).04U%``!(
  16051. + M3TU%``!S.@``4TA%3$P`8FEN.G-H``!(3U-43D%-10``86UI9V$````#\@``
  16052. + M`^L````(```#\@```^D````$("\`!%E/+H!P`%A/3G4``````_$````#````
  16053. + M`$]05%,`!``````#\@```^D````^("\`!$CG`P`N`$JL``!G!"`'8&!\`"`'
  16054. + M`H````$D9P)\"`@'``=G!`!&``4(!P`$9P0(Q@`""`<``6<$",8```@'``-G
  16055. + M!`C&``$(!P``9P0(Q@`&(`=R2<"!<D"P@68$`$8`0@@'``EG!`C&``4@!@I`
  16056. + M``],WP#`3G4@+P`$2.<&`"P`2JP``&<((`8"0`__8%YZ``I&``\(!@`#9P1Z
  16057. + M2>6-(`9R!<"!6X!F!`C%``<(!@`"9P0(Q0`$"`8``&<$",4``2`&<D+`@6<$
  16058. + M",4`!@@&``%G!`C%``,(!@`&9P0(Q0``"`8`!6<$",4`"2`%3-\`8$YU````
  16059. + M``/X`````@````$```"&````#`````````/Q`````P````!/4%13``0`0```
  16060. + M`_(```/K`````0```_(```/I`````G``3G5P`$YU```#\0````,`````3U!4
  16061. + M4P`$``````/R```#Z0```!5(YP,`3KH``"X`?`!@"B\&3KH``%A/4H:\AVWR
  16062. + M3-\`P$YU("\`!"\'+@!AU$ZZ``!.N@``(&P``$ZZ```O!TZZ``!83RX?3G4@
  16063. + M+P`$+P<N'V#4``````/O@P```T!?;&%S=%]F9`````````$````&@P```E]C
  16064. + M;&]S90```````0```!*#```$0%]C;&5A;G5P7V9I9F\```````$````N@P``
  16065. + M!4!?8VQE86YU<%]S:6=N86QS`````````0```#*&```#7U]O9&1?=&EM97(`
  16066. + M`````0```#:#```#0%]F<F5E7W1I;65R`````0```#J#```"7U]80T58250`
  16067. + M```!````0`````````/Q`````P````!/4%13``0`0````_(```/I````$R`O
  16068. + M``0B+P`((&\`#%%/2.<#)"P!+@`J2$ZZ```@!TZZ``!*@&<:(D`@:0`@+T@`
  16069. + M%"`&(&D`!")-)&\`%$Z28`)P_TS?),!03TYU``````/O@P```T!C:&MA8F]R
  16070. + M=`````````$````:@P```T!?9FEN9%]F9`````````$````@`````````_$`
  16071. + M```#`````$]05%,`!``````#\@```^D```"8GOP`#$CG+S8J;P`T?@/.KP`X
  16072. + M?`$@;```)F@`N"H\```#[$ZZ``!*AV<*<`*^@&<$<@!@`G(!+T$`*'`!OH!G
  16073. + M"%6'9P1P`&`"<`$O0``L($U#[```3KH``$J`9@9X_V```51P_R!L```A0`"X
  16074. + M(@TL;```=/Y.KO^L+@`@;```(4L`N$J`9G@L;```3J[_?$ZZ```L`"`L``!R
  16075. + M+D8!L(%G!$J`9@I^`2H\```#[F`6(`95@&8,""\`"``Z9P1P`6`"<``N`$J'
  16076. + M9RQ\``@O``@`.F<<""\`#P`Z9P9X`F```-8@+P`\3KH``"@`8```R'C_8```
  16077. + MPBE&``!P_V```4)"IRQL``!R`B0/3J[_'$_O``0D0$J`9PPB!R0*3J[_FDJ`
  16078. + M9A8@"F<()`IR`DZN_Q9.N@``</]@``$(*"H`="0*<@).KO\6(@=.KO^F<%#I
  16079. + MB,"O`#@,@```!0!F#'`1*4```'#_8```VDJO`"AG!@@$``-F#$JO`"QG$@@$
  16080. + M``)G#'`-*4```'#_8```M@@O``D`.F<B(@TD/````^Y.KO_B2H!G""(`3J[_
  16081. + MW&`*3KH``'#_8```C`@O``@`.F<$(`5@!B`\```#[20`(@TL;```3J[_XBH`
  16082. + M9@A.N@``</]@8`@O``D`.F8$2H9F!"P$8`)\_WX`2J\`*&<"?@%*KP`L9P0(
  16083. + MQP`!""\``P`[9P0(QP`#+P<@!2(&3KH``%A/+@!L''#_(&P``"%``+@B!2QL
  16084. + M``!.KO_<(&P``"%+`+@@!TS?;/3>_``,3G4@;P`$+R\`#"\O``PO"&$`_:A/
  16085. + M[P`,3G4```/X`````0````$```!2`````````^^&```!7U]U<P````4```(V
  16086. + M```")````'P```!F````%H,```-`8VAK86)O<G0````````!````)(,```)`
  16087. + M<W1R:6-M<`````$```!6A@```E]$3U-"87-E````!0```BX```',```!`@``
  16088. + M`(@```!P@P``!$!C;VYV97)T7V]S97)R```````!````D(8```)?7T]315)2
  16089. + M``````$```"6@P``!4!?;6%K95]P<F]T96-T:6]N`````````0```.:&```"
  16090. + M7V5R<FYO```````#```!@@```5X```#V@P```D!?<V5T97)R`````P```=@`
  16091. + M``&L```!,(,```1`7V%L;&]C7V%M:6=A9F0``````0```A@````````#\0``
  16092. + M``,`````3U!44P`$`$````/R```#Z@````).24PZ`````````_(```/I```%
  16093. + M:"!O``1(YS@`</_`*``#<@`2`'#_P"@``G0`%`!P_\`H``%V`!8`</_`$'@`
  16094. + M&`#AA(B#X82(@N&$B($@!$S?`!Q.=4CG(S1+[`!R0>P`'$7L``PDR$'L`"`D
  16095. + MR$*L`!A"FGX`+"P`>D?L![Q@/"`K``0B`.6!($W1ZP`(0^@'ZD7L``PEB1@`
  16096. + M2H!G!G`!*4``&$J'9P9*JP`$9@@@$T2`*4``%%*'UOP`$+Z&;<!^`"PL`'9@
  16097. + M.G``(@<&@0``!=@0-1@`2,#I@"!-(@`&@0``!U+1]1@`!H````=.)#4(`.6"
  16098. + M0^@'ZD7L``PEB2@`4H>^AFW"3-\LQ$YU(&\`!")O``B>_`HH2.<[-B](`"@O
  16099. + M20`L(`AF"$WL`"0O3@`H<#H@;P`HL!!F!%*O`"@@;P`H<#I.N@``2H!F3G`*
  16100. + M(@`@;P`H(`A*&&;\4XB1P-*(4H%P0;*`909P_V```DQ![``P0^\`,1+89OQ!
  16101. + M[P`Q0^P`/$ZZ``!![P`Q(F\`*$ZZ``!![P`Q+T@`*$*G+R\`+$ZZ``!03RX`
  16102. + M4H!F!G#_8``"""`'0>\`<B(\```)VDZZ```L`"`'3KH``$J`9@9P++R`9`9P
  16103. + M_V```>!![P"*80#^."X`0>\`CF$`_BXJ;P`L*H!![P"280#^("M```1![P"6
  16104. + M80#^%"M```A![P":80#^""M```PB%6LP=#*R@FXJ)BT`"&\D>`JVA&X>*"T`
  16105. + M!&L8#(0```%R;A!*@&L,L()N"+:'9PI*AV<&</]@``%JTH'E@2`M``@D`-2"
  16106. + MU(#4@B`M``0F`.6#UH#6@M:M``S6@=:'<"S6@+R#9`9P_V```3A'[P">?``D
  16107. + M36`0($MA`/V()4``$%B+4H98BKRM``1MZGP`8"`0&R(&!H$```78&X`8`'(`
  16108. + M$@"RK0`(;09P_V```/92AKRM``1MVGP`0>T'2B1(+T@`)&!*($MA`/TZ)(!+
  16109. + MZP`%$"L`!'(`$@`E00`$9PI3@6<&</]@``"\1^T``1`5<@`2`"5!``AM"BIO
  16110. + M`"RRK0`,;P9P_V```)Q2AM3\`!"\K0`(;;!\`&`.(`8&@```!^H;FP@`4H:\
  16111. + MK0`,;>P@!@:````'ZD(U"`!\`-K\"!Y@'B!+80#\OBJ`1>L`!"!*80#\LBM`
  16112. + M``1'Z@`$4H90C2!O`"R\D&W:?``D;P`D*F\`+&`H2H=F!D*J``Q@&!`;2(!(
  16113. + MP"5```QR`;"!9PA*@&<$</]@#E*&U/P`$+RM``AMTG``3-]LW-[\"BA.=2!O
  16114. + M``193R\-*DA@`E*-$!4?0``$9R9(@$C`0>P``0@P``((`&86$"\`!'(LL`%G
  16115. + M#'(ML`%G!G(KL`%FT"`-*E]83TYU(&\`!")O``@@+P`,(B\`$%E/2.<'%"P!
  16116. + M+@`F22I((`UG$A`52(!(P$'L``$(,``""`!F!'``8$IZ`&`B$"\`%$B`2,`B
  16117. + M!>6!TH72@=*`*@%P,)J`NH9O!'``8"92C1`5'T``%&<02(!(P$'L``$(,``"
  16118. + M"`!FQKJ';`1P`&`$)H4@#4S?*.!83TYU(&\`!")O``A93TCG`!0F24/O``AP
  16119. + M`'(880#_;"I`2H!F!'``8&H@+P`((@#I@9*`(`'I@)"!Z8`F@'`ZL!5F3D'M
  16120. + M``%#[P`(<`!R.V$`_S@J0$J`9@1P`&`V("\`""(`Z8&2@.6!TY-P.K`59B!!
  16121. + M[0`!0^\`"'``<CMA`/\**D!*@&8$<`!@""`O``C1DR`-3-\H`%A/3G4@;P`$
  16122. + M(F\`"%E/2.<!%"I)+T@`#!`0<BVP`68(?@%2KP`,8#!(@$C`0>P``0@P``((
  16123. + M`&88<BL@;P`,LAA7P$0`2(!(P"](``Q*@&<$?@!@!'``8!P@;P`,(DUA`/\4
  16124. + M)D!*@&8$<`!@"$J'9P)$E2`+3-\H@%A/3G4@;P`$(F\`")[\``Q(YP`D*DDO
  16125. + M2``0<$JP$&8H0I5#Z``!0>T`!"](``P@22)O``QP`2(\```!;6$`_CPO0``0
  16126. + M8```M'!-L!!F?'`"*H!#Z``!0>T`#"](``P@22)O``QP`7(,80#^$")`2H!F
  16127. + M!G``8```P$7I``%P+K`19P9P`&```+!![0`((D@@2G`!<@5A`/WD(D!*@&8&
  16128. + M<`!@``"41>D``7`NL!%G!G``8```A$'M``0B2"!*<`!R!F$`_;@O0``08#`0
  16129. + M$$B`2,!#[``!"#$``@@`9QIP`2J`0^T`!'``(CP```%M80#]C"]``!!@!'``
  16130. + M8#P@+P`09@1P`&`R<"\@;P`0L!!F'$/H``%![0`0+T@`#"!)(F\`#&$`_=HO
  16131. + M0``08`@K?```'"``$"`O`!!,WR0`WOP`#$YU("\`!"(O``@@;P`,+V\`$``$
  16132. + MGOP`)$CG/Q0J2"H`+@$D!W8#Q(,O0``X+T$`/$J"9@P@!W)D3KH``$J!9A(@
  16133. + M!W)DY8E.N@``2H%G!'``8`)P`2P`(!5*@&<,4X!G2%.`9V9@``%^("T`!"(`
  16134. + M4X$D`=2"U($F`NF#EH(D`^F"E(/O@BX%WH(O1P!`2H9G``%4<CRP@6T``4P&
  16135. + MAP`!48`O1P!`8``!/B`M``0B`-*!TH`D`>F"E($B`NF!DH+O@=J!+T4`0&``
  16136. + M`1PH!7X`*BT`#%.%(`;0@-"&Z8!'[``^U\`O0``@8!H@&R(`TH'2@"0!Z8*4
  16137. + M@2("Z8&2@N^!V(%2A[Z%;>(N+P`\+T0`)"(M``QT`K*";@8F!U.#8`(F!R`#
  16138. + M<F1.N@``(@#2@4J`:@)6@.2`+T``+"`#+T$`,')D3KH``"`!:@)6@.2`=@G6
  16139. + MK0`,+T``-"`#+T$`*'(,3KH``%*!(`'G@)"!T("0@="`58!R"DZZ``!'[P`H
  16140. + MT)O0KP`TT)N0FU*`<@=.N@``+@%J`EZ'+"T`!)R':@)>AGH!*"T`"&`<+@9>
  16141. + MAR(M``SE@4'L`#K1[P`@OK`8`&P(+`=2A;J$;>`@!M"`T(8B`.F!DH`@`>F`
  16142. + MD('O@"(O`"32@"]!`$`@+P!`T*T`$-"O`$A,WRC\WOP`)$YU(&\`!")O``@@
  16143. + M+P`,GOP`6$CG/S8J2"Q-1^\`-";`)L@FR2].`#!*@&<<(`A*&&;\4XB1P"P(
  16144. + M(@C3KP`X<#.R@&4<?#)@&&$`^JHL`)R-+T``.'(#O(%L!G#_8``#>B]&`"P@
  16145. + M;P`X2A!F!G#_8``#:$/O`'1A`/OF+T``.&8&</]@``-4)F\`/$'L`*8B2V$`
  16146. + M][`N`&<"0I,@;P`X2A!G``*^*D@O2`!\80#Z2"(`DHTO0``X+T$`>'8#LH-L
  16147. + M!G#_8``#%"!O`#@0$&<@<BRP`6<:<CNP`6<40^\`<&$`^WXO0``X9A1P_V``
  16148. + M`NP@//__\?#0KP!T+T``<"!O`#@0$'(LL`%G"'([L`%F``%80^@``2!)0^\`
  16149. + M7&$`^[HJ0$J`9@9P_V```K!%[0`!<"RP%6<&</]@``*@($I#[P!(80#[E"]`
  16150. + M`#AF!G#_8``"BB!O`#A*$&<&</]@``)\($MP`B%```@A?````(@`!"`O`'!$
  16151. + M@$WH!THLP'`!+,!2ABS&("\`=$2`3>@'6BS`0IY"GM;\`!!%Z`78>@`L/```
  16152. + M![(@2B\O`'0O2``L(`4B!D'O`&!A`/QF+@`NKP!T(`4B!D'O`$QA`/Q46$\H
  16153. + M`$OJ``)%ZP`(OH!O&B!+((1P`2)O`"@2@"9*(4<`!"1-0BD``6`8($L@AR)O
  16154. + M`"A"$29*(40`!"1-$WP``0`!(`9R`\"!9@P@!G)D3KH``$J!9A(@!G)DY8E.
  16155. + MN@``2H%G!'``8`)P`2(`Y8%![`">(#`8`"(`TH'2@"8!Z8.6@20#Z8*4@^^"
  16156. + MVH)2A@R&```']6\`_T)@``$<(&\`.$H09P9P_V```69*AV<&</]@``%<>`!\
  16157. + M`'H`0J\`1'X`*DM@<$JM!TYG/B`O`$0B!^F!)"\`<`:!```'2B8S&`#6@B]#
  16158. + M`$1*AF<*L(-G!G#_8``!'$2"*T('2B`O`"Q2@"M`!U)\`6`F(`4B+P!T*BT'
  16159. + M2MJ!2H1G"K"%9P9P_V```.Y$@2M!!TI"K0=2>`%2A]K\`!"^JP`(;8I*AF<$
  16160. + M2H1F!G#_8```R'P`?@`J2R@O`$1@.G``(@<&@0``!=@0,Q@`2,#I@"!+T<!#
  16161. + MZ`=*+TD`0$J&9PI*J0`,9@0@!&`"(`71K0`0+"D`!%*'6(V^JP`$;<!@('``
  16162. + M<@$G00`()T``!"0O`'1$@DWK!THLPBS`+,`O0`!X*F\`/"XO`"P@!U*`*T``
  16163. + M#"PO`'AG"-"&4H`K0``,<C.P@6,$</]@,-K\!^H@!R!-(F\`,$ZZ```@3=''
  16164. + M2^@``4(02H9G$"`&($TB;P!\3KH``$(U:`!P`$S?;/S>_`!83G4@;P`$+PTJ
  16165. + M2$'L```B36$`]%!*@&<,0>P``")-<`%A`/P,*E].=2\-0>P`LDZZ```J0$J`
  16166. + M9@8J7V```%QP`2E`$\Y*%68>0JP`<D*L`'9"K`>\0JP'Q$'L``!#[`A<$MAF
  16167. + M_&`L($U#[`!R80#S]$J`9QYP.K`59Q`@34/L`')P`&$`^ZI*@&<(0>P`<F$`
  16168. + M_W8J7V``\PYP`2E`$\Y#[`!RD<AA`/.\2H!G"$'L`')A`/]48`#R[B!O``0@
  16169. + M+P`((F\`#)[\`!!(YP,4*DE([P$!`!`@;P`4+U``&$JL$\YF!&$`_T1*K`!V
  16170. + M9PH@+P`8L*P`@FP@?@!'[`!R8!!2A];\`!"^K`!Z;01^`&`R2JL'3F;J8"I^
  16171. + M`4?L`'8L+`!V8`X@+P`8L*L`$&T(4H=8B[Z&;>Y#[`!RT\=^`!XI!=?IAT'L
  16172. + M![S1QR\-+T@`("`00>\`'$/L`')A``#"(&\`("(H``0K00`@Y8%![`A<(F\`
  16173. + M(-'I``A#[``,(X@8`"M(`"A83TS?*,#>_``03G4@;P`$0^P``'``80#_*D'L
  16174. + M```@"$YU(&\`!"`O``@B;P`,2.<!%"X`)DDJ2$JL$])F#G`!*4`3TD'L"B!A
  16175. + M`/XZ+PL@!R!-0^P*(&$``$)83TJ'9P9![`"Z8`1![!(*)T@`*$S?*(!.=2!O
  16176. + M``1#[``L<`!AKD'L`"P@"$YU(&\`!"`O``@B;P`,+V\`$``$GOP`#$CG#S0N
  16177. + M`"9O`"PJ2'P`>@`H$2`$YX`O20`@T\!%Z0@>8$`O2@`D(!6PDFTV(&\`)+"0
  16178. + M9BA*A&8&("@`!&X:YX0B*``$(F\`(`:$```(&K*Q2`!N!'``8`)P`2H`+"@`
  16179. + M!&`&4X11BFRZ(!4B/``!48!.N@``*``@%2(\``%1@$ZZ``#2AY*&+`%@"`:&
  16180. + M``%1@%.$2H9K]&`(!(8``5&`4H0,A@`!48!L\"`&(CP```X03KH``"=```@@
  16181. + M!B(\```.$$ZZ```@`2]!`!QR/$ZZ```G0``$("\`''(\3KH``":!2H5G`E*3
  16182. + M(`18@'('3KH``"=!`!AL!%ZK`!@L/```![)*A&M`(`9R`\"!9@P@!G)D3KH`
  16183. + M`$J!9A(@!G)DY8E.N@``2H%G!'``8`)P`2H`(@#E@47L`)X@,A@`N(!M0%*&
  16184. + MF(!@P%.&(`9R`\"!9@P@!G)D3KH``$J!9A(@!G)DY8E.N@``2H%G!'``8`)P
  16185. + M`2H`Y8!![`">V+`(`$J$:\8$A@``!VPG1@`4)T0`'"`%T(#0A>F`1>P`/M7`
  16186. + M0JL`$&`.(BL`$.6!F+(8`%*K`!`B*P`0Y8&XLA@`;.92A"=$``Q"JP`@)T<`
  16187. + M)$S?+/#>_``,3G4@;P`$+PTJ2"`M`!@B`-*!TH!![`"^T<$@+0`0(@#2@=*`
  16188. + M0^P`T]/!(#P```=LT*T`%"\`+Q4O+0`$+RT`""\M``PO"2\(2&P`^$AL`%A.
  16189. + MN@``3^\`)$'L`%@@""I?3G4@;P`$+PUA`/TX($`J7V"4(&\`!")O``@@+P`,
  16190. + M+P<N`"`1L(=M%"('3KH``-&0(!$B!TZZ```B@6`J2H!J)E.0WY%L("`11(`B
  16191. + M!TZZ```B$)*`4X$@@2`11(`B!TZZ``">@2*'+A].=2!O``0B;P`(2.<!%"9)
  16192. + M*D@N+0`4GJL`%&8L+BT`$)ZK`!!F(BXM``R>JP`,9A@N+0`(GJL`"&8.+BT`
  16193. + M!)ZK``1F!"X5GI,@!TS?*(!.=2!O``0B;P`(("\`#"]O`!``!)[\`'!(YS\T
  16194. + M+@`J;P"8+TD`+$*5+T@`*$/O`%QP"B+84<C__"`O`%QR/K"!;`1*@&H.0>\`
  16195. + M8$/O`%QP/&$`_Q9![P!D0^\`8'`\80#_"$'O`&A#[P!D<!AA`/[Z0>\`<$/O
  16196. + M`&QP#&$`_NQ@3"`O`'!3KP!P!H````=K(@!T`\*"9@IR9$ZZ``!*@68:(#P`
  16197. + M``=LT*\`<')DY8E.N@``2H%G!'``8`)P`2(`Y8%![`">(#`8`-&O`&@@+P!H
  16198. + M;ZXL/```!VS<KP!P(`9R`\"!9@P@!G)D3KH``$J!9A(@!G)DY8E.N@``2H%G
  16199. + M!'``8`)P`20O`&SE@B8`UH/6@.F#0>P`/M'#+#`H`"`O`&BPAF\:1^\`:)V;
  16200. + M4I,,FP````QMGD*O`&Q2KP!P8)0@+P!<0J\`7'H`<@$O00"(+T``)%*%("\`
  16201. + MB-"`+T``B"`O`(AN[B`O`(AJ!'``8`1P`>N@+T``B$AO`#`O!TAO`)`@;P`X
  16202. + M3I!![P`\0^\`:&$`_BQ/[P`,*`!G+B`%4X5*@&H&</]@``$02H5J!E.O`(A@
  16203. + MQ'`!ZZ`L`$J$;P:=KP"(8+3=KP"(8*X@+P!\:P``Q"(O`%"R@&<``+I!^OGB
  16204. + M(F\`++/(9@9![`!R8`1![`H@?``F2"](`)!@``"(("L'3K"O`'QF=GH`)&\`
  16205. + MD&!D("H'3K"O`'QG5"`%Z8`B+P"((&\`D`:````'2M*P"`"2JP=*+T$`C$AO
  16206. + M`#`O!TAO`)0@;P`X3I!![P`\0^\`:&$`_6Q/[P`,2H!F$B`O`%"PKP!\9@@O
  16207. + M;P",`(A@)E*%U/P`$"!O`)"ZJ``(;9)2AM;\`!`@;P"0O*@`"&T`_W!P_V`D
  16208. + M("\`)-&O`(@O+P`H+P=(;P"0(&\`.$Z0<`$J@$_O``P@+P"(3-\L_-[\`'!.
  16209. + M=2!O``0B;P`(("\`#)[\``Q(YP<T+@`J2"])`!@,K0````$`(&\&<`$K0``@
  16210. + M2&\`'"`'($UA`/T>6$\L`$JO`!QF!B`M`"!J!B`&8```QD'Z^*XB;P`8L\AF
  16211. + M!D'L`')@!$'L"B!\`"9(+T@`(&```)8@*P=.L*T`(&8``(1Z`"1O`"!@<"`M
  16212. + M`"`B*@=.LH!G7B`%Z8`B%2!O`"`&@```!TK2L`@`DJL'2BJ!2JT`(%?`1`!(
  16213. + M@$C`*T``($AO`!P@!R!-(F\`'&$`_(Q83TJO`!QF0"`5D*H'2M"K!THJ@$JM
  16214. + M`"!7P$0`2(!(P"M``"!2A=3\`!`@;P`@NJ@`"&V&4H;6_``0(&\`(+RH``AM
  16215. + M`/]B</],WRS@WOP`#$YU(&\`!"\-0_KWVG``*E]@`/[@2JP3SF8$80#W+$YU
  16216. + M``````/X````'0````$``!*X```29@``$-@``!"T```0I```$%0``!`R```/
  16217. + M\@``#H(```X6```,^```#,H```RX```,J@``"O@```E*```(>```!Z0```%L
  16218. + M```!7````18```#F````H````(X```"`````7````%8```!0````3````"L`
  16219. + M```"```5E```%,8``!3````3D@``$XP``!#H```0W```#J(```Z:```.B```
  16220. + M#G0```YF```.8@``#EH```X\```.,@``#@H```WT```-X@``#=0```V\```-
  16221. + MN```#:0```V8```-D```#88```U\```-3```#3X```TZ```-*@``#1P```T(
  16222. + M```,_```#/0```SP```,[```#.@```S@````L````&@```!D````2```````
  16223. + M``/O@P```D!S=')C:'(``````0```3*#```"0'-T<F-A=``````"```!?```
  16224. + M`7"#```"7V]P96X````````!```!CH,```)`<F5A9`````````$```&L@P``
  16225. + M`D!C;&]S90```````0```;2&```"7U]?8W1Y<&4````%```&6@``!3X```1>
  16226. + M```$'````\J#```"7U]#6$0S,P`````<```2G```$HX``!)4```2/@``$4X`
  16227. + M`!$\```1)```$1H``!`@```0$@``#]X```_0```/K```#YH```^,```/@```
  16228. + M#W````\^```/,```"N8```K8```(4@``"#P```@F```("```!^P```<.```'
  16229. + M`(,```)`<W1R;F-P>0````(```R.```,=(,```-`7U]G971E;G8````````!
  16230. + M```,SH,```)?<W!R:6YT9@````$``!#@`````````_$````#`````$]05%,`
  16231. + M!`!````#\@```^H```!(1TU4`"`@(``@("``````!`````@``````````"`@
  16232. + M(``@("``<SIL;V-A;'1I;64`<SIZ;VYE:6YF;P``+P`````?````'````!\`
  16233. + M```>````'P```!X````?````'P```!X````?````'@```!\````?````'0``
  16234. + M`!\````>````'P```!X````?````'P```!X````?````'@```!\```%M```!
  16235. + M;G!O<VEX<G5L97,``%5.25A46@``("`@`%-U;DUO;E1U95=E9%1H=49R:5-A
  16236. + M=$IA;D9E8DUA<D%P<DUA>4IU;DIU;$%U9U-E<$]C=$YO=D1E8P`E+C-S("4N
  16237. + M,W,E,V0@)3`R+C)D.B4P,BXR9#HE,#(N,F0@)60*```````#[`````(````!
  16238. + M````$`````P````````#\@```^L```3V```#\@```^D```&<GOP`#$C7`0-P
  16239. + M_][\``Q.=5%/2-<#`%!/3G5(YS`"(A!**``-9P1P`&`<)`DF`"QL``!.KO_6
  16240. + M(@!2@&8(3KH``'#_8`(@`4S?0`Q.=5%/2.<_-BX`*DDF2"P3+T8`*"](`"Q*
  16241. + M*P`-9P9P`&```(Q**P`,9V8F3=?'>@!@6"1-8`)2BK7+9`9P"K`29O2WRF8$
  16242. + M*`I@!D'J``$H")B-(B\`*"0-)@0L;```3J[_T"P`4H!F"$ZZ``!P_V`^VH:V
  16243. + MAF8V2^H``9Z&<`!.N@``3KH``$J`9B)*AV:D8!PB!B0-)@<L;```3J[_T"H`
  16244. + M4H!F"$ZZ``!P_V`"(`5,WVS\4$].=5E/2.<_`BX`+!`O00`<2B@`#6<$<`!@
  16245. + M4E.!)@$B!B0'+&P``$ZN_[XJ`$ZN_WPH`%*%9P1*A&<.(`1.N@``*4```'#_
  16246. + M8"0B!G0`)@).KO^^+`!2@&<$2H1G#B`$3KH``"E```!P_V`"(`9,WT#\6$].
  16247. + M=9[\`0!(YS\&+@`J2"P5*BT`""`M``1G"B(`+&P``$ZN_Z88+0`-2(1(Q"!-
  16248. + M3KH``$J$9P1P`&!$(@9![P`@)`@L;```=D#EBTZN_F@H`$J'9@HB!DZN_]Q*
  16249. + M@&<:2H1G$G#_NH!G#"(")`5.KO]&2H!G!'``8`9.N@``</],WV#\WOP!`$YU
  16250. + M("\`!$CG(`(B`"QL``!T`$ZN_S1.KO]\="Y&`K""5\%$`4B!2,$@`4S?0`1.
  16251. + M=2`O``0@;P`((F\`#)[\`!!(YS<6+@`F22I(?`!AN$J`9GPB!RQL``!T`4ZN
  16252. + M_E9*@&=L(@=![```)`AV!$ZN_]!9@&92(@<D/```)Q!.KO\T2H!G0B('0>\`
  16253. + M("0(=A!.KO_6<@FP@6\N<)NP+P`@9B9![P`E(@@D"TZN_-`J`$'O`";1P"((
  16254. + M)`U.KOS04H!G!E*%9P)\`2('=`!.KOY6(`9,WVCLWOP`$$YU("\`!"(O``B>
  16255. + M_`(02.<_!BX`</\O0`(H+T$`)"('+&P``'0`=@%.KO^^+T``("('3J[_OBP`
  16256. + M3J[_?"H`+T`"+&8``,(H+P`D(@<D!';_3J[^.+""9@``KKR";```GBH$FH8H
  16257. + M!2`$<@%(02QX``1.KO\Z*D!*@&9J<@)(04ZN_RCBB"H`#(4```(`;1`@!7(!
  16258. + M2$%.KO\Z*D!*@&9&>D#GC4OO`"@P/`'_<@!![P`H$,%1R/_\8"RXA6\$(`5@
  16259. + M`B`$)@!.N@``(@<D#2QL``!.KO_0L(-G"DZN_WPO0`(L8`:8@TJ$;M!![P`H
  16260. + ML<UG#")-(`4L>``$3J[_+BHO`BQF!$*O`B@L+P`@O*\`)&P.(@<D!BQL``!V
  16261. + M_TZN_[XL+P(H9PH@!4ZZ```I0```(`9,WV#\WOP"$$YUGOP!"$CG-Q8N`"9)
  16262. + M*D@L%4HM``UF``$8(`<$@```!`!G(`2````$`&=*4X!G6%.`9UQ3@&=>4X!G
  16263. + M9E.`9VQ@``#N2BT`#&<F(`9![P$D0^\!(&$`_=9*@&<4("\!)#=```(@+P$@
  16264. + M-H!P`&```,IP&6```+XB!BQL``!.KO\H)H!P`&```+(FAG``8```JG``8```
  16265. + MI"`&(A-A`/XV8```F"M3``AP`&```(XJ$TJM``1F#B(5+&P``$ZN_HPK0``$
  16266. + M("T`!&=B)``B!2QL``!.KOY<2H!F4B(&0>\`("0(=D#EBTZN_FA*@&<^(@5.
  16267. + MKO^F(BT`!$ZN_Z8B!DZN_]PB`G0`3J[_1AM\``$`#2J"*T(`!$'O`"`B""QL
  16268. + M``!.KO^X2H!G!"`"8`Y.N@``8`9P%BE```!P_TS?:.S>_`$(3G4@+P`$(B\`
  16269. + M""]O``P`!$CG#P8J+P`<+`$N`'`.3KH``"I`2H!F"G`,*4```'#_8$Y#U2+'
  16270. + M0IDBQD(M``TB!RQL``!.KO\H&T``#$AZ_G1(>OO:2'K[9$AZ^JQ(>OIV2'KZ
  16271. + M:"`%($U#^OI03KH``$_O`!@H`&P&($U.N@``(`1,WV#P3G4@+P`$(B\`""]O
  16272. + M``P`!"]O`!``""]O`!0`#"]O`!@`$$CG#0`H+P`4*B\`$"X`<`!*@68$<$#E
  16273. + MB`!```$O`"`'<O]A`/]&6$]*@&9`<`!*A&8$<$#EB`!```(O`"`%<O]A`/\H
  16274. + M6$]3@&8B<`!*KP`<9@1P0.6(`$```B\`("\`''+_80#_!EA/58!G$$'L``8O
  16275. + M2``03-\`L$[Z``!,WP"P3G4``````_@````"`````0``!EH```)<````````
  16276. + M`^^&```"7T1/4T)A<V4````0```%B```!2(```34```$O@``!(````/D```#
  16277. + MG````O````),```"!````;0```&.```!(@```.(```"F````,(,```)`7W-E
  16278. + M=&5R<@````4```4R```!Z@```/````"T````/H,```1`7V-H96-K7W-I9VYA
  16279. + M;',``````0```,J#```$0%]H86YD;&5?<VEG;F%L<P````$```#.@P``!$!C
  16280. + M;VYV97)T7V]S97)R```````#```#]@```5X```$\A@```E]E<G)N;P``````
  16281. + M!0``!7(```4Z```#^@```6(```%`@P```D!F<F5E`````````@``!<(```&@
  16282. + M@P```T!C:&MA8F]R=`````````$```.4@P```D!M86QL;V,``````0``!6:#
  16283. + M```#0%]A;&QO8U]F9````````0``!;2#```"7U]F86EL```````!```&9@``
  16284. + M``````/Q`````P````!/4%13``0`0````_(```/J````")LP('$``$9A:6QE
  16285. + M9"!T;R!I;FET:6%L:7-E($DO3P`````#\@```^D````G(&\`!")O``A(YR$6
  16286. + M)DDJ2$ZZ```B#20++&P``$ZN_[)*@&<$<`!@;$ZN_WPN`'(T1@&P@692(@).
  16287. + MKO^X2H!G#B(-3J[_LDJ`9P1P`&!&3J[_?"X`<F_2@;"!9BPB`G0`3J[_1DJ`
  16288. + M9QHB"TZN_[A*@&<0(@TD"TZN_[)*@&<$<`!@$DZN_WPN`"`'3KH``"E```!P
  16289. + M_TS?:(1.=0`````#[X,```-`8VAK86)O<G0````````!````$H8```)?1$]3
  16290. + M0F%S90````$````:@P``!$!C;VYV97)T7V]S97)R```````!````C(8```)?
  16291. + M97)R;F\```````$```"0`````````_$````#`````$]05%,`!`!````#\@``
  16292. + M`^D````.(&\`!"`O``@B+P`,GOP`#$C7`0-P`-[\``Q.=2`O``0B+P`(+V\`
  16293. + M#``$44](UP`#<`!03TYU``````/Q`````P````!/4%13``0``````_(```/I
  16294. + M````$"!O``0B;P`(("\`#$CG`10N`"9)*DAF!'``8!P@!R!+(DUR`$J`9PX2
  16295. + M&)(99@13@&;V2(%(P2`!3-\H@$YU``````/Q`````P````!/4%13``0`````
  16296. + M`_(```/I````=2!O``0B;P`(+V\`#``$("\`$"]O`!0`"$CG!S0N`"1O`"`F
  16297. + M22I(+"L`="2O`!Q"J@`2<`$U0``.0FH`$"5\```"```R-4``#"5K`(``-B`K
  16298. + M`'QF$"(K``1O"B5\```(```68`0E0``6)5,`!$'K`(1.N@``)4``(B5``!HE
  16299. + M0``J("L`!%J`9SY5@&=068!G0%6`9F8@#6<<2'@`_TAL```O#4ZZ``!/[P`,
  16300. + M*@!O!B5%`!9@""5\```!```6)7P``*````A@2B5\```0```(8$`E?```0```
  16301. + M"'P`8#1*DV802BL`"&8*)7P``"````A@("5\``"````(8!8@*P`$;P9P0.&(
  16302. + M8`8@/```@``E0``(2H=G`GP`(`9.N@``@:H`"$S?+.!.=2!O``0B;P`(64](
  16303. + MYR,6*DA^`"])`!A"IRQL``!R`B0/3J[_'$_O``0F0$J`9U`B#73^3J[_K"X`
  16304. + M9T0B!R0+3J[_FDJ`9S@B!TZN_RY*@%?&1`9(ADC&2H!G!B(`3J[_IB`'Y8`O
  16305. + M+P`8($`O*``,(D(@!B!-80#^?%!/?`!@#GS_3J[_?$ZZ```I0```2H=G!B('
  16306. + M3J[_IB`+9P@D"W("3J[_%B`&3-]HQ%A/3G4``````_@````!`````0```)X`
  16307. + M```````#[X,```-`7V%M:6=A,F=M=``````!````<H,```-?<F5A9&QI;FL`
  16308. + M```````!````I(,```-`7VUA:V5?;6]D90`````!```!&H8```)?1$]30F%S
  16309. + M90````$```%`@P``!$!C;VYV97)T7V]S97)R```````!```!K(8```)?97)R
  16310. + M;F\```````$```&P`````````_$````#`````$]05%,`!`!````#\@```^L`
  16311. + M``!````#\@```^D````%(&\`!"`O``AR`&`"$,%3@&3Z3G4```/Q`````P``
  16312. + M``!/4%13``0``````_(```/I````#"`O``0B+P`(64\O!RX`+T$`!$ZZ``!(
  16313. + M;P`$2'@(`R\'3KH``$_O``PN'UA/3G4``````^^#```#0&-H:V%B;W)T````
  16314. + M`````0```!2#```"7VEO8W1L```````!````(@````````/Q`````P````!/
  16315. + M4%13``0``````_(```/I````#2`O``0B+P`(64\O!RX`(`%.N@``+T``!$ZZ
  16316. + M``!(;P`$2'@(!"\'3KH``$_O``PN'UA/3G4```/O@P``!4!?;6%K95]P<F]T
  16317. + M96-T:6]N`````````0```!*#```#0&-H:V%B;W)T`````````0```!J#```"
  16318. + M7VEO8W1L```````!````*`````````/Q`````P````!/4%13``0``````_(`
  16319. + M``/I````$"!O``0@+P`((B\`#)[\``Q(UP$#</\I0```WOP`#$YU(&\`!"`O
  16320. + M``@B+P`,GOP`#$C7`0-P_RE```#>_``,3G4```/OA@```E]E<G)N;P``````
  16321. + M`@```#@````8`````````_$````#`````$]05%,`!`!````#\@```^D````-
  16322. + M("\`!%E/+P<N`$ZZ``!(;P`$2'@(`"\'3KH``$_O``Q*@&<$<`!@!"`O``0N
  16323. + M'UA/3G4``````^^#```#0&-H:V%B;W)T`````````0````R#```"7VEO8W1L
  16324. + M```````!````&@````````/Q`````P````!/4%13``0``````_(```/I````
  16325. + M#R`O``1(YP8`3KH``"P`<`!.N@``8`9P`$ZZ```J`"`%3KH``$J`9^X@!DZZ
  16326. + M``!P!"E```!P_TS?`&!.=0```^^#```#0'-I9W-E=&UA<VL``````@```"P`
  16327. + M```*@P``!$!?8VAE8VM?<VEG;F%L<P`````!````$H,```1`7W=A:71?<VEG
  16328. + M;F%L<P```````0```!J#```$0%]H86YD;&5?<VEG;F%L<P````$````BA@``
  16329. + M`E]E<G)N;P```````0```#(````````#\0````,`````3U!44P`$`$````/R
  16330. + M```#Z0```"@@;P`$2.<C%BI(?@!"IRQL``!R`B0/3J[_'$_O``0F0$J`9U(B
  16331. + M#73^3J[_K"X`9T8B!R0+3J[_FDJ`9SHB*P`$7L!$`$B`2,`L`"('3J[_IG("
  16332. + M3J[_%DJ&9Q0B#4ZN_[A*@&<$<`!@,DZZ``!@*G`4*4```&`B3J[_?$ZZ```I
  16333. + M0```2H=G!B('3J[_IB`+9P@D"W("3J[_%G#_3-]HQ$YU```#[X8```)?1$]3
  16334. + M0F%S90````$````0@P```D!?<V5T97)R`````0```&J&```"7V5R<FYO````
  16335. + M```"````@````'*#```$0&-O;G9E<G1?;W-E<G(```````$```!\````````
  16336. + M`_$````#`````$]05%,`!`!````#\@```^D```&7(&\`!"`O``@B;P`,+V\`
  16337. + M$``$+P<N`"E(`!XI0``:<@&P@64>+R\`""\)80``)%!/2H!G#B!L`!Y"$"`'
  16338. + MD*P`&F`"<``N'TYU(&\`!")O``A(YP`4)DDJ2&``!/@0%7(EL`%F``3*4HT0
  16339. + M%4B`2,!*@&<``-9R)9"!9P`$M'(<D(%G``#,4X!G``$F4X!G``&`4X!G``&B
  16340. + M68!G``'L4X!G``($68!G``*:6X!G``,.4X!G``,P4X!G``-84X!G``-Z58!G
  16341. + M``.@4X!G``-&4X!G``0F4X!G``1"7X!G``"B4X!G``#\4X!G``$Z4X!G``%<
  16342. + M4X!G``%T5X!G``#D58!G``'24X!G``'N4X!G``(&4X!G``),4X!G``)H58!G
  16343. + M``)V58!G``*J4X!G``+44X!G``+T5X!G``-F4X!G``-^4X!G``.,8``#Z%.-
  16344. + M8``#XB`K`!AK!G(&L(%O!G``8``#_B(K`!CE@4'L`'8O,!@`80`$QEA/2H!F
  16345. + M``/88``#X"`K`!AK!G(&L(%O!G``8``#SB(K`!CE@4'L`!PO,!@`80`$EEA/
  16346. + M2H!F``.H8``#L"`K`!!K!G(+L(%O!G``8``#GB(K`!#E@4'L`4XO,!@`80`$
  16347. + M9EA/2H!F``-X8``#@"`K`!!K!G(+L(%O!G``8``#;B(K`!#E@4'L`,(O,!@`
  16348. + M80`$-EA/2H!F``-(8``#4$'L`7XB2V$`_CI*@&8``S1@``,\0>P!E")+80#^
  16349. + M)DJ`9@`#(&```RA![`&F(DMA`/X22H!F``,,8``#%$AX`#!(>``"+RL`#&$`
  16350. + M`WI/[P`,2H!F``+N8``"]DAX`"!(>``"+RL`#&$``UQ/[P`,2H!F``+08``"
  16351. + MV$AX`#!(>``"+RL`"&$``SY/[P`,2H!F``*R8``"NB`K``AR#$ZZ``!P#$J!
  16352. + M9P(@`4AX`#!(>``"+P!A``,03^\`#$J`9@`"A&```HP@*P`<4H!(>``P2'@`
  16353. + M`R\`80`"[D_O``Q*@&8``F)@``)J2'@`($AX``(O*P`(80`"T$_O``Q*@&8`
  16354. + M`D1@``),("L`"'(,3KH``'`,2H%G`B`!2'@`($AX``(O`&$``J)/[P`,2H!F
  16355. + M``(68``"'DAX`#!(>``"+RL`!&$``H1/[P`,2H!F``'X8``"`"`K`!!2@$AX
  16356. + M`#!(>``"+P!A``)B3^\`#$J`9@`!UF```=Y(;`&P80`"L%A/2H!F``'"8``!
  16357. + MR@RK````#``(;09![`&R8`1![`&V+PAA``**6$]*@&8``9Q@``&D0>P!NB)+
  16358. + M80#\CDJ`9@`!B&```9!![`'`(DMA`/QZ2H!F``%T8``!?$AX`#!(>``"+Q-A
  16359. + M``'D3^\`#$J`9@`!6&```6`O"V$``6183TJ`9@`!1F```4Y![`',(DMA`/PX
  16360. + M2H!F``$R8``!.DAL`=9A``(,6$]*@&8``1Y@``$F("L`'%Z`D*L`&'('3KH`
  16361. + M`$AX`#!(>``"+P!A``%^3^\`#$J`9@``\F```/H@*P`89P13@&`"<`8B*P`<
  16362. + M7H&2@"`!<@=.N@``2'@`,$AX``(O`&$``49/[P`,2H!F``"Z8```PDAX`#!(
  16363. + M>``!+RL`&&$``2A/[P`,2H!F``"<8```I$'L`=@B2V$`^XY*@&8``(A@``"0
  16364. + M(#P```=LT*L`%')D3KH``$AX`#!(>``"+P%A``#H3^\`#$J`9EQ@9B`\```'
  16365. + M;-"K`!1(>``P2'@`!"\`80``QD_O``Q*@&8Z8$0@*P`H9PPO`&$``1183TJ`
  16366. + M9B9P`&`N2JP`&E?`1`!(@$C`4ZP`&DJ`9P1P`&`6(&P`'A#5*4@`'E*-2A5F
  16367. + M`/L&("P`&DS?*`!.=2!O``2>_``L2.<!$$/O``AP"B+84<C__$'O``A.N@``
  16368. + M+@!'[``-8!H@!W(*3KH``'`PTH`6@5.+(`=R"DZZ```N`$J';PA![```M\AB
  16369. + MVDAK``%A``"`6$],WPB`WOP`+$YU("\`!"(O``@O;P`,``1(YP<$&B\`%RP!
  16370. + M+@!+[``78!P@!W(*3KH``'`PTH`:@5.-(`=R"DZZ```N`%.&2H=O#D'L``^[
  16371. + MR&+88`0:A5.-0>P`#[O(8P@@!E.&2H!N[$AM``%A```.6$],WR#@3G4@;P`$
  16372. + M+PTJ2"`L`!IG&!(=(&P`'A"!9@1P`6`*4JP`'E.L`!I@XBI?3G4```/X````
  16373. + M#P````$```2\```$)@``!!(```/0```#O````Z8```.@```#@@```C@```(D
  16374. + M```"$````?@```'(```!F````6@````2`````@``!E0```90```&1```!CP`
  16375. + M``84```&!@``!>````6J```%A@``!5H```5.```%2```!3P```4P````/@``
  16376. + M`#8````<````&`````````/O@P```E]?0UA$,S,`````"0``!?H```7J```%
  16377. + MH```!9````3<```$?@``!$8```,:```"K(,```)`;6MT:6UE``````$```6`
  16378. + M`````````_$````#`````$]05%,`!`!````#\@```^H```!Y4W5N`$UO;@!4
  16379. + M=64`5V5D`%1H=0!&<FD`4V%T```````````$````"`````P````0````%```
  16380. + M`!A3=6YD87D``$UO;F1A>0``5'5E<V1A>0!7961N97-D87D`5&AU<G-D87D`
  16381. + M`$9R:61A>0``4V%T=7)D87D``````#@```!`````2````%````!:````9```
  16382. + M`&Q*86X`1F5B`$UA<@!!<'(`36%Y`$IU;@!*=6P`075G`%-E<`!/8W0`3F]V
  16383. + M`$1E8P````"2````E@```)H```">````H@```*8```"J````K@```+(```"V
  16384. + M````N@```+Y*86YU87)Y`$9E8G)U87)Y``!-87)C:`!!<')I;`!-87D`2G5N
  16385. + M90``2G5L>0``075G=7-T``!397!T96UB97(`3V-T;V)E<@!.;W9E;6)E<@``
  16386. + M1&5C96UB97(``````/(```#Z```!!````0H```$0```!%````1H```$@```!
  16387. + M*````3(```$Z```!1"5A("5B("5E("5(.B5-.B53("59```E;2\E9"\E>2`E
  16388. + M2#HE33HE4P`E;2\E9"\E>0``"@!030``04T``"5(.B5-`"5).B5-.B53("5P
  16389. + M`"5(.B5-.B53```)`"5M+R5D+R5Y`````````^P````F`````0```7H```%V
  16390. + M```!<@```6X```%J```!9@```6(```%>```!6@```58```%2```!3@```.X`
  16391. + M``#J````Y@```.(```#>````V@```-8```#2````S@```,H```#&````P@``
  16392. + M`(X```"*````A@```((```!^````>@```'8````T````,````"P````H````
  16393. + M)````"`````<`````````_(```/K````"0```_(```/I````%B!O``0@+P`(
  16394. + M2.<G`BX`(@@L;```)#P```/M3J[_XBP`3KH``$J&9QP@!B('3KH``"H`(@9.
  16395. + MKO_<2H!F!$J%9P0@!6`.3J[_?$ZZ```I0```</],WT#D3G4```/OA@```E]$
  16396. + M3U-"87-E`````0```!*#```#0&-H:V%B;W)T`````````0```"*#```$0%]D
  16397. + M;U]T<G5N8V%T90````````$````N@P``!$!C;VYV97)T7V]S97)R```````!
  16398. + M````2H8```)?97)R;F\```````$```!.`````````_$````#`````$]05%,`
  16399. + M!`!````#\@```^D```#5(&\`!")O``@@+P`,(B\`$"]O`!0`!"]O`!@`""]O
  16400. + M`!P`#)[\`#!(YR\V+B\`6"](`"PJ`"@!?$#ECB]``"0O00`H+TD`,'!`Y8A.
  16401. + MN@``*D`O0`!$(`52@&82+&P``$ZN_\HO0`!`0J\`4&`F2&\`0$AX"`$O!4ZZ
  16402. + M``!/[P`,4H!F!$*O`$!P`2]``%`@!4ZZ```@!%*`9A(L;```3J[_Q"]``#Q"
  16403. + MKP!,8$:ZA&8,+V\`0``\0J\`3&`V2&\`/$AX"`$O!$ZZ``!/[P`,4H!F!G``
  16404. + M+T``/"(O`#RRKP!`5L!$`$B`2,`O0`!,(`1.N@``</^^@&80(&P``"]H`.``
  16405. + M.$*O`$A@4'#^OH!F#"]O`#P`.$*O`$A@/DAO`#A(>`@!+P=.N@``3^\`#%*`
  16406. + M9@9P`"]``#@@+P`X(B\`/+*`9PJPKP!`9P1P`6`"<``O0`!((`=.N@``2J\`
  16407. + M0&<``61*KP`\9P`!7$JO`#AF!E*'9@`!4"`-9P`!1"9->``O;P`P`#1@``"L
  16408. + M2H1F!B!O`"Q@`B!5)$AZ`RI(8!I2A1`5<BJP`6<,<B*P`6<&<@JP`68"4H52
  16409. + MC4H59N(J;P!$($W1QB)+T\5-Z0`!O<AE)"`&T(;0A2P`($U.N@``*D!*@&<`
  16410. + M`-H@"Y"O`$0F3=?`+TT`1"!+$+P`(%2+$7P`(@`!*DI@(!`5<B*P`6<&<BJP
  16411. + M`68&%OP`*F`*<@JP`68$%OP`*Q;=2A5FW!;\`")2A%BO`#0J;P`T2I5F`/].
  16412. + M0A,J;P!<(`UG$"(-+&P``'3^3J[_K"@`8`)X`$J$9@0@#68\*F\`1"\O`&`O
  16413. + M!"\O`%`O+P!$+R\`7"\O`%`@+P!8(B\`:"!-3KH``$_O`!@J`%*`9QH@34ZZ
  16414. + M```@!6!X+&P``$ZN_WQ.N@``*4```$J$9Q(B!"QL``!.KO^F8`9P#"E````@
  16415. + M+P!`9Q!*KP!09PHB`"QL``!.KO_<("\`/&<02J\`3&<*(@`L;```3J[_W"`O
  16416. + M`#AG$$JO`$AG"B(`+&P``$ZN_]PJ;P!$(`UG!B!-3KH``'#_3-]L]-[\`#!.
  16417. + M=2!O``0B;P`(("\`#"(O`!`O;P`4``0O;P`8``@O!2HO``PO!2\O``Q(>/__
  16418. + M80#\V$_O``PJ'TYU```#[X,```)`;6%L;&]C``````$```!,A@```E]$3U-"
  16419. + M87-E````"````OP```+F```"T````K(```*<```"2````)H```!<@P```E]I
  16420. + M;V-T;````````P```20```#&````>(,```1`7W!S975D;U]C;&]S90``````
  16421. + M`P```50```#N````D(8```%?7W5S`````0```/B#```"0')E86QL;V,````!
  16422. + M```!V(,```1`7W-T87)T7W!R;V-E<W,``````0```H2#```"0&9R964`````
  16423. + M```"```##@```I2#```$0&-O;G9E<G1?;W-E<G(```````$```*DA@```E]E
  16424. + M<G)N;P```````@```KX```*H`````````_$````#`````$]05%,`!`!````#
  16425. + M\@```^D````"<`%.=7`!3G4```/Q`````P````!/4%13``0``````_(```/I
  16426. + M````#B`O``0O!RX`3KH``"`'(&P``'(`3KH``&`,("P``$ZZ``!.N@``(&P`
  16427. + M`$ZZ``!*@&?H<``N'TYU```#[X,```-`8VAK86)O<G0````````!````"H8`
  16428. + M``-?7V]D9%]T:6UE<@`````"````*````!"#```$0%]T:6UE<E]S=&%R=```
  16429. + M``````$````6A@```U]?;V1D7W-I9P````````$````<@P``!$!?=V%I=%]S
  16430. + M:6=N86QS```````!````((,```1`7VAA;F1L95]S:6=N86QS`````0```"2#
  16431. + M```$0%]T:6UE<E]E>'!I<F5D``````$````L`````````_$````#`````$]0
  16432. + M5%,`!`!````#\@```^D````/(&\`!"`O``A(YP$$+@`J2$ZZ```O!TAX`P$O
  16433. + M#4ZZ``!/[P`,3-\@@$YU(&\`!"`O``A(YP$$3-\@@&#,```#[X,```-`8VAK
  16434. + M86)O<G0````````!````$H,```)?;W!E;@````````$````>`````````_$`
  16435. + M```#`````$]05%,`!``````#\@```^D````C("\`!"!O``@B+P`,64](YP,T
  16436. + M+`$N`"I(3KH``"`'3KH``"9`2H!G1`@K``$``V<V""L``P`#9Q8@:P`8+T@`
  16437. + M%"!K``1P`'("(F\`%$Z1(&L`%"](`!0@!B!K``0B321O`!1.DF`(<`TI0```
  16438. + M</],WRS`6$].=2`O``0@;P`((B\`#$CG`P1,WR#`8(````/O@P```T!C:&MA
  16439. + M8F]R=`````````$````:@P```T!?9FEN9%]F9`````````$````@A@```E]E
  16440. + M<G)N;P```````0```&H````````#\0````,`````3U!44P`$`$````/R```#
  16441. + MZ0````P@;P`$44\O#2I(0>\`!$ZZ``!*@&H$</]@#B`-9P8@+P`$*H`@+P`$
  16442. + M*E]03TYU``````/O@P```T!?9V5T=&EM90````````$````0`````````_$`
  16443. + M```#`````$]05%,`!``````#\@```^D````=(&\`!)[\`$!(YSL6*DA.N@``
  16444. + M(`UG4DH59TXB#4'O`"`D""QL``!V0'@`3J[\=BX`;39.KO]\+`!2@$ZZ```F
  16445. + M0$J`9R2^AF<4)@92@R(-)`M.KOQV2H!O$"`"8`X@0B)+$MAF_"`+8`)P`$S?
  16446. + M:-S>_`!`3G4```/O@P```T!C:&MA8F]R=`````````$````0A@```E]$3U-"
  16447. + M87-E`````0```"2#```"0&UA;&QO8P`````!````/`````````/Q`````P``
  16448. + M``!/4%13``0`0````_(```/I````$R!O``0B;P`(2.<S$B9)(@@L;```=/Y.
  16449. + MKO^L+@!.N@``2H=G&B(+)`=V`$ZN_D0L`"("3J[_IDJ&9P0@`V`&3KH``'#_
  16450. + M3-](S$YU``````/OA@```E]$3U-"87-E`````0```!*#```#0&-H:V%B;W)T
  16451. + M`````````0```!Z#```"0%]S971E<G(````!````0`````````/Q`````P``
  16452. + M``!/4%13``0`0````_(```/I````)"!O``2>_``,2.<!%"I(2AAF_%.(D<T@
  16453. + M""9-U\!=BWYA3KH``"\L``!(;```2&\`%TZZ``!/[P`,0>\`#R)(2AEF_%.)
  16454. + MD\@@"7(%L(%O"$'O``K1P&`$0>\`#R\(2&P`!"\+3KH``$_O``P6AR!-<`!.
  16455. + MN@``2H!F"E('<'J^`&_J0A4@#4S?*(#>_``,3G4``````_@````"`````0``
  16456. + M`%X````J`````````^^#```#0&-H:V%B;W)T`````````0```"*&```!7U]U
  16457. + M<P````$````F@P```U]?<W!R:6YT9@````````(```!D````,H,```-`7U]A
  16458. + M8V-E<W,````````!````<@````````/Q`````P````!/4%13``0`0````_(`
  16459. + M``/J`````B5L>`!A)7,````#\@```^D````&(&\`!"\-*DA.N@``($UP0.F(
  16460. + M*E].^@`````#[X,```-`8VAK86)O<G0````````!````"H,```)`9V5T8W=D
  16461. + M``````$````6`````````_$````#`````$]05%,`!``````#\@```^D````/
  16462. + M(&\`!"`O``A(YR$&+@`J2$ZZ```@!TZZ```D`"(-+&P``$ZN_T9*@&<$<`!@
  16463. + M!DZZ``!P_TS?8(1.=0`````#[X,```-`8VAK86)O<G0````````!````$H,`
  16464. + M``5`7VUA:V5?<')O=&5C=&EO;@````````$````8A@```E]$3U-"87-E````
  16465. + M`0```""#```"0%]S971E<G(````!````,`````````/Q`````P````!/4%13
  16466. + M``0`0````_(```/I````'"`O``0B+P`(+V\`#``$44](YP<`*B\`&"P!+@!.
  16467. + MN@``(`=.N@``2H!G&B)`(&D`&"](`!`@!B(%(&D`!")O`!!.D6`"</],WP#@
  16468. + M4$].=2`O``0B+P`(+V\`#``$2.<'`"HO`!`O10`03-\`X&"@``````/O@P``
  16469. + M`T!C:&MA8F]R=`````````$````>@P```T!?9FEN9%]F9`````````$````D
  16470. + M`````````_$````#`````$]05%,`!``````#\@```^D````<("\`!"!O``@B
  16471. + M+P`,64](YP,T+`$N`"I(3KH``"`'3KH``"9`2H!G)@@K`````V<8(&L`$"](
  16472. + M`!0@!B!K``0B321O`!1.DF`(<`TI0```</],WRS`6$].=2`O``0@;P`((B\`
  16473. + M#$CG`P1,WR#`8)X``````^^#```#0&-H:V%B;W)T`````````0```!J#```#
  16474. + M0%]F:6YD7V9D`````````0```""&```"7V5R<FYO```````!````3```````
  16475. + M``/Q`````P````!/4%13``0`0````_(```/I````@2`O``0@;P`((F\`#"]O
  16476. + M`!``!"]O`!0`")[\`"Q(YS\V)DDJ2"]``$`D;P!<(`IG#DJ29@I*J@`$9@1P
  16477. + M`6`"<`!R`"]``#0D#6<"(A5T`"]!`"PF"V<")!-Z`'X!+T(`,&!2*"\`+,B'
  16478. + M+"\`,,R'3KH``$J$9@1*AF<V(`5.N@``)$!*@&8&</]@``%N2H1G"`@J````
  16479. + M`V<,2H9G%`@J``$``V8,<`TI0```</]@``%*4H7>A[JO`$!MJ"1O`%P@"F<0
  16480. + M(!(B*@`$(&P``$ZZ``!@""!L``!.N@``>@`@!4*O`%!Z`'X!+T``*&`Z*"\`
  16481. + M+,B'+"\`,,R'2H1F!$J&9R(@!4ZZ```B0"!I``@O2``\(`0B!B!I``0B;P`\
  16482. + M3I&!KP!04H7>A[JO`$!MP"@O`%`@!%*`9P9*KP`T9PAP`$ZZ``!@"B`L``"`
  16483. + MA$ZZ```O0`!,?`!X`2XO`#`J+P`H8'`@+P`LP(0O0`!((@?"A"]!`$1*@&8$
  16484. + M2H%G4B`&3KH``")`(&D`#$AO`$0O2``\(&D`!$/O`$PL;P`\3I983R`O`$AF
  16485. + M"B(-9P8B!$:!PY4@+P!$9@HB"V<&(@1&@<.32J\`2&8&2J\`1&<"4H52AMB$
  16486. + MO*\`0&V*("\`3$ZZ``!*A684(&P``$ZZ``!*@&8(2J\`-&<`_N@@!4S?;/S>
  16487. + M_``L3G4``````^^#```#0&-H:V%B;W)T`````````0```'"#```#0%]F:6YD
  16488. + M7V9D`````````P```7X```$$````?H8```)?97)R;F\```````$```"HA@``
  16489. + M`U]?;V1D7W1I;65R``````,```'D````U````,J#```$0%]T:6UE<E]S=&%R
  16490. + M=`````````$```#.@P``!$!?=&EM97)?86)O<G0````````!````V(,```1`
  16491. + M7V-H96-K7W-I9VYA;',``````0```4"&```#7U]O9&1?<VEG`````````0``
  16492. + M`4:#```$0%]W86ET7W-I9VYA;',```````$```%,@P``!$!?:&%N9&QE7W-I
  16493. + M9VYA;',````!```!W(,```1`7W1I;65R7V5X<&ER960``````0```>@`````
  16494. + M```#\0````,`````3U!44P`$`$````/R```#Z0```"!13TCG(R0N+P`@3KH`
  16495. + M`"PO`"@@!TZZ```J0$J`9U@@+P`D5X!G#%.`9PYP%BE```!@1'`,P)5@0"`5
  16496. + M=`S,@B0``D+_\X2&*H)R!,*"=`3`@K"!9QXO00`8(&T`("](`!0@;0`$0^\`
  16497. + M&'``)&\`%$Z28`9P`&`"</],WR3$4$].=0```^^#```#0&-H:V%B;W)T````
  16498. + M`````0````R#```#0%]F:6YD7V9D`````````0```!:&```"7V5R<FYO````
  16499. + M```!````+@````````/Q`````P````!/4%13``0`0````_(```/I````````
  16500. + M`_$````#`````$]05%,`!``````#\@```^H```#>86UI9V$@<W!E8VEF:6,@
  16501. + M97)R;W(```````!5;FMN;W=N(&5R<F]R`&YO="!O=VYE<@!N;R!S=6-H(&9I
  16502. + M;&4@;W(@9&ER96-T;W)Y`&YO('-U8V@@<')O8V5S<P!I;G1E<G)U<'1E9"!S
  16503. + M>7-T96T@8V%L;`!I+V\@97)R;W(`;F\@<W5C:"!D979I8V4@;W(@861D<F5S
  16504. + M<P!A<F=U;65N="!L:7-T('1O;R!L;VYG``!E>&5C(&9O<FUA="!E<G)O<@!B
  16505. + M860@9FEL92!N=6UB97(`;F\@8VAI;&0@<')O8V5S<P``;F\@;6]R92!P<F]C
  16506. + M97-S97,`;F]T(&5N;W5G:"!M96UO<GD`<&5R;6ES<VEO;B!D96YI960`8F%D
  16507. + M(&%D9')E<W,`8FQO8VL@9&5V:6-E(')E<75I<F5D`&UO=6YT(&1E=FEC97,@
  16508. + M8G5S>0``9FEL92!E>&ES=',`8W)O<W,M9&5V:6-E(&QI;FL`;F\@<W5C:"!D
  16509. + M979I8V4``&YO="!A(&1I<F5C=&]R>0!I<R!A(&1I<F5C=&]R>0``:6YV86QI
  16510. + M9"!A<F=U;65N=```9FEL92!T86)L92!O=F5R9FQO=P!T;V\@;6%N>2!O<&5N
  16511. + M(&9I;&5S`&YO="!A('1Y<&5W<FET97(``'1E>'0@9FEL92!B=7-Y``!F:6QE
  16512. + M('1O;R!B:6<``&YO('-P86-E(&QE9G0@;VX@9&5V:6-E`&EL;&5G86P@<V5E
  16513. + M:P``<F5A9"UO;FQY(&9I;&4@<WES=&5M`'1O;R!M86YY(&QI;FMS``!B<F]K
  16514. + M96X@<&EP90!M871H(&%R9W5M96YT`')E<W5L="!T;V\@;&%R9V4``$DO3R!S
  16515. + M=')E86T@96UP='D``&9I;&4@;F%M92!T;V\@;&]N9P``9&ER96-T;W)Y(&YO
  16516. + M="!E;7!T>0!T;V\@;6%N>2!S;V9T(&QI;FMS("AL;V]P/RD`````&@```"@`
  16517. + M```R````3````%P```!T````?@```)@```"P````P@```-(```#D````]@``
  16518. + M`0@```$:```!)@```3P```%0```!7````6X```%^```!C@```9X```&P```!
  16519. + MQ````=@```'J```!^@```@@```(@```"+@```D0```)4```"8````FX```*`
  16520. + M```"D@```J8```*Z````)@`````#[````"@````!```#;@```VH```-F```#
  16521. + M8@```UX```-:```#5@```U(```-.```#2@```T8```-"```#/@```SH```,V
  16522. + M```#,@```RX```,J```#)@```R(```,>```#&@```Q8```,2```##@```PH`
  16523. + M``,&```#`@```OX```+Z```"]@```O(```+N```"Z@```N8```+B```"W@``
  16524. + M`MH```+6````%@````````/R```#Z0```$4@+P`$*4```$J`9P``AG)GD(%G
  16525. + M``""58!G``"`<@F0@6=\4X!G>%.`9W13@&=P4X!G;%.`9VA3@&=H4X!G:')1
  16526. + MD(%G9E.`9V93@&=F4X!G9E.`9V93@&=F58!G9E.`9V93@&=F4X!G9E6`9V93
  16527. + M@&=F4X!G9E.`9V93@&=F4X!G9E6`9V93@&=F4X!G9E.`9V9@:'``8&9P#&!B
  16528. + M<`M@7G`68%IP!V!6<`A@4G`08$YP$6!*<`)@1G`"8$)P%F`^<`=@.G`68#9P
  16529. + M)&`R<!9@+G`68"IP'F`F<!)@(G`E8!YP)F`:<!-@%G`68!)P'&`.<`U@"G`-
  16530. + M8`9P#6`"</].=2\.+&P``$ZN_WQA`/[Z*4```"Q?3G4```/X`````0````$`
  16531. + M``$.`````````^^&```"7U]/4T524@`````!````!H8```)?1$]30F%S90``
  16532. + M``$```$"`````````_$````#`````$]05%,`!`!````#\@```^L````!```#
  16533. + M\@```^D````%3KH``$ZZ``!.N@``<@9.^@````````/O@P```T!C:&MA8F]R
  16534. + M=`````````$````"@P```T!?8VQO<V5?86QL``````$````&@P```D!G971P
  16535. + M:60``````0````J#```"0&MI;&P````````!````$`````````/Q`````P``
  16536. + M``!/4%13``0``````_(```/I````62!O``0@+P`(64](YP$6+@`O2``0(&\`
  16537. + M$"I08&1P#;`M``AF6B`M`*QG!N6`($!@`I'()D@@+0"<L(=G-"`M`*"PAV<L
  16538. + M("T`X+"'9R0@"V<N("L`'+"'9Q@@*P`@L(=G$"`K`#BPAV<(("L`,+"'9@XB
  16539. + M37!@[X@L>``$3J[^O"I52I5FF$S?:(!83TYU("\`!"(O``A(YP$"+@`@`5.`
  16540. + M9PQ3@&<(4X!G!%V`9BPL>``$3J[_?"!L``#0_`&6(`=A`/]((&P``-#\`:0@
  16541. + M!V$`_SI.KO]V<`!@"'`6*4```'#_3-]`@$YU("\`!"(O``A(YP8$+`$J`$ZZ
  16542. + M``!*A6H"1(6ZK```9@Y*AF<&(`9.N@``<`!@2"`%3KH``"I`2H!G!DJM`!1G
  16543. + M"G`#*4```'#_8"P@!F<H(BT`$,%!80#_6"(`<`F\@&84<@$K00`4*T``&'`4
  16544. + M3KH``'``8`(@`4S?(&!.=0`````#[X8```)?4WES0F%S90````(```#$````
  16545. + MMH8```)?97)R;F\```````(```$J````W(,```-`8VAK86)O<G0````````!
  16546. + M````^(8```-?7V]U<E]P:60````````!```!`H,```1`7W-I9U]D:7-P871C
  16547. + M:````````@```50```$.@P```T!?9FEN9%]P:60```````$```$8````````
  16548. + M`_$````#`````$]05%,`!`!````#\@```^D```!#(&\`!$CG``8J2")-+'@`
  16549. + M!$ZN_P0@34S?8`!.^@``("\`!$CG`00N`"IL``A@#B`M``RPAV8$(`U@""I5
  16550. + M2I5F[G``3-\@@$YU2.<@`D'L``A.N@``("P``"(L```D`+."`H(`?___*4(`
  16551. + M!%*"*4(``"\!+P!(;```2&P`%$ZZ``!/[P`0+'@`!$ZN_68I0``X9Q!![``4
  16552. + M<`!.N@``*4``-&8*2&P`#DZZ``!83TS?0`1.=4CG``8@+``X9PH@0"QX``1.
  16553. + MKOU@2JP`-&<X+'@`!$ZN_WQ@#")-<!PL>``$3J[_+B!L`#0L>``$3J[^C"I`
  16554. + M2H!FXB!L`#1.N@``+'@`!$ZN_W9,WV``3G4``````_@````"`````0```*0`
  16555. + M``!V````#`````(```#V````Y````,@```"X````G@```)0```".````>@``
  16556. + M`&X```!H````3@```"H````````#[X,```)`9G)E90````````$````<@P``
  16557. + M`D!.97=,:7-T`````0```%*&```!7U]U<P````$```!6A@``!%]?<W1A<G1U
  16558. + M<%]T:6UE```````!````6H,```-?7W-P<FEN=&8````````!````?H,```-`
  16559. + M0W)E871E4&]R=``````!````FH,```)?7V9A:6P```````$```"H@P```T!$
  16560. + M96QE=&50;W)T``````$```#Z`````````_$````#`````$]05%,`!`!````#
  16561. + M\@```^H````&9&]O<BXE;'@N)6QX``!.;R!M96UO<GD````#\@```^L````/
  16562. + M```#\@```^D````O(&\`!"`O``@B+P`,(F\`$"]O`!0`!"]O`!@`"%E/2.</
  16563. + M-B@O`"PJ+P`H+`$N`"I)+T@`("QX``1.KOUF)D!*@&<P($L@!$ZN_7(D0$J`
  16564. + M9R(@#6<()4T`*"5%`"0@;P`@(`<B2B(&3J[^1$H`9@0@"F`6(`IG!B!*3J[]
  16565. + M;"`+9P8@2TZZ``!P`$S?;/!83TYU(&\`!$CG``8J2"`-9Q@B32QX``1.KOX^
  16566. + M(&T`#DZZ```@34ZN_6Q,WV``3G4```/O@P```T!$96QE=&50;W)T``````(`
  16567. + M``"N````A`````````/Q`````P````!/4%13``0``````_(```/I````%"!O
  16568. + M``0@+P`(2.<A!BX`*DA.N@``(@TL;```3J[_B$J`9R(B`$ZN_Z8@!TZZ```@
  16569. + M!TZZ```D`"(-3J[_1DJ`9P1P`&`&3KH``'#_3-]@A$YU```#[X,```-`8VAK
  16570. + M86)O<G0````````!````$H8```)?1$]30F%S90````$````8@P``!4!?;6%K
  16571. + M95]P<F]T96-T:6]N`````````@```#(````L@P```D!?<V5T97)R`````0``
  16572. + M`$8````````#\0````,`````3U!44P`$`$````/R```#^P``")D1/@!?<V5T
  16573. + M:FUP`'1E>'0`0%]L;VYG:FUP`$!?<V5T:FUP`%]?;&]N9VIM<`!?7W-E=&IM
  16574. + M<`!S<')I;G1F`%],5D]287=$;T9M=`!?06)S17AE8T)A<V4`7U]S<')I;G1F
  16575. + M`'1M<&YA;2YC`%]M:W1E;7``0'1M<&YA;0!?=&UP;F%M`%]?34521T5$`'!O
  16576. + M<&5N+F,`7W=A:71P:60`0&9C;&]S90!`9G)E90!`7W-T87)T7W!R;V-E<W,`
  16577. + M0%]S971E<G(`7V5R<FYO`%]$3U-"87-E`$!F;W!E;@!?7V9I9F]?8F%S90!?
  16578. + M7V9I9F]?;V9F<V5T`$!M86QL;V,`0'!C;&]S90!?<&-L;W-E`$!P;W!E;@!?
  16579. + M<&]P96X`<W1A<G0N8P!`8V]N=F5R=%]O<V5R<@!?7W!R;V-E<W-E<P!?7W-T
  16580. + M86-K7W-I>F4`7U]N97AT7W!I9`!?7V1O;W)?;F%M90!?7W-T87)T=7!?<&]R
  16581. + M=`!?3&EN:V5R1$(`7U]S=&%R=%]P<F]C97-S`%]?8VAI;&1?9&]O<E]N86UE
  16582. + M`%]?8VAI;&1?8V]M;6%N9%]L96X`7U]C:&EL9%]C;VUM86YD`%]?8VAI;&1?
  16583. + M97AI=`!?7V-H:6QD7V5N=')Y`&=E='!I9"YC`%]?;W5R7W!I9`!`8VAK86)O
  16584. + M<G0`0&=E='!I9`!?9V5T<&ED`'-I9VYA;"YC`%]?<VEG7VAA;F1L97)S`$!S
  16585. + M:6=N86P`7W-I9VYA;`!`<VEG=F5C`%]S:6=V96,`<VEG<V5T;6%S:RYC`$!?
  16586. + M<VEG7V1I<W!A=&-H`%]?<VEG7W!E;F1I;F<`7U]S:6=?;6%S:P!`<VEG8FQO
  16587. + M8VL`7W-I9V)L;V-K`$!S:6=S971M87-K`%]S:6=S971M87-K`'-T870N8P!?
  16588. + M<F5A9&QI;FL`0%]F:6)S=&%T`$!?;&9I8G-T870`7U]T96UP7V9N86UE`%]L
  16589. + M87-T7V5N=')Y`$!?9V5T7V-D`%]L87-T7V1I<@!`;'-T870`7VQS=&%T`$!S
  16590. + M=&%T`%]S=&%T`&1I<BYC`$!S965K9&ER`%]S965K9&ER`$!T96QL9&ER`%]T
  16591. + M96QL9&ER`$!R96%D9&ER`%]R96%D9&ER`$!C;&]S961I<@!?8VQO<V5D:7(`
  16592. + M0&]P96YD:7(`7V]P96YD:7(`9&ER7V1A=&$N8P!?7V=E=%]C9`!A8V-E<W,N
  16593. + M8P!`86-C97-S`%]A8V-E<W,`0%]?86-C97-S`%]?7V%C8V5S<P!F<W1A="YC
  16594. + M`%]I;V-T;`!`9G-T870`7V9S=&%T`'-Y;6QI;FLN8P!`<WEM;&EN:P!?<WEM
  16595. + M;&EN:P!M97-S86=E+F,`0&5X:70`7U]0<F]G<F%M3F%M90!?7U="96YC:$US
  16596. + M9P!?7W5S`%]?9F%I;`!?7VUE<W-A9V4`86QL;V-D;W,N8P!?06QL;V-$;W-/
  16597. + M8FIE8W1486=S`'-E=&IM<"YC`$!L;VYG:FUP`%]L;VYG:FUP`$!S971J;7``
  16598. + M9V5T:&]S=&YA;64N8P!?<W1R;F-P>0!?7W-Y<W1E;5]N86UE`$!G971H;W-T
  16599. + M;F%M90!?9V5T:&]S=&YA;64`<&5R<F]R+F,`7U]/4T524@!?<WES7V5R<FQI
  16600. + M<W0`7W-Y<U]N97)R`$!W<FET90!`<&5R<F]R`%]P97)R;W(`<VEG;&ES="YC
  16601. + M`%]S>7-?<VEG;&ES=`!W86ET-"YC`$!?:&%N9&QE7W-I9VYA;',`0%]W86ET
  16602. + M7W-I9VYA;',`0%]F<F5E7V5N=')Y`$!W86ET<&ED`$!W86ET`%]W86ET`$!W
  16603. + M86ET,P!?=V%I=#,`0'=A:70T`%]W86ET-`!P<V5U9&]?8RYC`$!?9G)E95]F
  16604. + M9`!`7V9I;F1?9F0`0%]P<V5U9&]?8VQO<V4`7U]P<V5U9&]?8VQO<V4`<FEN
  16605. + M9&5X+F,`0'-T<G)C:'(`0')I;F1E>`!?<FEN9&5X`&EN9&5X+F,`0'-T<F-H
  16606. + M<@!`:6YD97@`7VEN9&5X`'1I;65R<RYC`$!?9&5V:6-E7V-L;W-E`$!?9&5V
  16607. + M:6-E7V]P96X`0%]T:6UE<E]E>'!I<F5D`%]?=&EM97)?97AP:7)E9`!`7W1I
  16608. + M;65R7W-T87)T`%]?=&EM97)?<W1A<G0`0%]T:6UE<E]S:6<`7U]T:6UE<E]S
  16609. + M:6<`0%]T:6UE<E]A8F]R=`!?7W1I;65R7V%B;W)T`$!?9G)E95]T:6UE<@!?
  16610. + M7V9R965?=&EM97(`0%]A;&QO8U]T:6UE<@!?7V%L;&]C7W1I;65R`&9I9F]F
  16611. + M9"YC`%]?<W1A<G1U<%]T:6UE`$!?8VQE86YU<%]F:69O`%]?8VQE86YU<%]F
  16612. + M:69O`$!?:6YI=%]F:69O`%]?:6YI=%]F:69O`%]?9FEF;U]S:6<`7U]F:69O
  16613. + M7V]K`%]?1FEF;T)A<V4`8VQO<V4N8P!`8VQO<V4`7V-L;W-E`$!?7V-L;W-E
  16614. + M`%]?7V-L;W-E`&9I;&5S+F,`0%]L87-T7V9D`%]?;&%S=%]F9`!?7V9I;F1?
  16615. + M9F0`7U]F<F5E7V9D`$!?86QL;V-?9F0`7U]A;&QO8U]F9`!U=&EM92YC`$!?
  16616. + M9VUT,F%M:6=A`$!T:6UE`$!U=&EM90!?=71I;64`8F-O<'DN8P!`;65M;6]V
  16617. + M90!`8F-O<'D`7V)C;W!Y`&%M:6=A=&EM92YC`%]D87EL:6=H=`!?='IN86UE
  16618. + M`%]?0UA$,S,`0&QO8V%L=&EM90!`7V=E='1I;64`0&9T:6UE`%]F=&EM90!`
  16619. + M9V5T=&EM96]F9&%Y`%]G971T:6UE;V9D87D`=&EM96-O;G9E<G0N8P!?5&EM
  16620. + M97)"87-E`$!?86UI9V$R9VUT`%]?86UI9V$R9VUT`%]?9VUT,F%M:6=A`%]?
  16621. + M9V5T=&EM90!P=V0N8P!`9V5T;&]G:6X`7V=E=&QO9VEN`$!G971P=VYA;0!?
  16622. + M9V5T<'=N86T`0&=E='!W=6ED`%]G971P=W5I9`!?7V%M:6=A7W5S97(`<F5A
  16623. + M9&QI;FLN8P!?<W1R;&5N`$!R96%D;&EN:P!A;&QO8V$N8P!?;6%L;&]C`%]F
  16624. + M<F5E`%]A;&QO8V$`=6YL:6YK+F,`0'5N;&EN:P!?=6YL:6YK`'!I<&4N8P!`
  16625. + M<W1R8V%T`$!.97=,:7-T`$!S;V-K971P86ER`%]S;V-K971P86ER`$!P:7!E
  16626. + M`%]P:7!E`&=R<"YC`$!G971G<FYA;0!?9V5T9W)N86T`0&=E=&=R9VED`%]G
  16627. + M971G<F=I9`!S:6=N86QS+F,`7U]&4$524@!`7U]E>&ET`$!?9FEN9%]P:60`
  16628. + M0%]C;&5A;G5P7W!R;V-E<W-E<P!?7V-H:6QD<F5N7V5X:70`0%]I;FET7W!R
  16629. + M;V-E<W-E<P!`7V-L96%N=7!?<VEG;F%L<P!?7V-L96%N=7!?<VEG;F%L<P!`
  16630. + M7VEN:71?<VEG;F%L<P!?7VEN:71?<VEG;F%L<P!`0VAK7T%B;W)T`%]#:&M?
  16631. + M06)O<G0`7V-H:V%B;W)T`$!#6$9%4E(`7T-81D524@!?7VAA;F1L95]S:6=N
  16632. + M86QS`%]?=V%I=%]S:6=N86QS`$!?8VAE8VM?<VEG;F%L<P!?7V-H96-K7W-I
  16633. + M9VYA;',`7U]S:6=?9&ES<&%T8V@`0&%L87)M`%]A;&%R;0!?;6%I;BYC`$!M
  16634. + M86EN`$!?7V=E=&5N=@!`='%S;W)T`$!S=')N8W!Y`%]?7V-T>7!E`$!?:6YI
  16635. + M=%]U;FEX:6\`7U]?:6]B`%]?6$-%6$E4`%]3>7-"87-E`$!R96%L;&]C`%]?
  16636. + M7VUA:6X`0&UA:V5?96YV:7)O;@!?;6%K95]E;G9I<F]N`%]E;G9I<F]N`%]?
  16637. + M;V1D7W-I9P!?7V]D9%]T:6UE<@!U;6%S:RYC`$!U;6%S:P!?=6UA<VL`<')O
  16638. + M=&5C=&EO;BYC`$!?;6%K95]M;V1E`%]?;6%K95]M;V1E`$!?;6%K95]P<F]T
  16639. + M96-T:6]N`%]?;6%K95]P<F]T96-T:6]N`%]U<V5?86UI9V%?9FQA9W,`9VED
  16640. + M+F,`0&=E=&5G:60`7V=E=&5G:60`0&=E=&=I9`!?9V5T9VED`%]E>&ET+F,`
  16641. + M0%]E>&ET`%]?97AI=`!?7U]E>&ET`$!?8VQO<V5?86QL`%]?8VQO<V5?86QL
  16642. + M`&EO8W1L+F,`0&EO8W1L`&]P96XN8P!`7V%L;&]C7V%M:6=A9F0`0'-T<FEC
  16643. + M;7``7V]P96X`7U]?;W!E;@!C=&EM92YC`%]S<')I;G1F`$!R96%D`$!?='IS
  16644. + M970`7U]T>G-E=`!`;6MT:6UE`%]M:W1I;64`0&-T:6UE`%]C=&EM90!`87-C
  16645. + M=&EM90!?87-C=&EM90!`9VUT:6UE`%]G;71I;64`7VQO8V%L=&EM90!`='IS
  16646. + M971W86QL`%]T>G-E='=A;&P`0'1Z<V5T`%]T>G-E=`!?=&EM97IO;F4`86UI
  16647. + M9V%D;W,N8P!?7VEN:71?=6YI>&EO`%]?86QL;V-?86UI9V%F9`!`7V1O7W1R
  16648. + M=6YC871E`%]?9&]?=')U;F-A=&4`<F5N86UE+F,`0')E;F%M90!?<F5N86UE
  16649. + M`&-H;W=N+F,`0&9C:&]W;@!?9F-H;W=N`$!C:&]W;@!?8VAO=VX`8F-M<"YC
  16650. + M`$!B8VUP`%]B8VUP`&9I8G-T870N8P!?7V9I8G-T870`7U]L9FEB<W1A=`!B
  16651. + M>F5R;RYC`$!B>F5R;P!?8GIE<F\`9G1R=6YC871E+F,`0&9T<G5N8V%T90!?
  16652. + M9G1R=6YC871E`&9C:&UO9"YC`$!F8VAM;V0`7V9C:&UO9`!M:V9I9F\N8P!`
  16653. + M;6MN;V0`7VUK;F]D`$!M:V9I9F\`7VUK9FEF;P!I<V%T='DN8P!`:7-A='1Y
  16654. + M`%]I<V%T='D`<VEG<&%U<V4N8P!`<VEG<&%U<V4`7W-I9W!A=7-E`')M9&ER
  16655. + M+F,`0')M9&ER`%]R;61I<@!S=')F=&EM92YC`$!S=')F=&EM90!?<W1R9G1I
  16656. + M;64`=')U;F-A=&4N8P!`=')U;F-A=&4`7W1R=6YC871E`&5X96,N8P!`97AE
  16657. + M8P!?97AE8P!`965X96,`7V5E>&5C`'5I9"YC`$!G971E=6ED`%]G971E=6ED
  16658. + M`$!G971U:60`7V=E='5I9`!S;&5E<"YC`$!S;&5E<`!?<VQE97``8W)E870N
  16659. + M8P!`8W)E870`7V-R96%T`$!?7V-R96%T`%]?7V-R96%T`'=R:71E+F,`7W=R
  16660. + M:71E`$!?7W=R:71E`%]?7W=R:71E`'1I;64N8P!?=&EM90!G971E;G8N8P!?
  16661. + M7U]G971E;G8`;&EN:RYC`$!L:6YK`%]L:6YK`&UK=&5M<"YC`$!M:W1E;7``
  16662. + M9V5T=V0N8P!`9V5T8W=D`$!G971W9`!?9V5T=V0`8VAM;V0N8P!`8VAM;V0`
  16663. + M7V-H;6]D`&QS965K+F,`0&QS965K`%]L<V5E:P!`7U]L<V5E:P!?7U]L<V5E
  16664. + M:P!R96%D+F,`7W)E860`0%]?<F5A9`!?7U]R96%D`'-E;&5C="YC`$!S96QE
  16665. + M8W0`7W-E;&5C=`!F8VYT;"YC`%]F8VYT;`!E<G)O<E]M<V<N8P!E<G)O<BYC
  16666. + M`%]?<V5T97)R`%]C;VYV97)T7V]S97)R`&%B;W)T+F,`0&MI;&P`0&%B;W)T
  16667. + M`%]A8F]R=`!K:6QL+F,`7VMI;&P`<')O8V5S<V5S+F,`0$1E;&5T95!O<G0`
  16668. + M0$-R96%T95!O<G0`7U]C;&5A;G5P7W!R;V-E<W-E<P!?7VEN:71?<')O8V5S
  16669. + M<V5S`%]?9FEN9%]P:60`7U]F<F5E7V5N=')Y`&1E=FEC97,N8P!?7V1E=FEC
  16670. + M95]C;&]S90!?7V1E=FEC95]O<&5N`&UK9&ER+F,`0&UK9&ER`%]M:V1I<@``
  16671. + M`0````$`"0`)`^D````$``X`%@`!`!@`!``!`"$`#@`!`"L````!`#0`#``!
  16672. + M``D`#`/I``(`/`!)``$`5@````$`8``I``,`"0`*`^D``0!H``(`<0`$``$`
  16673. + M>0````$`@0`$`^H``````($`"0/K``````"*`%0``P`)`&\#Z0`,`)$`F@"B
  16674. + M`*@`N`#"`,D`T0!5`-D`Y0#R``0`^P%>``$!`P%:``$!"P`(``$!$@````$`
  16675. + M@0`%`^H``````($``0/K``````$9`2T``P`)`,4#Z0`+`*(`P@$@`3`!/`%)
  16676. + M`50`\@%@`,D!;P`"`*D`Y@`!`7D`M@`!`($`!@/J``````"!``H#ZP````4!
  16677. + MB0`D``$!FP`@``$!KP`<``$!OP`8``$!S`````$!V@)M``$`"0`#`^D``@'C
  16678. + M`>P``@'W`````0'_`````0('`H8``0`)`",#Z0`#`,("$`'L``0"'P!B``$"
  16679. + M)P!:``$"+P`,``$"-P````$"/P+&``$`"0`5`^D`!`)+`EL![`)I``0"=`!&
  16680. + M``$"?@!"``$"B``$``$"E`````$"H`,"``(`"0":`^D`"0*F`K`![`*Z`,D"
  16681. + MQ@+3`MX"Z``$`O(!U@`!`OD!S@`!`P`!G@`!`P8!E@`!`($`00/K``````,,
  16682. + M`_4``0`)`-`#Z0`)`M,"W@'L`,(!(`#)`/("Z`"B``H#$@,@``$#&P,8``$#
  16683. + M)`,(``$#+0,$``$#-@*0``$#/P*,``$#2`).``$#4@)*``$#7`%>``$#90%:
  16684. + M``$#;@48``(`"0`(`^D``0#)``("WP````$#>0````$`@0`"`^L````"`M,`
  16685. + M!``!`N@````!`X(%,@`!``D`&P/I``,`P@*P`>P`!`.+`&```0.3`%@``0.;
  16686. + M``@``0.E`````0.O!6@``0`)`$$#Z0`&`,(!(`*Z`,D#M@'L``(#O@`(``$#
  16687. + MQ0````$#S`77``$`"0`.`^D``P"X`,D![``"`]8`"``!`]\````!`^@%_P`"
  16688. + M``D`/@/I``4#\0/X`,D$!@02``($%P#B``$$'@#4``$`@0`/`^H`````!"@&
  16689. + MA@`!``D`!P/I``$`R0`!!#,````!!$<&G``!``D`#P/I``0`#0*'`!<":0`$
  16690. + M!%``'@`!!%D`%@`!!&(`!``!``$````!!&H&S``!``D`!P/I``($=P2!``($
  16691. + MCP`(``$$G`````$$J0;I``(`"0`I`^D`!@#)!+($N@3'`,($T``"!-@`!``!
  16692. + M!.`````!`($`"`/J``````3H!U(``@`)```#Z0``````@0#&`^H````!!/("
  16693. + MF``!!/\(1P`!``D`.@/I``4%!@47`,(%)@$P``@%-`#```$`D@"T``$%/0"F
  16694. + M``$%0P"B``$%20"2``$%4`"&``$%5P`0``$%7@````$%90BJ``$`"0`2`^D`
  16695. + M`P5O!7D![``"!80`!``!!9,````!!:((V``!``D``P/I``$%J@`"!;0`"``!
  16696. + M!;P````!!<0(Z@`!``D``P/I``$%RP`"!=0`"``!!=L````!!>((_``"``D`
  16697. + M30/I``(%Z@7Y``P&"`$$``$&&`$```$&*`#(``$&-@"\``$&1`"H``$&4`"D
  16698. + M``$&7`!^``$&:@!Z``$&>`!2``$&A0!.``$&D@````$&H`````$`@0`$`^H`
  16699. + M````!JX);0`#``D`'@/I``($$@:W``0&Q@!4``$&U0!4``$&Y`````$&\```
  16700. + M``$`@0`%`^H````!!OP````!`($`!`/K````!`<'``P``0#E``@``0#9``0`
  16701. + M`0<1`````0<<";H``0`)`!8#Z0`#!6\%>0'L``0')`!0``$'*P!,``$',@`$
  16702. + M``$'.P````$'1`GL``(`"0!B`^D``P"B`,(`\@`(!TP!@``!!U8!@``!!7H!
  16703. + M3``!!V`!2``!!7`!+``!!VH!*``!!W0`,``!!W\````!`($``@/K``````>*
  16704. + M"H```0`)`!H#Z0`%`+@`R0>1!YT![``"!Z0`"``!!ZL````!![(*OP`!``D`
  16705. + M!P/I``$'N0`"!\,`#``!!\H````!!]$*U0`"``D`4@/I``8'W0?G!^X']@@!
  16706. + M`>P`!`@,`0X``0@3`0H``0@:``@``0@H`````0"!``P#Z@`````(-@MU``$`
  16707. + M"0`P`^D``@?N"$0`!@A/`'@``0A;`'0``0>2`"@``0AG`"```0@"``0``0AS
  16708. + M`````0A]"[X``@`)``L#Z0````8(@P`D``$(C0`D``$(EP`6``$(H0`2``$(
  16709. + MJP`$``$(M0````$`@0`)`^H````!"+\`!``!",P+Z@`!``D`*@/I``8`P@$@
  16710. + M"-8`N`#)`>P``@C?``P``0*G`````0CI#$```P`)`"P#Z0`""/$(^0`!"0``
  16711. + M+@`!`($`!P/J``````"!``$#ZP`````)"`R=``$`"0`V`^D`!@$@`>P#M@=+
  16712. + M`,(`R0`""1$`9``!"1D`8``!"2$-`P`"``D"&@/I`!4%>0#9`.4'!P'L!6\'
  16713. + M<P#R`+@`50)+"2<%!@47`,D`P@"B!Q$)+P02!OP`!`DY!]0``0E%!\(``0E1
  16714. + M!S8``0E7!S(``0"!`!4#Z@`````)70_\``(`"0`)`^D````$"6,`%@`!"6T`
  16715. + M$@`!"7<`!``!"8$````!`($`"0/J``````F+$"<``P`)`*D#Z0`-"94$'0F<
  16716. + M":0)KPG$"=,&=P9#!!8&D08G!@<`%`GE`IH``0GW`IH``0H)`EP``0H8`EP`
  16717. + M`0HG`EH``0HR`EH``0'M`E(``0H]`E(``0I'`D0``0I/`D```04'`>H``0I7
  16718. + M`>8``048`=```0IH`<P``0IW`;8``0J'`;(``0),`0P``0J7`0@``0JF`"@`
  16719. + M`0JM`"0``0"!``H#Z@``````@0!$`^L````#`EL!"``!`FD!!``!`A``!``!
  16720. + M"K0170`#``D"'0/I`!4#\0J["+\*P0K+"M,*W00&"N4`R0H(!N,&0P:1"O0*
  16721. + M^@L$`*(+#`#R!!8``PL6`WH``0L>`'@``0LL`'@``0"!`"P#Z@``````@0`(
  16722. + M`^L````(!($`'``!"SH`&``!"$0`%``!`3P`$``!!K<`#``!"T,`"``!"TT`
  16723. + M!``!!!(````!"UD4>P`!``D`!`/I`````@MA``0``0MH`````0MO%(<``@`)
  16724. + M`#X#Z0````0+?`!^``$+B`!Z``$+E``$``$+I@````$`@0`!`^L````!"[@`
  16725. + M```!"\D4U@`!``D``@/I````!`O/``0``0O8``0``0OA`````0OI`````0OQ
  16726. + M%.```0`)`!4#Z0`'"OH&=PM-">0&Q0<J!TL`!@OY`$P``0P``$@``0F=`"8`
  16727. + M`0P'`"(``0P/`````0P;`````0PG%2H``0`)`!,#Z0`"!7D![``"#"\`#``!
  16728. + M`[<````!##854P`"``D`F`/I``H,/`"X`,(+DP2R`2``R0Q,`>P$$@`"#%8"
  16729. + M2``!#%P````!`($``@/J``````QD%D0``P`)!6@#Z0`*#&L*P0K3!^X*W0<C
  16730. + M#'0,50DG!<L`$`Q[%9(``0R#%9(``0R+%80``0R3%8```0R;$/0``0RB$/``
  16731. + M`0RI$)0``0RR$)```0R[#I@``0S##I0``0?W#C```0S+#BP``0S6#38``0SA
  16732. + M#38``0SL#,8``0SS#,8``0"!`$@#Z@````,'W0`8``$,^@`4``$'YP`,``$`
  16733. + M@03V`^L`````#00<K``"``D!G`/I``L$%@=S`/(![`"B`,(!(`4&"G8`N`#)
  16734. + M``8*Y@7L``$-#P7,``$,/056``$-'05(``$-+0+8``$-.P+0``$`@0`(`^H`
  16735. + M````#4D>O``!``D`)P/I``0`P@$@`,D![``"#5(`"``!#5H````!#6(?!``!
  16736. + M``D`#@/I````!`UJ`"H``0UR`!P``0UZ``P``0V!`````0V('QH``0`)`!`#
  16737. + MZ0````(-CP`,``$-E0````$-FQ\R``(`"0!U`^D`!@#"`2``R0M[`J8(3@`$
  16738. + M`K$!+@`!#:4!)@`!`KL`&``!#:\````!`($`0`/K`````0+&`````0VZ']P`
  16739. + M`0`)``4#Z0````(-P@`(``$-R0````$-T!_I``$`"0`,`^D``@.V`>P``@W<
  16740. + M``@``0WG`````0WR(`H``0`)``T#Z0`#`[8![`N3``(-^P`(``$.`P````$.
  16741. + M"R`T``$`"0`0`^D``0#"``0.%``L``$.&P`@``$.(@`,``$.*@````$.,B!4
  16742. + M``$`"0`-`^D``@.V`>P``@X[``0``0Y#`````0Y+('8``0`)``\#Z0`%`,(%
  16743. + M!@47"G8"AP`"#E8`!``!#F`````!#FH@L``!``D`*`/I``0!(`#"`+@`R0`"
  16744. + M#G(`!``!#GD````!#H`@^0`#``D!EP/I``(,B@?N``(.BP`2``$.E0````$`
  16745. + M@0!Y`^H``````($`"0/K``````Z?(WP``0`)`!8#Z0`%`,(!(`TL`>P`R0`"
  16746. + M#JH`"``!#K0````!#KXCN@`!``D`U0/I``H`P@$@`*(`J`L,!!(%@P.V`,D`
  16747. + M\@`$#L4#.``!#LL#'``!#M$`(@`!#M@````!#M\DW0`!``D``@/I````!`[E
  16748. + M``0``0[N``0``0[W`````0[_`````0\').<``0`)``X#Z0`'!@<%!@47"T,&
  16749. + M)PM-`>P``@\/``0``0\6`````0\=)2X``0`)``\#Z0`"#%4![``$#R4`,@`!
  16750. + M#RP`*@`!#S,`"``!#SP````!#T4E4@`!``D`(P/I``,`P@5Y`>P`!`31`((`
  16751. + M`0]-`'8``0]4``P``0]=`````0]F)9```0`)``P#Z0`!"`$``@>>``0``0]M
  16752. + M`````0]S):P``0`)`!T#Z0`#`/(`R0'L``(*P@`$``$/?`````$/AB7C``$`
  16753. + M"0`3`^D``P"X`>P`R0`"#XT`"``!#Y,````!#YDF$``"``D`)`/I``0#F@!5
  16754. + M!!(![``"#Z(`!``!`&D````!`($``@/J``````^J)F```0`)``8#Z0`"#[$!
  16755. + M[``"#[H`!``!#\$````!#\@F>P`!``D`#P/I``0`N`#)"Y,![``"#]``"``!
  16756. + M#]<````!#]XFK``!``D`'`/I``(%>0'L``0/Y@!<``$/[0!.``$/]``.``$/
  16757. + M_0````$0!B;>``$`"0`<`^D``P#"!7D![``$#'4`9``!$`T`6``!$!,`#``!
  16758. + M$!L````!$",G%0`!``D`@0/I``L&!P4&!1<+0PIV!EL&)PM-`,(%>0'L``(0
  16759. + M+``8``$0-`````$0/"?K``$`"0`@`^D``P#"!7D![``!$$0````!$$LH)@`"
  16760. + M``D```/I``````"!`-X#Z@````($QP-R``$$N@+6``$05RD[``(`"0!%`^D`
  16761. + M`@#)!+(`!`"Y`/X``1!?`/X``0$A``0``1!H`````0"!``$#ZP````$`P@``
  16762. + M``$0=RF<``$`"0`%`^D`!!!^`?8,#@'L``(0A0````$0C`````$0DRG!``$`
  16763. + M"0!9`^D`!@FD`DL!XP'L`,(+!``"$'\`[@`!$)H`Y@`!$*`J2@`#``D`0P/I
  16764. + M``@0JP06$+<`50:W!!()+P"B``@)L`"R``$0Q`"R``$)U`!(``$0V`!(``$)
  16765. + MI0`B``$0Z0`>``$%)P`$``$0]`````$`@0`&`^H``````($`#P/K````!@%@
  16766. + M`#@``0G$`#0``0%4`!0``0$P``@``0'C``0``0%)`````1$!*N,``0`)`"\#
  16767. + MZ0`!$*L`!`7K`)0``1$+`)```07Z`!P``1$:`````1$H*R,``0`)`!0#Z0`$
  16768. + 6`+@+DP#)`>P``A$P``@``1$W`````1P`
  16769. + `
  16770. + end
  16771. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/unlink.c emacs-18.59/amiga/unix/src/unlink.c
  16772. *** /src/baseline/emacs-18.59/amiga/unix/src/unlink.c    Thu Jan  1 00:00:00 1970
  16773. --- emacs-18.59/amiga/unix/src/unlink.c    Wed Dec  2 20:19:44 1992
  16774. ***************
  16775. *** 0 ****
  16776. --- 1,40 ----
  16777. + #include "amiga.h"
  16778. + #include "files.h"
  16779. + #include <amiga/ioctl.h>
  16780. + static int delete_open_file(char *name)
  16781. + {
  16782. +   BPTR nlock = Lock(name, SHARED_LOCK);
  16783. +   if (nlock)
  16784. +     {
  16785. +       int err = errno, i;
  16786. +       i = _last_fd();
  16787. +       while (--i >= 0)
  16788. +     if (ioctl(i, _AMIGA_DELETE_IF_ME, &nlock) == 0)
  16789. +       {
  16790. +         errno = err;
  16791. +         return 0;
  16792. +       } 
  16793. +       UnLock(nlock);
  16794. +    }
  16795. +   return -1;
  16796. + }
  16797. + int unlink(const char *file)
  16798. + {
  16799. +   long err;
  16800. +   chkabort();
  16801. +   if (DeleteFile(file)) return 0;
  16802. +   err = IoErr();
  16803. +   if (err == ERROR_DELETE_PROTECTED)
  16804. +     {
  16805. +       if (SetProtection(file, 0) && DeleteFile(file)) return 0;
  16806. +       err = IoErr();
  16807. +     }
  16808. +   if (err == ERROR_OBJECT_IN_USE && delete_open_file(file) == 0) return 0;
  16809. +   errno = convert_oserr(err);
  16810. +   return -1;
  16811. + }
  16812. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/utime.c emacs-18.59/amiga/unix/src/utime.c
  16813. *** /src/baseline/emacs-18.59/amiga/unix/src/utime.c    Thu Jan  1 00:00:00 1970
  16814. --- emacs-18.59/amiga/unix/src/utime.c    Mon Aug 24 23:02:00 1992
  16815. ***************
  16816. *** 0 ****
  16817. --- 1,22 ----
  16818. + #include "amiga.h"
  16819. + #include "timeconvert.h"
  16820. + #include <stdlib.h>
  16821. + #include <time.h>
  16822. + #include <utime.h>
  16823. + int utime(char *file, struct utimbuf *times)
  16824. + {
  16825. +   struct DateStamp date;
  16826. +   time_t mtime;
  16827. +   chkabort();
  16828. +   if (times) mtime = times->modtime;
  16829. +   else mtime = time(0);
  16830. +   if (mtime == -1) return 0;
  16831. +   _gmt2amiga(mtime, &date);
  16832. +   if (SetFileDate(file, &date)) return 0;
  16833. +   ERROR;
  16834. + }
  16835. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/wait4.c emacs-18.59/amiga/unix/src/wait4.c
  16836. *** /src/baseline/emacs-18.59/amiga/unix/src/wait4.c    Thu Jan  1 00:00:00 1970
  16837. --- emacs-18.59/amiga/unix/src/wait4.c    Sat Aug 15 13:45:34 1992
  16838. ***************
  16839. *** 0 ****
  16840. --- 1,57 ----
  16841. + #include "amiga.h"
  16842. + #include "signals.h"
  16843. + #include "processes.h"
  16844. + #include <sys/wait.h>
  16845. + int wait4(int pid, int *statusp, int options, struct rusage *rusage)
  16846. + {
  16847. +   struct process *p;
  16848. +   do {
  16849. +     int seen = FALSE;
  16850. +     scan_processes(p)
  16851. +       if (pid == 0 || p->pid == pid)
  16852. +     {
  16853. +       seen = TRUE;
  16854. +       if (p->status == exited)
  16855. +         {
  16856. +           int pid = p->pid;
  16857. +           if (statusp) *statusp = p->rc;
  16858. +           _free_entry(p);
  16859. +           return pid;
  16860. +         }
  16861. +     }
  16862. +     if (options & WNOHANG) return 0;
  16863. +     if (!seen)
  16864. +       {
  16865. +     errno = ECHILD;
  16866. +     return -1;
  16867. +       }
  16868. +     _handle_signals(_wait_signals(0));
  16869. +   } while (1);
  16870. + }
  16871. + int wait3(int *statusp, int options, struct rusage *rusage)
  16872. + {
  16873. +   return wait4(0, statusp, options, rusage);
  16874. + }
  16875. + int wait(int *statusp)
  16876. + {
  16877. +   return wait4(0, statusp, 0, NULL);
  16878. + }
  16879. + int waitpid(int pid, int *statusp, int options)
  16880. + {
  16881. +   /* We have no process groups, so : 
  16882. +        Our process group encompasses all our children
  16883. +        Each child is a process group unto itself
  16884. +      This is somewhat contradictory ... Should this be changed ? */
  16885. +   if (pid == -1) pid = 0;
  16886. +   if (pid < 0) pid = -pid;
  16887. +   return wait4(pid, statusp, options, NULL);
  16888. + }
  16889. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/write.c emacs-18.59/amiga/unix/src/write.c
  16890. *** /src/baseline/emacs-18.59/amiga/unix/src/write.c    Thu Jan  1 00:00:00 1970
  16891. --- emacs-18.59/amiga/unix/src/write.c    Fri Dec  4 22:15:36 1992
  16892. ***************
  16893. *** 0 ****
  16894. --- 1,29 ----
  16895. + #include "amiga.h"
  16896. + #include "files.h"
  16897. + #include <fcntl.h>
  16898. + #include <unistd.h>
  16899. + #undef write
  16900. + int __write(int fd, const void *buffer, unsigned int length)
  16901. + {
  16902. +   struct fileinfo *fi;
  16903. +   chkabort();
  16904. +   if (fi = _find_fd(fd))
  16905. +     {
  16906. +       if (fi->flags & FI_WRITE)
  16907. +     {
  16908. +       if (fi->flags & O_APPEND) fi->lseek(fi->userinfo, 0, SEEK_END);
  16909. +       return fi->write(fi->userinfo, buffer, length);
  16910. +     }
  16911. +       errno = EACCES;
  16912. +     }
  16913. +   return -1;
  16914. + }
  16915. + int write(int fd, const void *buffer, unsigned int length)
  16916. + {
  16917. +   return __write(fd, buffer, length);
  16918. + }
  16919. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/africa emacs-18.59/amiga/unix/src/zoneinfo/datfiles/africa
  16920. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/africa    Thu Jan  1 00:00:00 1970
  16921. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/africa    Sat Aug  1 14:24:06 1992
  16922. ***************
  16923. *** 0 ****
  16924. --- 1,43 ----
  16925. + # @(#)africa    4.3
  16926. + ###############################################################################
  16927. + # Egypt
  16928. + # From Bob Devine (January 28, 1988):
  16929. + # Egypt: DST from first day of May to first of October (ending may
  16930. + # also be on Sept 30th not 31st -- you might want to ask one of the
  16931. + # soc.* groups, you might hit someone who could ask an embassy).
  16932. + # DST since 1960 except for 1981-82.
  16933. + # From U. S. Naval Observatory (January 19, 1989):
  16934. + # EGYPT               2 H  AHEAD OF UTC
  16935. + # EGYPT               3 H  AHEAD OF UTC  MAY 17 - SEP 30 (AFTER
  16936. + # EGYPT                                  RAMADAN)
  16937. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  16938. + Rule    Egypt    1960    max    -    May    1    2:00    1:00    " DST"
  16939. + Rule    Egypt    1960    max    -    Oct    1    2:00    0    -
  16940. + # Zone    NAME    GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  16941. + Zone    Egypt    2:00    Egypt        EET%s    1981
  16942. +         2:00    -        EET    1983
  16943. +         2:00    Egypt        EET%s
  16944. + ###############################################################################
  16945. + # Libya
  16946. + # From Bob Devine (January 28 1988):
  16947. + # Libya: Since 1982 April 1st to September 30th (?)
  16948. + # From U. S. Naval Observatory (January 19, 1989):
  16949. + # LIBYAN ARAB         1 H  AHEAD OF UTC  JAMAHIRIYA/LIBYA
  16950. + # LIBYAN ARAB         2 H  AHEAD OF UTC  APR 1 - SEP 30 JAMAHIRIYA/LIBYA
  16951. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  16952. + Rule    Libya    1982    max    -    Apr    1    2:00    1:00    " DST"
  16953. + Rule    Libya    1982    max    -    Sep    30    2:00    0    -
  16954. + # Zone    NAME    GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  16955. + Zone    Libya    2:00    Libya        EET%s
  16956. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/antarctica emacs-18.59/amiga/unix/src/zoneinfo/datfiles/antarctica
  16957. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/antarctica    Thu Jan  1 00:00:00 1970
  16958. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/antarctica    Thu Jul 30 00:43:20 1992
  16959. ***************
  16960. *** 0 ****
  16961. --- 1,4 ----
  16962. + # @(#)antarctica    4.1
  16963. + # From Arthur David Olson (February 13, 1988):
  16964. + # No data available.
  16965. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/asia emacs-18.59/amiga/unix/src/zoneinfo/datfiles/asia
  16966. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/asia    Thu Jan  1 00:00:00 1970
  16967. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/asia    Sat Aug  1 14:24:28 1992
  16968. ***************
  16969. *** 0 ****
  16970. --- 1,262 ----
  16971. + # @(#)asia    7.1
  16972. + # From Guy Harris:
  16973. + # Incorporates data for Singapore from Robert Elz' asia 1.1, as well as
  16974. + # additional information from Tom Yap, Sun Microsystems Intercontinental
  16975. + # Technical Support (including a page from the Official Airline Guide -
  16976. + # Worldwide Edition).  The names for time zones are guesses.
  16977. + ###############################################################################
  16978. + # People's Republic of China
  16979. + # From Guy Harris:
  16980. + # People's Republic of China.  Yes, they really have only one time zone.
  16981. + # From Bob Devine (January 28, 1988):
  16982. + # No they don't.  See TIME mag, February 17, 1986 p.52.  Even though
  16983. + # China is across 4 physical time zones, before Feb 1, 1986 only the
  16984. + # Peking (Bejing) time zone was recognized.  Since that date, China
  16985. + # has two of 'em -- Peking's and Urumqi (named after the capital of
  16986. + # the Xinjiang Uighur Autonomous Region).  I don't know about DST for it.
  16987. + #
  16988. + # . . .I just deleted the DST table and this editor makes it too
  16989. + # painful to suck in another copy..  So, here is what I have for
  16990. + # DST start/end dates for Peking's time zone (info from AP):
  16991. + #
  16992. + #     1986 May 4 - Sept 14
  16993. + #     1987 mid-April - ??
  16994. + # From U. S. Naval Observatory (January 19, 1989):
  16995. + # CHINA               8 H  AHEAD OF UTC  ALL OF CHINA, INCL TAIWAN
  16996. + # CHINA               9 H  AHEAD OF UTC  APR 17 - SEP 10
  16997. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  16998. + Rule    PRC    1970    max    -    Apr    Sun<=14    2:00    1:00    D
  16999. + Rule    PRC    1970    max    -    Sep    Sun<=14    3:00    0    S
  17000. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17001. + Zone    PRC        8:00    PRC        C%sT
  17002. + ###############################################################################
  17003. + # Republic of China
  17004. + # From Guy Harris
  17005. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17006. + Zone    ROC        8:00    -        CST
  17007. + ###############################################################################
  17008. + # Hongkong
  17009. + # From Guy Harris
  17010. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17011. + Zone    Hongkong    8:00    -        HKT
  17012. + ###############################################################################
  17013. + # Iran
  17014. + # From Bob Devine (January 28, 1988):
  17015. + # Iran: Last Sunday in March to third (?) Sunday in
  17016. + # September.  Since the revolution, the official calendar is Monarchic
  17017. + # calendar; I have no idea what the correspondence between dates are.
  17018. + # From U. S. Naval Observatory (January 19, 1989):
  17019. + # IRAN                3.5H AHEAD OF UTC
  17020. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17021. + Rule    Iran    1988    max    -    Mar    lastSun    2:00    1:00    D
  17022. + Rule    Iran    1988    max    -    Sep    Sun>=15    2:00    0    S
  17023. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17024. + Zone    Iran        3:30    Iran        I%sT
  17025. + ###############################################################################
  17026. + # Israel
  17027. + # From U. S. Naval Observatory (January 19, 1989):
  17028. + # ISRAEL              2 H  AHEAD OF UTC
  17029. + # ISRAEL              3 H  AHEAD OF UTC  APR 10 - SEP 3
  17030. + # From Ephraim Silverberg (April 18, 1989):
  17031. + # Prior to 1989, the rules concerning Daylight Savings Time changed every
  17032. + # year; as information, regarding exact times and dates during this period,
  17033. + # is not readily available at the present time, the rules commence starting
  17034. + # with the year 1989.
  17035. + # From 1989 onwards the rules are as follows:
  17036. + #
  17037. + # 1. Daylight Savings Time commences midnight of the first Saturday night
  17038. + #    following the seven-day festival of Pesach (Passover).  The transition
  17039. + #    is from midnight Israel Standard Time to 1 a.m. Israel Daylight Savings
  17040. + #    time.  As the Pesach festival is dependent on the Lunar calendar (the
  17041. + #    first day is always on the 15th day of the month of Nisan), the rule
  17042. + #    changes every year on the Gregorian calendar.
  17043. + #
  17044. + # 2. Standard Time is reinstated on the Saturday night whereupon Jews
  17045. + #    following the Ashkenazi (European) rite begin to recite the Selichot
  17046. + #    (forgiveness) prayers prior to the Jewish Lunar New Year.  The transition
  17047. + #    is from midnight Israel Daylight Savings time to 11 p.m. Israel Standard
  17048. + #    Time.  The law (according to the Ashkenazi custom) concerning the
  17049. + #    commencement of the Selichot prayers is described in chapter 128, section
  17050. + #    5 of the "Code of Jewish Law," by Rabbi Shlomo Ganzfried (translated by
  17051. + #    Hyman E. Goldin):
  17052. + #
  17053. + #       Beginning with the Sunday [**] before Rosh Hashanah [***],
  17054. + #       we rise early for the service of Selichot (supplications for
  17055. + #       forgiveness).  If Rosh Hashanah occurs on Monday or Tuesday, we
  17056. + #       begin saying the Selichot from the Sunday of the preceding week.
  17057. + #
  17058. + #    This, too, varies from year to year on the Gregorian calendar and, thus,
  17059. + #    two explicit timezone rules are required for each Gregorian year.
  17060. + #
  17061. + #    [**] actually Saturday night as the Jewish day commences at nightfall.
  17062. + #    [***] the Jewish Lunar New Year.
  17063. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17064. + Rule    Zion    1989    only    -    Apr    30    0:00    1:00    D
  17065. + Rule    Zion    1989    only    -    Sep    24    0:00    0:00    S
  17066. + Rule    Zion    1990    only    -    Apr    22    0:00    1:00    D
  17067. + Rule    Zion    1990    only    -    Sep    16    0:00    0:00    S
  17068. + Rule    Zion    1991    only    -    Apr     7    0:00    1:00    D
  17069. + Rule    Zion    1991    only    -    Sep     1    0:00    0:00    S
  17070. + Rule    Zion    1992    only    -    Apr    26    0:00    1:00    D
  17071. + Rule    Zion    1992    only    -    Sep    20    0:00    0:00    S
  17072. + Rule    Zion    1993    only    -    Apr    18    0:00    1:00    D
  17073. + Rule    Zion    1993    only    -    Sep    12    0:00    0:00    S
  17074. + Rule    Zion    1994    only    -    Apr     3    0:00    1:00    D
  17075. + Rule    Zion    1994    only    -    Aug    28    0:00    0:00    S
  17076. + Rule    Zion    1995    only    -    Apr    23    0:00    1:00    D
  17077. + Rule    Zion    1995    only    -    Sep    17    0:00    0:00    S
  17078. + Rule    Zion    1996    only    -    Apr    14    0:00    1:00    D
  17079. + Rule    Zion    1996    only    -    Sep     8    0:00    0:00    S
  17080. + Rule    Zion    1997    only    -    May     4    0:00    1:00    D
  17081. + Rule    Zion    1997    only    -    Sep    28    0:00    0:00    S
  17082. + Rule    Zion    1998    only    -    Apr    19    0:00    1:00    D
  17083. + Rule    Zion    1998    only    -    Sep    13    0:00    0:00    S
  17084. + Rule    Zion    1999    only    -    Apr    11    0:00    1:00    D
  17085. + Rule    Zion    1999    only    -    Sep     5    0:00    0:00    S
  17086. + Rule    Zion    2000    only    -    Apr    30    0:00    1:00    D
  17087. + Rule    Zion    2000    only    -    Sep    24    0:00    0:00    S
  17088. + Rule    Zion    2001    only    -    Apr    15    0:00    1:00    D
  17089. + Rule    Zion    2001    only    -    Sep     9    0:00    0:00    S
  17090. + Rule    Zion    2002    only    -    Apr     7    0:00    1:00    D
  17091. + Rule    Zion    2002    only    -    Sep     1    0:00    0:00    S
  17092. + Rule    Zion    2003    only    -    Apr    27    0:00    1:00    D
  17093. + Rule    Zion    2003    only    -    Sep    21    0:00    0:00    S
  17094. + Rule    Zion    2004    only    -    Apr    18    0:00    1:00    D
  17095. + Rule    Zion    2004    only    -    Sep    12    0:00    0:00    S
  17096. + Rule    Zion    2005    only    -    May     1    0:00    1:00    D
  17097. + Rule    Zion    2005    only    -    Sep    25    0:00    0:00    S
  17098. + Rule    Zion    2006    only    -    Apr    23    0:00    1:00    D
  17099. + Rule    Zion    2006    only    -    Sep    17    0:00    0:00    S
  17100. + Rule    Zion    2007    only    -    Apr    15    0:00    1:00    D
  17101. + Rule    Zion    2007    only    -    Sep     9    0:00    0:00    S
  17102. + Rule    Zion    2008    only    -    Apr    27    0:00    1:00    D
  17103. + Rule    Zion    2008    only    -    Sep    21    0:00    0:00    S
  17104. + Rule    Zion    2009    only    -    Apr    19    0:00    1:00    D
  17105. + Rule    Zion    2009    only    -    Sep    13    0:00    0:00    S
  17106. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17107. + Zone    Israel        2:00    Zion        I%sT
  17108. + # The following is a chart of the day of the week and Gregorian date of
  17109. + # the first day of Pesach and the first day of Rosh Hashanah for the years
  17110. + # 1989 through 2009 inclusive.
  17111. + #
  17112. + # First Day of Passover
  17113. + # ---------------------
  17114. + # Gregorian Year    Day of Week    Month        Day
  17115. + # --------------    -----------    -----        ---
  17116. + #    1989        Thursday    April        20
  17117. + #    1990        Tuesday        April        10
  17118. + #    1991        Saturday    March        30
  17119. + #    1992        Saturday    April        18
  17120. + #    1993        Tuesday        April         6
  17121. + #    1994        Sunday        March        27
  17122. + #    1995        Saturday    April        15
  17123. + #    1996        Thursday    April         4
  17124. + #    1997        Tuesday        April        22
  17125. + #    1998        Saturday    April        11
  17126. + #    1999        Thursday    April         1
  17127. + #    2000        Thursday    April        20
  17128. + #    2001        Sunday        April         8
  17129. + #    2002        Thursday    March        28
  17130. + #    2003        Thursday    April        17
  17131. + #    2004        Tuesday        April         6
  17132. + #    2005        Sunday        April        24
  17133. + #    2006        Thursday    April        13
  17134. + #    2007        Tuesday        April         3
  17135. + #    2008        Sunday        April        20
  17136. + #    2009        Thursday    April         9
  17137. + #
  17138. + # First Day of Rosh Hashanah
  17139. + # --------------------------
  17140. + # Gregorian Year    Day of Week    Month        Day
  17141. + # --------------    -----------    -----        ---
  17142. + #    1989        Saturday    September    30
  17143. + #    1990        Thursday    September    20
  17144. + #    1991        Monday        September     9
  17145. + #    1992        Monday        September    28
  17146. + #    1993        Thursday    September    16
  17147. + #    1994        Tuesday        September     6
  17148. + #    1995        Monday        September    25
  17149. + #    1996        Saturday    September    14
  17150. + #    1997        Thursday    October         2
  17151. + #    1998        Monday        September    21
  17152. + #    1999        Saturday    September    11
  17153. + #    2000        Saturday    September    30
  17154. + #    2001        Tuesday        September    18
  17155. + #    2002        Saturday    September     7
  17156. + #    2003        Saturday    September    27
  17157. + #    2004        Thursday    September    16
  17158. + #    2005        Tuesday        October         4
  17159. + #    2006        Saturday    September    23
  17160. + #    2007        Thursday    September    13
  17161. + #    2008        Tuesday        September    30
  17162. + #    2009        Saturday    September    19
  17163. + ###############################################################################
  17164. + # Japan
  17165. + # From Guy Harris
  17166. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17167. + Zone    Japan        9:00    -        JST
  17168. + ###############################################################################
  17169. + # Republic of Korea
  17170. + # From Guy Harris:
  17171. + # According to someone at the Korean Times in San Francisco,
  17172. + # Daylight Savings Time was not observed until 1987.  He did not know
  17173. + # at what time of day DST starts or ends.
  17174. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17175. + Rule    ROK    1987    max    -    May    Sun<=14    2:00    1:00    D
  17176. + Rule    ROK    1987    max    -    Oct    Sun<=14    3:00    0    S
  17177. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17178. + Zone    ROK        9:00    ROK        K%sT
  17179. + ###############################################################################
  17180. + # Lebanon
  17181. + # From Bob Devine (January 28, 1988):
  17182. + # Lebanon: They do have DST but I don't know the dates.
  17183. + ###############################################################################
  17184. + # Singapore
  17185. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17186. + Zone    Singapore    8:00    -        SST
  17187. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/australasia emacs-18.59/amiga/unix/src/zoneinfo/datfiles/australasia
  17188. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/australasia    Thu Jan  1 00:00:00 1970
  17189. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/australasia    Sat Aug  1 14:24:04 1992
  17190. ***************
  17191. *** 0 ****
  17192. --- 1,113 ----
  17193. + # @(#)australasia    4.4
  17194. + # Incorporates updates for Australia from Robert Elz' australia 1.1
  17195. + # and further updates from the Australian consulate.
  17196. + ###############################################################################
  17197. + # Australia
  17198. + # Australian Data (for states with DST), standard rules
  17199. + # Includes shift in 1987 to follow Vic/NSW rules for ending DST,
  17200. + # and shift in 1986 to start DST earlier.
  17201. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17202. + Rule    Oz    1971    1985    -    Oct    lastSun    2:00    1:00    -
  17203. + Rule    Oz    1986    max    -    Oct    Sun<=24    2:00    1:00    -
  17204. + Rule    Oz    1972    only    -    Feb    27    3:00    0    -
  17205. + Rule    Oz    1973    1986    -    Mar    Sun>=1    3:00    0    -
  17206. + Rule    Oz    1987    max    -    Mar    Sun<=21    3:00    0    -
  17207. + # Zone    NAME            GMTOFF    RULES    FORMAT    [UNTIL]
  17208. + Zone    Australia/Tasmania    10:00    Oz    EST
  17209. + Zone    Australia/Queensland    10:00    -    EST    # No DST here
  17210. + Zone    Australia/North        9:30    -    CST    # No DST here
  17211. + Zone    Australia/West        8:00    -    WST    # No DST here
  17212. + Zone    Australia/South        9:30    Oz    CST
  17213. + # Victoria jumped to a later ending date for DST in 1986 rather than 1987.
  17214. + Zone    Australia/Victoria    10:00    Oz    EST    1985 Oct lastSun 2:00
  17215. +                 10:00    1:00    EST    1986 Mar Sun<=21 3:00
  17216. +                 10:00    Oz    EST
  17217. + # New South Wales and subjurisdictions have their own ideas of a fun time.
  17218. + # Based on law library research by John Mackin (john@basser.cs.su.oz),
  17219. + # who notes:
  17220. + #    In Australia, time is not legislated federally, but rather by the
  17221. + #    individual states.  Thus, while such terms as ``Eastern Standard Time''
  17222. + #    [I mean, of course, Australian EST, not any other kind] are in common
  17223. + #    use, _they have NO REAL MEANING_, as they are not defined in the
  17224. + #    legislation.  This is very important to understand. 
  17225. + #    I have researched New South Wales time only; . . .I hope that perhaps a
  17226. + #    resident of each state could be found to do it for their own state. 
  17227. + #    (And I can guarantee that Victoria and NSW are different, so the link
  17228. + #    between them in the current australasia file must be broken.)
  17229. + # From Robert Elz (May 5, 1989):
  17230. + #
  17231. + # From next year (1990) NSW will revert to ending DST on the 1st
  17232. + # Sunday in March (rather than the third, which it appears will
  17233. + # continue to be what everyone else uses).
  17234. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17235. + Rule    NSW    1971    1985    -    Oct    lastSun    2:00    1:00    -
  17236. + Rule    NSW    1972    only    -    Feb    lastSun    3:00    0    -
  17237. + Rule    NSW    1973    1981    -    Mar    Sun>=1    3:00    0    -
  17238. + Rule    NSW    1982    only    -    Apr    4    3:00    0    -
  17239. + Rule    NSW    1983    1985    -    Mar    Sun>=1    3:00    0    -
  17240. + Rule    NSW    1986    only    -    Mar    16    3:00    0    -
  17241. + Rule    NSW    1986    only    -    Oct    19    2:00    1:00    -
  17242. + Rule    NSW    1987    only    -    Mar    15    3:00    0    -
  17243. + Rule    NSW    1987    max    -    Oct    lastSun    2:00    1:00    -
  17244. + Rule    NSW    1988    1989    -    Mar    Sun<=21    3:00    0    -
  17245. + Rule    NSW    1990    max    -    Mar    Sun>=1    3:00    0    -
  17246. + # Zone    NAME            GMTOFF    RULES    FORMAT    [UNTIL]
  17247. + Zone    Australia/NSW        10:00    NSW    EST
  17248. + # `Broken Hill' means the County of Yancowinna. [john@basser.cs.su.oz.au,1/4/89]
  17249. + Zone    Australia/Yancowinna    9:30    NSW    ???
  17250. + Zone    Australia/LHI        10:30    NSW    ???
  17251. + # A footnote here:
  17252. + #
  17253. + #    . . .
  17254. + #    Date: Thu, j19 Feb 87 12:02:17 EST
  17255. + #    From: Bradley White <seismo!k.cs.cmu.edu!bww>
  17256. + #    . . .
  17257. + #    I am including a description of Australian time zones. . .
  17258. + #    this stuff is definitely accurate.
  17259. + #    . . .
  17260. + #    a) Australian Eastern Time: (EST = GMT+10:00, EDT = GMT+11:00)
  17261. + #    . . .
  17262. + #    Summer of 86/87 - present (current legislation):
  17263. + #        third Sun Oct 02:00 EST -> third [S]un Mar 02:00 EST
  17264. + #
  17265. + # If this turns out to be true, substitute Sun<=21 (third Sunday in October)
  17266. + # for Sun<=24 (next-to-last Sunday in October) above. . .some time before
  17267. + # October 1988, the first time it makes a difference.
  17268. + ###############################################################################
  17269. + # New Zealand
  17270. + # New Zealand, from Elz' asia 1.1
  17271. + # Elz says "no guarantees"
  17272. + # The 1989/90 rule may only last a year.  It is a trial that is
  17273. + # subject to Ministerial approval to be made permanent.
  17274. + # The termination of "daylight saving" may actually be second
  17275. + # to last Sunday in March.  Noone spoken to was very sure.
  17276. + # From U. S. Naval Observatory (January 19, 1989):
  17277. + # NEW ZEALAND        12 H  AHEAD OF UTC  (EXCLUDING CHATHAM ISLAND)
  17278. + # NEW ZEALAND        13 H  AHEAD OF UTC  OCT 30, '88-MAR 4, '89
  17279. + # NEW ZEALAND       12H45M AHEAD OF UTC  CHATHAM ISLAND
  17280. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17281. + Rule    NZ    1974    1988    -    Oct    lastSun    2:00    1:00    D
  17282. + Rule    NZ    1989    max    -    Oct    Sun>=8    2:00    1:00    D
  17283. + Rule    NZ    1975    1989    -    Mar    Sun>=1    3:00    0    S
  17284. + Rule    NZ    1990    max    -    Mar    Sun>=15    3:00    0    S
  17285. + # Zone    NAME            GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17286. + Zone    NZ            12:00    NZ        NZ%sT    # New Zealand
  17287. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/etcetera emacs-18.59/amiga/unix/src/zoneinfo/datfiles/etcetera
  17288. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/etcetera    Thu Jan  1 00:00:00 1970
  17289. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/etcetera    Sat Aug  1 14:24:06 1992
  17290. ***************
  17291. *** 0 ****
  17292. --- 1,55 ----
  17293. + # @(#)etcetera    4.4
  17294. + # All of these are set up just so people can "zic -l" to a timezone
  17295. + # that's right for their area, even if it doesn't have a name or dst rules
  17296. + # (half hour zones are too much to bother with -- when someone asks!)
  17297. + Zone    GMT        0    -    GMT
  17298. + Zone    GMT-12        -12    -    GMT-1200
  17299. + Zone    GMT-11        -11    -    GMT-1100
  17300. + Zone    GMT-10        -10    -    GMT-1000
  17301. + Zone    GMT-9        -9    -    GMT-0900
  17302. + Zone    GMT-8        -8    -    GMT-0800
  17303. + Zone    GMT-7        -7    -    GMT-0700
  17304. + Zone    GMT-6        -6    -    GMT-0600
  17305. + Zone    GMT-5        -5    -    GMT-0500
  17306. + Zone    GMT-4        -4    -    GMT-0400
  17307. + Zone    GMT-3        -3    -    GMT-0300
  17308. + Zone    GMT-2        -2    -    GMT-0200
  17309. + Zone    GMT-1        -1    -    GMT-0100
  17310. + Zone    GMT+1        1    -    GMT+0100
  17311. + Zone    GMT+2        2    -    GMT+0200
  17312. + Zone    GMT+3        3    -    GMT+0300
  17313. + Zone    GMT+4        4    -    GMT+0400
  17314. + Zone    GMT+5        5    -    GMT+0500
  17315. + Zone    GMT+6        6    -    GMT+0600
  17316. + Zone    GMT+7        7    -    GMT+0700
  17317. + Zone    GMT+8        8    -    GMT+0800
  17318. + Zone    GMT+9        9    -    GMT+0900
  17319. + Zone    GMT+10        10    -    GMT+1000
  17320. + Zone    GMT+11        11    -    GMT+1100
  17321. + Zone    GMT+12        12    -    GMT+1200
  17322. + Zone    GMT+13        13    -    GMT+1300    # GMT+12 with DST
  17323. + Link    GMT        UTC
  17324. + Link    GMT        UCT
  17325. + Link    GMT        Universal
  17326. + Link    GMT        Greenwich
  17327. + Link    GMT        Zulu
  17328. + Link    GMT        GMT-0
  17329. + Link    GMT        GMT+0
  17330. + Link    GMT        GMT0
  17331. + Link    GMT+1        GMT1
  17332. + Link    GMT+2        GMT2
  17333. + Link    GMT+3        GMT3
  17334. + Link    GMT+4        GMT4
  17335. + Link    GMT+5        GMT5
  17336. + Link    GMT+6        GMT6
  17337. + Link    GMT+7        GMT7
  17338. + Link    GMT+8        GMT8
  17339. + Link    GMT+9        GMT9
  17340. + Link    GMT+10        GMT10
  17341. + Link    GMT+11        GMT11
  17342. + Link    GMT+12        GMT12
  17343. + Link    GMT+13        GMT13
  17344. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/europe emacs-18.59/amiga/unix/src/zoneinfo/datfiles/europe
  17345. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/europe    Thu Jan  1 00:00:00 1970
  17346. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/europe    Sat Aug  1 14:24:08 1992
  17347. ***************
  17348. *** 0 ****
  17349. --- 1,224 ----
  17350. + # @(#)europe    4.10
  17351. + # International country codes are used to identify countries' rules and
  17352. + # zones
  17353. + #
  17354. + # This data is by no means authoritative; if you think you know better, go
  17355. + # ahead and edit the file (and please send any changes to
  17356. + # ado@ncifcrf.gov for general use in the future).
  17357. + ###############################################################################
  17358. + # United Kingdom
  17359. + # From Arthur David Olson (January 19, 1989):
  17360. + #
  17361. + # The starting and ending dates below (from which the rules are derived)
  17362. + # are from Whitaker's Almanack for 1987, page 146.
  17363. + # 1960 is the earliest year for which dates are given;
  17364. + # Whitaker's notes that British Summer Time (and, in some years, Double Summer
  17365. + # Time) was observed in earlier years but does not give start and end dates.
  17366. + #
  17367. + # A source at the British Information Office in New York avers that it's
  17368. + # known as "British" Summer Time in all parts of the United Kingdom.
  17369. + #    1960    April 10    October 2 (yes, 2, according to the almanac)
  17370. + #    1961    March 26    October 29
  17371. + #    1962    March 25    October 28
  17372. + #    1963    March 31    October 27
  17373. + #    1964    March 22    October 25
  17374. + #    1965    March 21    October 24
  17375. + #    1966    March 20    October 23
  17376. + #    1967    March 19    October 29
  17377. + #    1968    February 18    October 27
  17378. + # "British Standard Time, also one hour ahead of G. M. T., was kept between
  17379. + # 1968 Oct. 27-1971 Oct. 31."
  17380. + #    1972    March 19    October 29
  17381. + #    1973    March 18    October 28
  17382. + #    1974    March 17    October 27
  17383. + #    1975    March 16    October 26
  17384. + #    1976    March 21    October 24
  17385. + #    1977    March 20    October 23
  17386. + #    1978    March 19    October 29
  17387. + #    1979    March 18    October 28
  17388. + #    1980    March 16    October 26
  17389. + #    1981    March 29    October 25
  17390. + #    1982    March 28    October 24
  17391. + #    1983    March 27    October 23
  17392. + #    1984    March 25    October 28
  17393. + #    1985    March 31    October 27
  17394. + #    1986    March 30    October 26
  17395. + #    1987    March 29    October 25
  17396. + # From an Anonymous U. K. Donor (January 4, 1989):
  17397. + #
  17398. + # It is NOT possible to predict when [British Summer Time] will change
  17399. + # in a future year.
  17400. + # 
  17401. + # (The admiralty calculate when they think it should be (no more that a couple
  17402. + # of years in advance) and advise the government who then decide whether or 
  17403. + # not they will take the admiralty's advice)
  17404. + # 
  17405. + # ...the Gre[e]nwich...observatory...[was] very helpful.
  17406. + # 
  17407. + # I was not able to track down the Admiralty formula (I tried hard but failed)
  17408. + # ...
  17409. + # Date: 4 Jan 89 08:57:25 GMT (Wed)
  17410. + # From: Jonathan Leffler <nih-csl!uunet!mcvax!sphinx.co.uk!john>
  17411. + # ...
  17412. + # [British Summer Time] is fixed annually by Act of Parliament.
  17413. + # If you can predict what Parliament will do, you should be in
  17414. + # politics making a fortune, not computing.
  17415. + #
  17416. + # Summer time ends on Sunday 29 October 1989.
  17417. + # ...
  17418. + # Date: 5 Jan 89 09:50:38 GMT (Thu)
  17419. + # From: Peter Kendell <nih-csl!uunet!mcvax!tcom.stc.co.uk!pete>
  17420. + # ...
  17421. + # 
  17422. + # From my Collins Diary for 1989 - 
  17423. + # 
  17424. + # "At the time of going to press the Home Office was unable to confirm
  17425. + # the 1989 starting and finishing dates for BST*, but expressed the 
  17426. + # view that 26 March and 29 October were the likeliest dates to be
  17427. + # adopted"
  17428. + # 
  17429. + # *British Summer Time.
  17430. + # From an Anonymous U. K. Donor (January 5, 1989):
  17431. + #
  17432. + # . . .our government is seriously considering applying Double Summer Time -
  17433. + # putting the clocks forwards and back TWO hours for daylight saving time.
  17434. + # This is advocated to standardise time in the EEC - we're all supposed to
  17435. + # keep the same time and to change the clocks on the same dates in the future.
  17436. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17437. + # Historic starting rules
  17438. + Rule    GB-Eire    1960    only    -    Apr    10    1:00s    1:00    BST
  17439. + Rule    GB-Eire    1961    1963    -    Mar    lastSun    1:00s    1:00    BST
  17440. + Rule    GB-Eire    1964    1967    -    Mar    Sun>=19    1:00s    1:00    BST
  17441. + Rule    GB-Eire    1968    only    -    Feb    18    1:00s    1:00    BST
  17442. + Rule    GB-Eire    1972    1980    -    Mar    Sun>=16    1:00s    1:00    BST
  17443. + # Historic ending rules
  17444. + Rule    GB-Eire    1960    only    -    Oct    2    1:00s    0    GMT
  17445. + Rule    GB-Eire    1961    1967    -    Oct    Sun>=23    1:00s    0    GMT
  17446. + Rule    GB-Eire    1971    only    -    Oct    31    1:00s    0    GMT
  17447. + # Current rules
  17448. + Rule    GB-Eire    1981    max    -    Mar    lastSun    1:00s    1:00    BST
  17449. + Rule    GB-Eire    1972    max    -    Oct    Sun>=23    1:00s    0    GMT
  17450. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17451. + Zone    GB-Eire        0:00    GB-Eire        %s    1968 Oct 27 1:00s
  17452. +             1:00    -        BST    1971 Oct 31 1:00s
  17453. +             0:00    GB-Eire        %s
  17454. + ###############################################################################
  17455. + # Continental Europe
  17456. + # The use of 1986 as starting years below is conservative.
  17457. + Rule    W-Eur    1986    max    -    Mar    lastSun    1:00s    1:00    " DST"
  17458. + Rule    W-Eur    1986    max    -    Sep    lastSun    1:00s    0    -
  17459. + Rule    M-Eur    1986    max    -    Mar    lastSun    2:00s    1:00    " DST"
  17460. + Rule    M-Eur    1986    max    -    Sep    lastSun    2:00s    0    -
  17461. + Rule    E-Eur    1986    max    -    Mar    lastSun    3:00s    1:00    " DST"
  17462. + Rule    E-Eur    1986    max    -    Sep    lastSun    3:00s    0    -
  17463. + Rule    Turkey    1986    max    -    Mar    lastSun    1:00    1:00    " DST"
  17464. + Rule    Turkey    1986    max    -    Sep    lastSun    1:00    0    -
  17465. + Rule    W-SU    1986    max    -    Mar    lastSun    2:00s    1:00    " DST"
  17466. + Rule    W-SU    1986    max    -    Sep    lastSun    2:00s    0    -
  17467. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17468. + Zone    WET        0:00    W-Eur        WET%s
  17469. + Zone    Iceland        0:00    -        WET
  17470. + Zone    MET        1:00    M-Eur        MET%s
  17471. + Zone    Poland        1:00    W-Eur        MET%s
  17472. + Zone    EET        2:00    E-Eur        EET%s
  17473. + Zone    Turkey        3:00    Turkey        EET%s
  17474. + Zone    W-SU        3:00    M-Eur        ????
  17475. + # Tom Hoffman says that MET is also known as Central European Time
  17476. + Link    MET    CET
  17477. + ###############################################################################
  17478. + # One source shows that Bulgaria, Cyprus, Finland, and Greece observe DST from
  17479. + # the last Sunday in March to the last Sunday in September in 1986.
  17480. + # The source shows Romania changing a day later than everybody else.
  17481. + #
  17482. + # According to Bernard Sieloff's source, Poland is in the MET time zone but
  17483. + # uses the WE DST rules.  The Western USSR uses EET+1 and ME DST rules.
  17484. + # Bernard Sieloff's source claims Romania switches on the same day, but at
  17485. + # 00:00 standard time (i.e., 01:00 DST).  It also claims that Turkey
  17486. + # switches on the same day, but switches on at 01:00 standard time
  17487. + # and off at 00:00 standard time (i.e., 01:00 DST)
  17488. + # ...
  17489. + # Date: Wed, 28 Jan 87 16:56:27 -0100
  17490. + # From: seismo!mcvax!cgcha!wtho (Tom Hofmann)
  17491. + # Message-Id: <8701281556.AA22174@cgcha.uucp>
  17492. + # ...
  17493. + # 
  17494. + # ...the European time rules are...standardized since 1981, when
  17495. + # most European coun[tr]ies started DST.  Before that year, only
  17496. + # a few countries (UK, France, Italy) had DST, each according
  17497. + # to own national rules.  In 1981, however, DST started on
  17498. + # 'Apr firstSun', and not on 'Mar lastSun' as in the following
  17499. + # years...
  17500. + # But also since 1981 there are some more national exceptions 
  17501. + # than listed in 'europe': Switzerland, for example, joined DST 
  17502. + # one year later, Denmark ended DST on 'Oct 1' instead of 'Sep 
  17503. + # lastSun' in 1981---I don't know how they handle now.
  17504. + # 
  17505. + # Finally, DST ist always from 'Apr 1' to 'Oct 1' in the
  17506. + # Soviet Union (as far as I know).  
  17507. + # 
  17508. + # Tom Hofmann, Scientific Computer Center, CIBA-GEIGY AG,
  17509. + # 4002 Basle, Switzerland
  17510. + # UUCP: ...!mcvax!cernvax!cgcha!wtho
  17511. + # ...
  17512. + # Date: Wed, 4 Feb 87 22:35:22 +0100
  17513. + # From: seismo!mcvax!cwi.nl!dik (Dik T. Winter)
  17514. + # ...
  17515. + # 
  17516. + # The information from Tom Hofmann is (as far as I know) not entirely correct.
  17517. + # After a request from chongo at amdahl I tried to retrieve all information
  17518. + # about DST in Europe.  I was able to find all from about 1969.
  17519. + # 
  17520. + # ...standardization on DST in Europe started in about 1977 with switches on
  17521. + # first Sunday in April and last Sunday in September...
  17522. + # In 1981 UK joined Europe insofar that
  17523. + # the starting day for both shifted to last Sunday in March.  And from 1982
  17524. + # the whole of Europe used DST, with switch dates April 1 and October 1 in
  17525. + # the Sov[i]et Union.  In 1985 the SU reverted to standard Europe[a]n switch
  17526. + # dates...
  17527. + # 
  17528. + # It should also be remembered that time-zones are not constants; e.g.
  17529. + # Portugal switched in 1976 from MET (or CET) to WET with DST...
  17530. + # Note also that though there were rules for switch dates not
  17531. + # all countries abided to these dates, and many individual deviations
  17532. + # occurred, though not since 1982 I believe.  Another note: it is always
  17533. + # assumed that DST is 1 hour ahead of normal time, this need not be the
  17534. + # case; at least in the Netherlands there have been times when DST was 2 hours
  17535. + # in advance of normal time.
  17536. + # 
  17537. + # ...
  17538. + # dik t. winter, cwi, amsterdam, nederland
  17539. + # INTERNET   : dik@cwi.nl
  17540. + # BITNET/EARN: dik@mcvax
  17541. + # From Bob Devine (January 28, 1988):
  17542. + # ...
  17543. + # Greece: Last Sunday in April to last Sunday in September (iffy on dates).
  17544. + # Since 1978.  Change at midnight.
  17545. + # ...
  17546. + # Monaco: has same DST as France.
  17547. + # ...
  17548. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/factory emacs-18.59/amiga/unix/src/zoneinfo/datfiles/factory
  17549. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/factory    Thu Jan  1 00:00:00 1970
  17550. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/factory    Sat Aug  1 14:24:08 1992
  17551. ***************
  17552. *** 0 ****
  17553. --- 1,8 ----
  17554. + # @(#)factory    1.1
  17555. + # For companies who don't want to put time zone specification in
  17556. + # their installation procedures.  When users run date, they'll get the message.
  17557. + # Also useful for the "comp.sources" version.
  17558. + # Zone    NAME    GMTOFF    RULES    FORMAT
  17559. + Zone    Factory    0    - "Local time zone must be set--see zic manual page"
  17560. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/leapseconds emacs-18.59/amiga/unix/src/zoneinfo/datfiles/leapseconds
  17561. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/leapseconds    Thu Jan  1 00:00:00 1970
  17562. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/leapseconds    Sat Aug  1 14:24:10 1992
  17563. ***************
  17564. *** 0 ****
  17565. --- 1,28 ----
  17566. + # @(#)leapseconds    4.1
  17567. + # Allowance for leapseconds added to each timezone file.
  17568. + # The correction (+ or -) is made at the given time, so lines
  17569. + # will typically look like:
  17570. + #    Leap    YEAR    MON    DAY    23:59:60    +    R/S
  17571. + # or
  17572. + #    Leap    YEAR    MON    DAY    23:59:59    -    R/S
  17573. + # If the leapsecond is Rolling (R) the given time is local time
  17574. + # If the leapsecond is Stationary (S) the given time is GMT
  17575. + # Leap    YEAR    MONTH    DAY    HH:MM:SS    CORR    R/S
  17576. + Leap    1972    Jun    30    23:59:60    +    S
  17577. + Leap    1972    Dec    31    23:59:60    +    S
  17578. + Leap    1973    Dec    31    23:59:60    +    S
  17579. + Leap    1974    Dec    31    23:59:60    +    S
  17580. + Leap    1975    Dec    31    23:59:60    +    S
  17581. + Leap    1976    Dec    31    23:59:60    +    S
  17582. + Leap    1977    Dec    31    23:59:60    +    S
  17583. + Leap    1978    Dec    31    23:59:60    +    S
  17584. + Leap    1979    Dec    31    23:59:60    +    S
  17585. + Leap    1981    Jun    30    23:59:60    +    S
  17586. + Leap    1982    Jun    30    23:59:60    +    S
  17587. + Leap    1983    Jun    30    23:59:60    +    S
  17588. + Leap    1985    Jun    30    23:59:60    +    S
  17589. + Leap    1987    Dec    31    23:59:60    +    S
  17590. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/northamerica emacs-18.59/amiga/unix/src/zoneinfo/datfiles/northamerica
  17591. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/northamerica    Thu Jan  1 00:00:00 1970
  17592. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/northamerica    Sat Aug  1 14:24:12 1992
  17593. ***************
  17594. *** 0 ****
  17595. --- 1,321 ----
  17596. + # @(#)northamerica    4.8
  17597. + ###############################################################################
  17598. + # United States
  17599. + # From Arthur David Olson:
  17600. + # US Daylight Saving Time ended on the last Sunday of *October* in 1974.
  17601. + # See, for example, the front page of the Saturday, October 26, 1974
  17602. + # and Sunday, October 27, 1974 editions of the Washington Post.
  17603. + # From seismo!munnari!kre:
  17604. + # I recall also being told by someone once that Canada didn't have
  17605. + # the DST variations in 74/75 that the US did, but I am not nearly
  17606. + # sure enough of this to add anything.
  17607. + # From Arthur David Olson:
  17608. + # The above has been confirmed by Bob Devine; we'll go with it here.
  17609. + # From Arthur David Olson:
  17610. + # Before the Uniform Time Act of 1966 took effect in 1967, observance of
  17611. + # Daylight Saving Time in the US was by local option, except during wartime.
  17612. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17613. + Rule    US    1918    1919    -    Mar    lastSun    2:00    1:00    D
  17614. + Rule    US    1918    1919    -    Oct    lastSun    2:00    0    S
  17615. + Rule    US    1942    only    -    Feb    9    2:00    1:00    W # War
  17616. + Rule    US    1945    only    -    Sep    30    2:00    0    S
  17617. + Rule    US    1967    max    -    Oct    lastSun    2:00    0    S
  17618. + Rule    US    1967    1973    -    Apr    lastSun    2:00    1:00    D
  17619. + Rule    US    1974    only    -    Jan    6    2:00    1:00    D
  17620. + Rule    US    1975    only    -    Feb    23    2:00    1:00    D
  17621. + Rule    US    1976    1986    -    Apr    lastSun    2:00    1:00    D
  17622. + Rule    US    1987    max    -    Apr    Sun>=1    2:00    1:00    D
  17623. + # From Bob Devine (January 28, 1988):
  17624. + # ...Alaska (and Hawaii) had the timezone names changed in 1967.
  17625. + #    old                         new
  17626. + #    Pacific Standard Time(PST)  -same-
  17627. + #    Yukon Standard Time(YST)    -same-
  17628. + #    Central Alaska S.T. (CAT)   Alaska-Hawaii St[an]dard Time (AHST)
  17629. + #    Nome Standard Time (NT)     Bering Standard Time (BST)
  17630. + # 
  17631. + # ...Alaska's timezone lines were redrawn in 1983 to give only 2 tz.
  17632. + #    The YST zone now covers nearly all of the state, AHST just part
  17633. + #    of the Aleutian islands.   No DST.
  17634. + # From U. S. Naval Observatory (January 19, 1989):
  17635. + # USA  EASTERN       5 H  BEHIND UTC    NEW YORK, WASHINGTON
  17636. + # USA  EASTERN       4 H  BEHIND UTC    APR 3 - OCT 30
  17637. + # USA  CENTRAL       6 H  BEHIND UTC    CHICAGO, HOUSTON
  17638. + # USA  CENTRAL       5 H  BEHIND UTC    APR 3 - OCT 30
  17639. + # USA  MOUNTAIN      7 H  BEHIND UTC    DENVER
  17640. + # USA  MOUNTAIN      6 H  BEHIND UTC    APR 3 - OCT 30
  17641. + # USA  PACIFIC       8 H  BEHIND UTC    L.A., SAN FRANCISCO
  17642. + # USA  PACIFIC       7 H  BEHIND UTC    APR 3 - OCT 30
  17643. + # USA  ALASKA STD    9 H  BEHIND UTC    MOST OF ALASKA     (AKST)
  17644. + # USA  ALASKA STD    8 H  BEHIND UTC    APR 3 - OCT 30 (AKDT)
  17645. + # USA  ALEUTIAN     10 H  BEHIND UTC    ISLANDS WEST OF 170W
  17646. + # USA  - " -         9 H  BEHIND UTC    APR 3 - OCT 30
  17647. + # USA  HAWAII       10 H  BEHIND UTC
  17648. + # USA  BERING       11 H  BEHIND UTC    SAMOA, MIDWAY
  17649. + # From Arthur David Olson (January 21, 1989):
  17650. + # The above dates are for 1988.
  17651. + # Note the "AKST" and "AKDT" abbreviations, the claim that there's
  17652. + # no DST in Samoa, and the claim that there is DST in Alaska and the
  17653. + # Aleutians.
  17654. + # From Arthur David Olson (February 13, 1988):
  17655. + # Legal standard time zone names, from United States Code (1982 Edition and
  17656. + # Supplement III), Title 15, Chapter 6, Section 260 and forward.  First, names
  17657. + # up to April 1, 1967 (when most provisions of the Uniform Time Act of 1966
  17658. + # took effect), as explained in sections 263 and 261:
  17659. + #    (none)
  17660. + #    United States standard eastern time
  17661. + #    United States standard mountain time
  17662. + #    United States standard central time
  17663. + #    United States standard Pacific time
  17664. + #    (none)
  17665. + #    United States standard Alaska time
  17666. + #    (none)
  17667. + # Next, names from April 1, 1967 until November 30, 1983 (the date for
  17668. + # public law 98-181):
  17669. + #    Atlantic standard time
  17670. + #    eastern standard time
  17671. + #    central standard time
  17672. + #    mountain standard time
  17673. + #    Pacific standard time
  17674. + #    Yukon standard time
  17675. + #    Alaska-Hawaii standard time
  17676. + #    Bering standard time
  17677. + # And after November 30, 1983:
  17678. + #    Atlantic standard time
  17679. + #    eastern standard time
  17680. + #    central standard time
  17681. + #    mountain standard time
  17682. + #    Pacific standard time
  17683. + #    Alaska standard time
  17684. + #    Hawaii-Aleutian standard time
  17685. + #    Samoa standard time
  17686. + # The law doesn't give abbreviations.
  17687. + # Easy stuff first--including Alaska, where we ignore history (since we
  17688. + # can't tell if we should give Yukon time or Alaska-Hawaii time for "old"
  17689. + # times).
  17690. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17691. + Zone    US/Eastern    -5:00    US        E%sT
  17692. + Zone    US/Central    -6:00    US        C%sT
  17693. + Zone    US/Mountain    -7:00    US        M%sT
  17694. + Zone    US/Pacific    -8:00    US        P%sT
  17695. + Zone    US/Alaska    -9:00    US        AK%sT    # Abbreviation per USNO
  17696. + # Mainland US areas that are always Standard as of 1986.
  17697. + Zone    US/East-Indiana    -5:00    US        E%sT    1946
  17698. +             -5:00    -        EST    # Always EST as of 1986
  17699. + Zone    US/Arizona    -7:00    US        M%sT    1946
  17700. +             -7:00    -        MST    # Always MST as of 1986
  17701. + # From Arthur David Olson (February 13, 1988):
  17702. + # However. . .a writer from the Inter Tribal Council of Arizona, Inc.,
  17703. + # notes in private correspondence dated 12/28/87 that "Presently, only the
  17704. + # Navajo Nation participates in the Daylight Saving Time policy, due to its
  17705. + # large size and location in three states."  (The "only" means that other
  17706. + # tribal nations don't use DST.)
  17707. + Link    US/Mountain    Navajo
  17708. + # From Bob Devine (January 28, 1988):
  17709. + # Michigan didn't observe DST from 1968 to 1973.
  17710. + Zone    US/Michigan    -5:00    US        E%sT    1968
  17711. +             -5:00    -        EST    1973
  17712. +             -5:00    US        E%sT
  17713. + # Samoa just changes names.  No DST, per Naval Observatory.
  17714. + Zone    US/Samoa    -11:00    -        NST    1967 Apr 1  # N=Nome
  17715. +             -11:00    -        BST    1983 Nov 30 # B=Bering
  17716. +             -11:00    -        SST            # S=Samoa
  17717. + # Aleutian has a name change.  DST, per Naval Observatory.
  17718. + Zone    US/Aleutian    -10:00    US        AH%sT    1983 Nov 30
  17719. +             -10:00    US        HA%sT
  17720. + # From Arthur David Olson:
  17721. + # And then there's Hawaii.
  17722. + # DST was observed for one day in 1933;
  17723. + # Standard time was change by half an hour in 1947;
  17724. + # it's always standard as of 1986.
  17725. + Zone    US/Hawaii    -10:30    US    H%sT    1933 Apr 30 2:00
  17726. +             -10:30    1:00    HDT    1933 May 1 2:00
  17727. +             -10:30    US    H%sT    1947 Jun 8 2:00
  17728. +             -10:00    -    HST
  17729. + # Old names, for S5 users
  17730. + # Link    LINK-FROM    LINK-TO
  17731. + # Link    US/Eastern    EST5EDT
  17732. + # Link    US/Central    CST6CDT
  17733. + # Link    US/Mountain    MST7MDT
  17734. + # Link    US/Pacific    PST8PDT
  17735. + # Link    US/East-Indiana    EST
  17736. + # Link    US/Arizona    MST
  17737. + # Link    US/Hawaii    HST
  17738. + ################################################################################
  17739. + # Canada
  17740. + # Canada is reportedly lots easier than the US--leastways since 1951.
  17741. + # I don't know what they did before then.
  17742. + # 4.3BSD claims that it's perfectly regular.
  17743. + # According to a posting in "comp.bugs.misc", "comp.unix.wizards", etc.
  17744. + # on February 8, 1987, by Dave Sherman of the Law Society of Upper Canada,
  17745. + # "...Canada (well, Ontario and at least some of the other provinces) are
  17746. + # adopting the new daylight savings time rules...".  We assume all of
  17747. + # Canada is doing so.
  17748. + # From Bob Devine (January 28, 1988):
  17749. + # All of Canada did have DST from your first rule except Saskatchewan.
  17750. + # Which parts did not observe DST is hard to pinpoint but most of the
  17751. + # province follows the rules.
  17752. + # NOTE: those that didn't have DST for that rule, also
  17753. + # probably did not have it for several years previous.
  17754. + # From U. S. Naval Observatory (January 19, 1989):
  17755. + # CANADA   NEW FDL    3.5H BEHIND UTC    ST.JOHN'S
  17756. + # CANADA   NEW FDL    1.5H BEHIND UTC    APR 3 - OCT 29
  17757. + # CANADA   ATLANTIC   4 H  BEHIND UTC    HALIFAX
  17758. + # CANADA   ATLANTIC   3 H  BEHIND UTC    APR 3 - OCT 29
  17759. + # CANADA   EASTERN    5 H  BEHIND UTC    TORONTO, MONTREAL, OTTAWA
  17760. + # CANADA   EASTERN    4 H  BEHIND UTC    APR 3 - OCT 29
  17761. + # CANADA   CENTRAL    6 H  BEHIND UTC    REGINA, WINNIPEG
  17762. + # CANADA   CENTRAL    5 H  BEHIND UTC    APR 3 - OCT 29
  17763. + # CANADA   MOUNTAIN   7 H  BEHIND UTC    CALGARY, EDMONTON
  17764. + # CANADA   MOUNTAIN   6 H  BEHIND UTC    APR 3 - OCT 29
  17765. + # CANADA   PACIFIC    8 H  BEHIND UTC    VANCOUVER
  17766. + # CANADA   PACIFIC    7 H  BEHIND UTC    APR 3 - OCT 29
  17767. + # CANADA   YUKON      SAME AS PACIFIC    DAWSON
  17768. + # From Arthur David Olson (January 21, 1989):
  17769. + # April 3 fell on a Sunday in 1988; October 29 fell on a Sunday in 1989.  Ahem.
  17770. + # Note claim that there's double DST in Newfoundland and that Yukon should
  17771. + # be same as Pacific.  Stick with rules posted in 1988 until more authoritative
  17772. + # information is available.
  17773. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17774. + Rule    Canada    1969    max    -    Oct    lastSun    2:00    0    S
  17775. + Rule    Canada    1969    1986    -    Apr    lastSun    2:00    1:00    D
  17776. + Rule    Canada    1987    max    -    Apr    Sun>=1    2:00    1:00    D
  17777. + # Zone    NAME            GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17778. + # Bob Devine says that DST *is* observed in Newfoundland
  17779. + Zone    Canada/Newfoundland    -3:30    Canada        N%sT
  17780. + Zone    Canada/Atlantic        -4:00    Canada        A%sT
  17781. + Zone    Canada/Eastern        -5:00    Canada        E%sT
  17782. + Zone    Canada/Central        -6:00    Canada        C%sT
  17783. + Zone    Canada/East-Saskatchewan    -6:00    -    CST # No DST as of 1987
  17784. + Zone    Canada/Mountain        -7:00    Canada        M%sT
  17785. + Zone    Canada/Pacific        -8:00    Canada        P%sT
  17786. + Zone    Canada/Yukon        -9:00    Canada        Y%sT
  17787. + ###############################################################################
  17788. + # Mexico
  17789. + # From Guy Harris:
  17790. + # Rules are from the Official Airline Guide, Worldwide Edition, for 1987.
  17791. + # Rules prior to 1987 are unknown.
  17792. + # The comments in the OAG say "Only Ensenada, Mexicale, San Felipe and Tijuana
  17793. + # observe DST."  This is presumably Baja California Norte, above 28th parallel,
  17794. + # as listed there; Mexico/BajaSur is for "Baja California Sur and N. Pacific
  17795. + # Coast (States of Sinaloa and Sonora)."
  17796. + # From Bob Devine (January 28, 1988):
  17797. + # The Federal District (where Mexico City is) has observed [DST] several
  17798. + # times but not recently.
  17799. + # 
  17800. + # I don't where to drawn the line in the North Baja area.  28th latitude
  17801. + # sounds good -- but it may be higher (how far [d]o radio stations from
  17802. + # San Diego affect culture?).
  17803. + # 
  17804. + # The dates of DST probably go back to 1981.  The rules are the same as
  17805. + # US's.  This is going to be a headache for US presidential electi[o]n years!
  17806. + # From Arthur David Olson (February 13, 1988)
  17807. + # Since the 1981 starting date is only "probable," we'll keep the 1987
  17808. + # starting date below.
  17809. + # From U. S. Naval Observatory (January 19, 1989):
  17810. + # MEXICO BAJA CAL N   7 H  BEHIND UTC    BAJA CALIFORNIA SUR AND
  17811. + # MEXICO BAJA CAL N                      N. PACIFIC COAST (STATES
  17812. + # MEXICO BAJA CAL N                      OF SINALOA AND SONORA)
  17813. + # MEXICO BAJA CAL N   8 H  BEHIND UTC    ABOVE 28TH PARALLAL APR 3
  17814. + # MEXICO BAJA CAL N                      - OCT 29
  17815. + # MEXICO BAJA CAL N   7 H  BEHIND UTC    ABOVE 28TH PARALLAL APR 3
  17816. + # MEXICO BAJA CAL N                      - 0CT 29
  17817. + # MEXICO              6 H  BEHIND UTC    STATES OF DURANGO,
  17818. + # MEXICO                                 COAHUILA, NUEVO LEON,
  17819. + # MEXICO                                 TAMAULIPAS
  17820. + # MEXICO              5 H  BEHIND UTC    STATES OF DURANGO,
  17821. + # MEXICO                                 COAHUILA, NUEVO LEON,
  17822. + # MEXICO                                 TAMAULIPAS  APR 3 - OCT 29
  17823. + # MEXICO              6 H  BEHIND UTC    GENERAL MEXICO, STATES OF
  17824. + # MEXICO                                 CAMPECHE, QUINTANA ROO AND
  17825. + # MEXICO                                 YUCATAN
  17826. + # From Arthur David Olson (January 21, 1989):
  17827. + # April 3 fell on a Sunday in 1988; October 29 fell on a Sunday in 1989.  Ahem.
  17828. + # USNO claims there should be four Mexican zones rather than three:
  17829. + # a zone that's GMT-8 with DST; a zone that's always GMT-7;
  17830. + # a zone that's GMT-6 with DST; and a zone that's always GMT-6.
  17831. + # Wait for more authoritative information before changing.
  17832. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17833. + Rule    Mexico    1987    max    -    Oct    lastSun    2:00    0    S
  17834. + Rule    Mexico    1987    max    -    Apr    Sun>=1    2:00    1:00    D
  17835. + # Zone    NAME            GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17836. + Zone    Mexico/BajaNorte    -8:00    Mexico        P%sT
  17837. + Zone    Mexico/BajaSur        -7:00    -        MST
  17838. + Zone    Mexico/General        -6:00    -        CST
  17839. + ###############################################################################
  17840. + # Jamaica
  17841. + # From Bob Devine (January 28, 1988):
  17842. + # Follows US rules.
  17843. + # From U. S. Naval Observatory (January 19, 1989):
  17844. + # JAMAICA             5 H  BEHIND UTC
  17845. + Link    US/Eastern    Jamaica
  17846. + ###############################################################################
  17847. + # Cuba
  17848. + # From Bob Devine (January 28, 1988):
  17849. + # . . .DST is from 2nd Sunday in May to 2nd Sunday in October since 1981.
  17850. + # Change at midnight.  In 1979 & 1980, started at 3rd Sunday in March
  17851. + # (I think).
  17852. + # From U. S. Naval Observatory (January 19, 1989):
  17853. + # CUBA                5 H  BEHIND UTC
  17854. + # CUBA                4 H  BEHIND UTC    MAR 20 - OCT 8
  17855. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17856. + Rule    Cuba    1979    1980    -    Mar    Sun>=15    0:00    1:00    D
  17857. + Rule    Cuba    1979    1980    -    Oct    Sun>=8    0:00    0    S
  17858. + Rule    Cuba    1981    max    -    May    Sun>=8    0:00    1:00    D
  17859. + Rule    Cuba    1981    max    -    Oct    Sun>=8    0:00    0    S
  17860. + # Zone    NAME            GMTOFF    RULES/SAVE    FORMAT
  17861. + Zone    Cuba            -5:00    Cuba        C%sT
  17862. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/pacificnew emacs-18.59/amiga/unix/src/zoneinfo/datfiles/pacificnew
  17863. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/pacificnew    Thu Jan  1 00:00:00 1970
  17864. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/pacificnew    Sat Aug  1 14:24:12 1992
  17865. ***************
  17866. *** 0 ****
  17867. --- 1,21 ----
  17868. + # @(#)pacificnew    4.4
  17869. + # From Arthur David Olson (January 18, 1989):
  17870. + # On November 10, 1987, the U. S. House of Representatives passed a bill
  17871. + # (H.R. 435), the "Uniform Poll Closing Time Act", establishing
  17872. + # "Pacific Presidential Election Time"; it was not acted on by the Senate
  17873. + # before the end of the 100th Congress and so died.
  17874. + # The bill has been reintroduced in the 101st Congress as H. R. 18;
  17875. + # H. R. 96 also deals with poll closing time.  Either bill would have to be
  17876. + # passed by both the House and Senate and signed by the President (or have
  17877. + # the President's veto overridden by the House and Senate) before becoming law.
  17878. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17879. + Rule    Twilite    1989    max    -    Apr    Sun>=1    2:00    1:00    D
  17880. + Rule    Twilite    1989    max    uspres    Oct    lastSun    2:00    1:00    PE
  17881. + Rule    Twilite    1989    max    uspres    Nov    Sun>=7    2:00    0    S
  17882. + Rule    Twilite    1989    max    nonpres    Oct    lastSun    2:00    0    S
  17883. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  17884. + Zone    US/Pacific-New    -8:00    US        P%sT    1989
  17885. +             -8:00    Twilite        P%sT
  17886. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/smakefile emacs-18.59/amiga/unix/src/zoneinfo/datfiles/smakefile
  17887. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/smakefile    Thu Jan  1 00:00:00 1970
  17888. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/smakefile    Mon Sep 21 09:58:50 1992
  17889. ***************
  17890. *** 0 ****
  17891. --- 1,67 ----
  17892. + #    @(#)Makefile    5.9 (Berkeley) 2/28/91
  17893. + # Change the line below for your time zone (after finding the zone you want in
  17894. + # the time zone files, or adding it to a time zone file).
  17895. + # Alternately, if you discover you've got the wrong time zone, you can just
  17896. + #    zic -l rightzone
  17897. + LOCALTIME=    MET
  17898. + # If you want something other than Eastern United States time as a template
  17899. + # for handling POSIX-style time zone environment variables,
  17900. + # change the line below (after finding the zone you want in the
  17901. + # time zone files, or adding it to a time zone file).
  17902. + # Alternately, if you discover you've got the wrong time zone, you can just
  17903. + #    zic -p rightzone
  17904. + POSIXRULES=    MET
  17905. + # Use an absolute path name for TZDIR unless you're just testing the software.
  17906. + TZDIR=    s:zoneinfo
  17907. + # If you always want time values interpreted as "seconds since the epoch
  17908. + # (not counting leap seconds)", use
  17909. + #     REDO=        posix_only
  17910. + # below.  If you always want right time values interpreted as "seconds since
  17911. + # the epoch" (counting leap seconds)", use
  17912. + #    REDO=        right_only
  17913. + # below.  If you want both sets of data available, with leap seconds not
  17914. + # counted normally, use
  17915. + #    REDO=        posix_right
  17916. + # below.  If you want both sets of data available, with leap seconds counted
  17917. + # normally, use
  17918. + #    REDO=        right_posix
  17919. + # below.
  17920. + # This should be left as is for the Amiga
  17921. + REDO=        posix_only
  17922. + YDATA=    africa antarctica asia australasia europe northamerica \
  17923. +     southamerica pacificnew etcetera factory
  17924. + NDATA=    systemv
  17925. + #SDATA=    solar87 solar88 solar89
  17926. + TDATA=    ${YDATA} ${NDATA} ${SDATA}
  17927. + DATA=    ${YDATA} ${NDATA} ${SDATA} leapseconds
  17928. + USNO=    usno1988 usno1989
  17929. + all: $(REDO)
  17930. + posix_only: ${TDATA}
  17931. +         /zic -d ${TZDIR} -L nil: ${TDATA}
  17932. + right_only: leapseconds ${TDATA}
  17933. +         /zic -d ${TZDIR} -L leapseconds ${TDATA}
  17934. + other_two: leapseconds ${TDATA}
  17935. +         /zic -d ${TZDIR} -L leapseconds ${TDATA}
  17936. +         /zic -d ${TZDIR} -L nil: ${TDATA}
  17937. + posix_right: posix_only other_two
  17938. + right_posix: right_only other_two
  17939. + install: ${TDATA} ${REDO}
  17940. +     /zic -d ${TZDIR} -p ${POSIXRULES}
  17941. +     /zic -d ${TZDIR} -l ${LOCALTIME}
  17942. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar87 emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar87
  17943. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar87    Thu Jan  1 00:00:00 1970
  17944. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar87    Sat Aug  1 14:24:14 1992
  17945. ***************
  17946. *** 0 ****
  17947. --- 1,386 ----
  17948. + # @(#)solar87    4.1
  17949. + # So much for footnotes about Saudi Arabia.
  17950. + # Apparent noon times below are for Riyadh; your mileage will vary.
  17951. + # Times were computed using formulas in the U.S. Naval Observatory's
  17952. + # Almanac for Computers 1987; the formulas "will give EqT to an accuracy of
  17953. + # [plus or minus two] seconds during the current year."
  17954. + #
  17955. + # Rounding to the nearest five seconds results in fewer than
  17956. + # 256 different "time types"--a limit that's faced because time types are
  17957. + # stored on disk as unsigned chars.
  17958. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  17959. + Rule    sol87    1987    only    -    Jan    1    12:03:20s -0:03:20 -
  17960. + Rule    sol87    1987    only    -    Jan    2    12:03:50s -0:03:50 -
  17961. + Rule    sol87    1987    only    -    Jan    3    12:04:15s -0:04:15 -
  17962. + Rule    sol87    1987    only    -    Jan    4    12:04:45s -0:04:45 -
  17963. + Rule    sol87    1987    only    -    Jan    5    12:05:10s -0:05:10 -
  17964. + Rule    sol87    1987    only    -    Jan    6    12:05:40s -0:05:40 -
  17965. + Rule    sol87    1987    only    -    Jan    7    12:06:05s -0:06:05 -
  17966. + Rule    sol87    1987    only    -    Jan    8    12:06:30s -0:06:30 -
  17967. + Rule    sol87    1987    only    -    Jan    9    12:06:55s -0:06:55 -
  17968. + Rule    sol87    1987    only    -    Jan    10    12:07:20s -0:07:20 -
  17969. + Rule    sol87    1987    only    -    Jan    11    12:07:45s -0:07:45 -
  17970. + Rule    sol87    1987    only    -    Jan    12    12:08:10s -0:08:10 -
  17971. + Rule    sol87    1987    only    -    Jan    13    12:08:30s -0:08:30 -
  17972. + Rule    sol87    1987    only    -    Jan    14    12:08:55s -0:08:55 -
  17973. + Rule    sol87    1987    only    -    Jan    15    12:09:15s -0:09:15 -
  17974. + Rule    sol87    1987    only    -    Jan    16    12:09:35s -0:09:35 -
  17975. + Rule    sol87    1987    only    -    Jan    17    12:09:55s -0:09:55 -
  17976. + Rule    sol87    1987    only    -    Jan    18    12:10:15s -0:10:15 -
  17977. + Rule    sol87    1987    only    -    Jan    19    12:10:35s -0:10:35 -
  17978. + Rule    sol87    1987    only    -    Jan    20    12:10:55s -0:10:55 -
  17979. + Rule    sol87    1987    only    -    Jan    21    12:11:10s -0:11:10 -
  17980. + Rule    sol87    1987    only    -    Jan    22    12:11:30s -0:11:30 -
  17981. + Rule    sol87    1987    only    -    Jan    23    12:11:45s -0:11:45 -
  17982. + Rule    sol87    1987    only    -    Jan    24    12:12:00s -0:12:00 -
  17983. + Rule    sol87    1987    only    -    Jan    25    12:12:15s -0:12:15 -
  17984. + Rule    sol87    1987    only    -    Jan    26    12:12:30s -0:12:30 -
  17985. + Rule    sol87    1987    only    -    Jan    27    12:12:40s -0:12:40 -
  17986. + Rule    sol87    1987    only    -    Jan    28    12:12:55s -0:12:55 -
  17987. + Rule    sol87    1987    only    -    Jan    29    12:13:05s -0:13:05 -
  17988. + Rule    sol87    1987    only    -    Jan    30    12:13:15s -0:13:15 -
  17989. + Rule    sol87    1987    only    -    Jan    31    12:13:25s -0:13:25 -
  17990. + Rule    sol87    1987    only    -    Feb    1    12:13:35s -0:13:35 -
  17991. + Rule    sol87    1987    only    -    Feb    2    12:13:40s -0:13:40 -
  17992. + Rule    sol87    1987    only    -    Feb    3    12:13:50s -0:13:50 -
  17993. + Rule    sol87    1987    only    -    Feb    4    12:13:55s -0:13:55 -
  17994. + Rule    sol87    1987    only    -    Feb    5    12:14:00s -0:14:00 -
  17995. + Rule    sol87    1987    only    -    Feb    6    12:14:05s -0:14:05 -
  17996. + Rule    sol87    1987    only    -    Feb    7    12:14:10s -0:14:10 -
  17997. + Rule    sol87    1987    only    -    Feb    8    12:14:10s -0:14:10 -
  17998. + Rule    sol87    1987    only    -    Feb    9    12:14:15s -0:14:15 -
  17999. + Rule    sol87    1987    only    -    Feb    10    12:14:15s -0:14:15 -
  18000. + Rule    sol87    1987    only    -    Feb    11    12:14:15s -0:14:15 -
  18001. + Rule    sol87    1987    only    -    Feb    12    12:14:15s -0:14:15 -
  18002. + Rule    sol87    1987    only    -    Feb    13    12:14:15s -0:14:15 -
  18003. + Rule    sol87    1987    only    -    Feb    14    12:14:15s -0:14:15 -
  18004. + Rule    sol87    1987    only    -    Feb    15    12:14:10s -0:14:10 -
  18005. + Rule    sol87    1987    only    -    Feb    16    12:14:10s -0:14:10 -
  18006. + Rule    sol87    1987    only    -    Feb    17    12:14:05s -0:14:05 -
  18007. + Rule    sol87    1987    only    -    Feb    18    12:14:00s -0:14:00 -
  18008. + Rule    sol87    1987    only    -    Feb    19    12:13:55s -0:13:55 -
  18009. + Rule    sol87    1987    only    -    Feb    20    12:13:50s -0:13:50 -
  18010. + Rule    sol87    1987    only    -    Feb    21    12:13:45s -0:13:45 -
  18011. + Rule    sol87    1987    only    -    Feb    22    12:13:35s -0:13:35 -
  18012. + Rule    sol87    1987    only    -    Feb    23    12:13:30s -0:13:30 -
  18013. + Rule    sol87    1987    only    -    Feb    24    12:13:20s -0:13:20 -
  18014. + Rule    sol87    1987    only    -    Feb    25    12:13:10s -0:13:10 -
  18015. + Rule    sol87    1987    only    -    Feb    26    12:13:00s -0:13:00 -
  18016. + Rule    sol87    1987    only    -    Feb    27    12:12:50s -0:12:50 -
  18017. + Rule    sol87    1987    only    -    Feb    28    12:12:40s -0:12:40 -
  18018. + Rule    sol87    1987    only    -    Mar    1    12:12:30s -0:12:30 -
  18019. + Rule    sol87    1987    only    -    Mar    2    12:12:20s -0:12:20 -
  18020. + Rule    sol87    1987    only    -    Mar    3    12:12:05s -0:12:05 -
  18021. + Rule    sol87    1987    only    -    Mar    4    12:11:55s -0:11:55 -
  18022. + Rule    sol87    1987    only    -    Mar    5    12:11:40s -0:11:40 -
  18023. + Rule    sol87    1987    only    -    Mar    6    12:11:25s -0:11:25 -
  18024. + Rule    sol87    1987    only    -    Mar    7    12:11:15s -0:11:15 -
  18025. + Rule    sol87    1987    only    -    Mar    8    12:11:00s -0:11:00 -
  18026. + Rule    sol87    1987    only    -    Mar    9    12:10:45s -0:10:45 -
  18027. + Rule    sol87    1987    only    -    Mar    10    12:10:30s -0:10:30 -
  18028. + Rule    sol87    1987    only    -    Mar    11    12:10:15s -0:10:15 -
  18029. + Rule    sol87    1987    only    -    Mar    12    12:09:55s -0:09:55 -
  18030. + Rule    sol87    1987    only    -    Mar    13    12:09:40s -0:09:40 -
  18031. + Rule    sol87    1987    only    -    Mar    14    12:09:25s -0:09:25 -
  18032. + Rule    sol87    1987    only    -    Mar    15    12:09:10s -0:09:10 -
  18033. + Rule    sol87    1987    only    -    Mar    16    12:08:50s -0:08:50 -
  18034. + Rule    sol87    1987    only    -    Mar    17    12:08:35s -0:08:35 -
  18035. + Rule    sol87    1987    only    -    Mar    18    12:08:15s -0:08:15 -
  18036. + Rule    sol87    1987    only    -    Mar    19    12:08:00s -0:08:00 -
  18037. + Rule    sol87    1987    only    -    Mar    20    12:07:40s -0:07:40 -
  18038. + Rule    sol87    1987    only    -    Mar    21    12:07:25s -0:07:25 -
  18039. + Rule    sol87    1987    only    -    Mar    22    12:07:05s -0:07:05 -
  18040. + Rule    sol87    1987    only    -    Mar    23    12:06:50s -0:06:50 -
  18041. + Rule    sol87    1987    only    -    Mar    24    12:06:30s -0:06:30 -
  18042. + Rule    sol87    1987    only    -    Mar    25    12:06:10s -0:06:10 -
  18043. + Rule    sol87    1987    only    -    Mar    26    12:05:55s -0:05:55 -
  18044. + Rule    sol87    1987    only    -    Mar    27    12:05:35s -0:05:35 -
  18045. + Rule    sol87    1987    only    -    Mar    28    12:05:15s -0:05:15 -
  18046. + Rule    sol87    1987    only    -    Mar    29    12:05:00s -0:05:00 -
  18047. + Rule    sol87    1987    only    -    Mar    30    12:04:40s -0:04:40 -
  18048. + Rule    sol87    1987    only    -    Mar    31    12:04:25s -0:04:25 -
  18049. + Rule    sol87    1987    only    -    Apr    1    12:04:05s -0:04:05 -
  18050. + Rule    sol87    1987    only    -    Apr    2    12:03:45s -0:03:45 -
  18051. + Rule    sol87    1987    only    -    Apr    3    12:03:30s -0:03:30 -
  18052. + Rule    sol87    1987    only    -    Apr    4    12:03:10s -0:03:10 -
  18053. + Rule    sol87    1987    only    -    Apr    5    12:02:55s -0:02:55 -
  18054. + Rule    sol87    1987    only    -    Apr    6    12:02:35s -0:02:35 -
  18055. + Rule    sol87    1987    only    -    Apr    7    12:02:20s -0:02:20 -
  18056. + Rule    sol87    1987    only    -    Apr    8    12:02:05s -0:02:05 -
  18057. + Rule    sol87    1987    only    -    Apr    9    12:01:45s -0:01:45 -
  18058. + Rule    sol87    1987    only    -    Apr    10    12:01:30s -0:01:30 -
  18059. + Rule    sol87    1987    only    -    Apr    11    12:01:15s -0:01:15 -
  18060. + Rule    sol87    1987    only    -    Apr    12    12:00:55s -0:00:55 -
  18061. + Rule    sol87    1987    only    -    Apr    13    12:00:40s -0:00:40 -
  18062. + Rule    sol87    1987    only    -    Apr    14    12:00:25s -0:00:25 -
  18063. + Rule    sol87    1987    only    -    Apr    15    12:00:10s -0:00:10 -
  18064. + Rule    sol87    1987    only    -    Apr    16    11:59:55s 0:00:05 -
  18065. + Rule    sol87    1987    only    -    Apr    17    11:59:45s 0:00:15 -
  18066. + Rule    sol87    1987    only    -    Apr    18    11:59:30s 0:00:30 -
  18067. + Rule    sol87    1987    only    -    Apr    19    11:59:15s 0:00:45 -
  18068. + Rule    sol87    1987    only    -    Apr    20    11:59:05s 0:00:55 -
  18069. + Rule    sol87    1987    only    -    Apr    21    11:58:50s 0:01:10 -
  18070. + Rule    sol87    1987    only    -    Apr    22    11:58:40s 0:01:20 -
  18071. + Rule    sol87    1987    only    -    Apr    23    11:58:25s 0:01:35 -
  18072. + Rule    sol87    1987    only    -    Apr    24    11:58:15s 0:01:45 -
  18073. + Rule    sol87    1987    only    -    Apr    25    11:58:05s 0:01:55 -
  18074. + Rule    sol87    1987    only    -    Apr    26    11:57:55s 0:02:05 -
  18075. + Rule    sol87    1987    only    -    Apr    27    11:57:45s 0:02:15 -
  18076. + Rule    sol87    1987    only    -    Apr    28    11:57:35s 0:02:25 -
  18077. + Rule    sol87    1987    only    -    Apr    29    11:57:25s 0:02:35 -
  18078. + Rule    sol87    1987    only    -    Apr    30    11:57:15s 0:02:45 -
  18079. + Rule    sol87    1987    only    -    May    1    11:57:10s 0:02:50 -
  18080. + Rule    sol87    1987    only    -    May    2    11:57:00s 0:03:00 -
  18081. + Rule    sol87    1987    only    -    May    3    11:56:55s 0:03:05 -
  18082. + Rule    sol87    1987    only    -    May    4    11:56:50s 0:03:10 -
  18083. + Rule    sol87    1987    only    -    May    5    11:56:45s 0:03:15 -
  18084. + Rule    sol87    1987    only    -    May    6    11:56:40s 0:03:20 -
  18085. + Rule    sol87    1987    only    -    May    7    11:56:35s 0:03:25 -
  18086. + Rule    sol87    1987    only    -    May    8    11:56:30s 0:03:30 -
  18087. + Rule    sol87    1987    only    -    May    9    11:56:25s 0:03:35 -
  18088. + Rule    sol87    1987    only    -    May    10    11:56:25s 0:03:35 -
  18089. + Rule    sol87    1987    only    -    May    11    11:56:20s 0:03:40 -
  18090. + Rule    sol87    1987    only    -    May    12    11:56:20s 0:03:40 -
  18091. + Rule    sol87    1987    only    -    May    13    11:56:20s 0:03:40 -
  18092. + Rule    sol87    1987    only    -    May    14    11:56:20s 0:03:40 -
  18093. + Rule    sol87    1987    only    -    May    15    11:56:20s 0:03:40 -
  18094. + Rule    sol87    1987    only    -    May    16    11:56:20s 0:03:40 -
  18095. + Rule    sol87    1987    only    -    May    17    11:56:20s 0:03:40 -
  18096. + Rule    sol87    1987    only    -    May    18    11:56:20s 0:03:40 -
  18097. + Rule    sol87    1987    only    -    May    19    11:56:25s 0:03:35 -
  18098. + Rule    sol87    1987    only    -    May    20    11:56:25s 0:03:35 -
  18099. + Rule    sol87    1987    only    -    May    21    11:56:30s 0:03:30 -
  18100. + Rule    sol87    1987    only    -    May    22    11:56:35s 0:03:25 -
  18101. + Rule    sol87    1987    only    -    May    23    11:56:40s 0:03:20 -
  18102. + Rule    sol87    1987    only    -    May    24    11:56:45s 0:03:15 -
  18103. + Rule    sol87    1987    only    -    May    25    11:56:50s 0:03:10 -
  18104. + Rule    sol87    1987    only    -    May    26    11:56:55s 0:03:05 -
  18105. + Rule    sol87    1987    only    -    May    27    11:57:00s 0:03:00 -
  18106. + Rule    sol87    1987    only    -    May    28    11:57:10s 0:02:50 -
  18107. + Rule    sol87    1987    only    -    May    29    11:57:15s 0:02:45 -
  18108. + Rule    sol87    1987    only    -    May    30    11:57:25s 0:02:35 -
  18109. + Rule    sol87    1987    only    -    May    31    11:57:30s 0:02:30 -
  18110. + Rule    sol87    1987    only    -    Jun    1    11:57:40s 0:02:20 -
  18111. + Rule    sol87    1987    only    -    Jun    2    11:57:50s 0:02:10 -
  18112. + Rule    sol87    1987    only    -    Jun    3    11:58:00s 0:02:00 -
  18113. + Rule    sol87    1987    only    -    Jun    4    11:58:10s 0:01:50 -
  18114. + Rule    sol87    1987    only    -    Jun    5    11:58:20s 0:01:40 -
  18115. + Rule    sol87    1987    only    -    Jun    6    11:58:30s 0:01:30 -
  18116. + Rule    sol87    1987    only    -    Jun    7    11:58:40s 0:01:20 -
  18117. + Rule    sol87    1987    only    -    Jun    8    11:58:50s 0:01:10 -
  18118. + Rule    sol87    1987    only    -    Jun    9    11:59:05s 0:00:55 -
  18119. + Rule    sol87    1987    only    -    Jun    10    11:59:15s 0:00:45 -
  18120. + Rule    sol87    1987    only    -    Jun    11    11:59:30s 0:00:30 -
  18121. + Rule    sol87    1987    only    -    Jun    12    11:59:40s 0:00:20 -
  18122. + Rule    sol87    1987    only    -    Jun    13    11:59:50s 0:00:10 -
  18123. + Rule    sol87    1987    only    -    Jun    14    12:00:05s -0:00:05 -
  18124. + Rule    sol87    1987    only    -    Jun    15    12:00:15s -0:00:15 -
  18125. + Rule    sol87    1987    only    -    Jun    16    12:00:30s -0:00:30 -
  18126. + Rule    sol87    1987    only    -    Jun    17    12:00:45s -0:00:45 -
  18127. + Rule    sol87    1987    only    -    Jun    18    12:00:55s -0:00:55 -
  18128. + Rule    sol87    1987    only    -    Jun    19    12:01:10s -0:01:10 -
  18129. + Rule    sol87    1987    only    -    Jun    20    12:01:20s -0:01:20 -
  18130. + Rule    sol87    1987    only    -    Jun    21    12:01:35s -0:01:35 -
  18131. + Rule    sol87    1987    only    -    Jun    22    12:01:50s -0:01:50 -
  18132. + Rule    sol87    1987    only    -    Jun    23    12:02:00s -0:02:00 -
  18133. + Rule    sol87    1987    only    -    Jun    24    12:02:15s -0:02:15 -
  18134. + Rule    sol87    1987    only    -    Jun    25    12:02:25s -0:02:25 -
  18135. + Rule    sol87    1987    only    -    Jun    26    12:02:40s -0:02:40 -
  18136. + Rule    sol87    1987    only    -    Jun    27    12:02:50s -0:02:50 -
  18137. + Rule    sol87    1987    only    -    Jun    28    12:03:05s -0:03:05 -
  18138. + Rule    sol87    1987    only    -    Jun    29    12:03:15s -0:03:15 -
  18139. + Rule    sol87    1987    only    -    Jun    30    12:03:30s -0:03:30 -
  18140. + Rule    sol87    1987    only    -    Jul    1    12:03:40s -0:03:40 -
  18141. + Rule    sol87    1987    only    -    Jul    2    12:03:50s -0:03:50 -
  18142. + Rule    sol87    1987    only    -    Jul    3    12:04:05s -0:04:05 -
  18143. + Rule    sol87    1987    only    -    Jul    4    12:04:15s -0:04:15 -
  18144. + Rule    sol87    1987    only    -    Jul    5    12:04:25s -0:04:25 -
  18145. + Rule    sol87    1987    only    -    Jul    6    12:04:35s -0:04:35 -
  18146. + Rule    sol87    1987    only    -    Jul    7    12:04:45s -0:04:45 -
  18147. + Rule    sol87    1987    only    -    Jul    8    12:04:55s -0:04:55 -
  18148. + Rule    sol87    1987    only    -    Jul    9    12:05:05s -0:05:05 -
  18149. + Rule    sol87    1987    only    -    Jul    10    12:05:15s -0:05:15 -
  18150. + Rule    sol87    1987    only    -    Jul    11    12:05:20s -0:05:20 -
  18151. + Rule    sol87    1987    only    -    Jul    12    12:05:30s -0:05:30 -
  18152. + Rule    sol87    1987    only    -    Jul    13    12:05:40s -0:05:40 -
  18153. + Rule    sol87    1987    only    -    Jul    14    12:05:45s -0:05:45 -
  18154. + Rule    sol87    1987    only    -    Jul    15    12:05:50s -0:05:50 -
  18155. + Rule    sol87    1987    only    -    Jul    16    12:06:00s -0:06:00 -
  18156. + Rule    sol87    1987    only    -    Jul    17    12:06:05s -0:06:05 -
  18157. + Rule    sol87    1987    only    -    Jul    18    12:06:10s -0:06:10 -
  18158. + Rule    sol87    1987    only    -    Jul    19    12:06:15s -0:06:15 -
  18159. + Rule    sol87    1987    only    -    Jul    20    12:06:15s -0:06:15 -
  18160. + Rule    sol87    1987    only    -    Jul    21    12:06:20s -0:06:20 -
  18161. + Rule    sol87    1987    only    -    Jul    22    12:06:25s -0:06:25 -
  18162. + Rule    sol87    1987    only    -    Jul    23    12:06:25s -0:06:25 -
  18163. + Rule    sol87    1987    only    -    Jul    24    12:06:25s -0:06:25 -
  18164. + Rule    sol87    1987    only    -    Jul    25    12:06:30s -0:06:30 -
  18165. + Rule    sol87    1987    only    -    Jul    26    12:06:30s -0:06:30 -
  18166. + Rule    sol87    1987    only    -    Jul    27    12:06:30s -0:06:30 -
  18167. + Rule    sol87    1987    only    -    Jul    28    12:06:30s -0:06:30 -
  18168. + Rule    sol87    1987    only    -    Jul    29    12:06:25s -0:06:25 -
  18169. + Rule    sol87    1987    only    -    Jul    30    12:06:25s -0:06:25 -
  18170. + Rule    sol87    1987    only    -    Jul    31    12:06:25s -0:06:25 -
  18171. + Rule    sol87    1987    only    -    Aug    1    12:06:20s -0:06:20 -
  18172. + Rule    sol87    1987    only    -    Aug    2    12:06:15s -0:06:15 -
  18173. + Rule    sol87    1987    only    -    Aug    3    12:06:10s -0:06:10 -
  18174. + Rule    sol87    1987    only    -    Aug    4    12:06:05s -0:06:05 -
  18175. + Rule    sol87    1987    only    -    Aug    5    12:06:00s -0:06:00 -
  18176. + Rule    sol87    1987    only    -    Aug    6    12:05:55s -0:05:55 -
  18177. + Rule    sol87    1987    only    -    Aug    7    12:05:50s -0:05:50 -
  18178. + Rule    sol87    1987    only    -    Aug    8    12:05:40s -0:05:40 -
  18179. + Rule    sol87    1987    only    -    Aug    9    12:05:35s -0:05:35 -
  18180. + Rule    sol87    1987    only    -    Aug    10    12:05:25s -0:05:25 -
  18181. + Rule    sol87    1987    only    -    Aug    11    12:05:15s -0:05:15 -
  18182. + Rule    sol87    1987    only    -    Aug    12    12:05:05s -0:05:05 -
  18183. + Rule    sol87    1987    only    -    Aug    13    12:04:55s -0:04:55 -
  18184. + Rule    sol87    1987    only    -    Aug    14    12:04:45s -0:04:45 -
  18185. + Rule    sol87    1987    only    -    Aug    15    12:04:35s -0:04:35 -
  18186. + Rule    sol87    1987    only    -    Aug    16    12:04:25s -0:04:25 -
  18187. + Rule    sol87    1987    only    -    Aug    17    12:04:10s -0:04:10 -
  18188. + Rule    sol87    1987    only    -    Aug    18    12:04:00s -0:04:00 -
  18189. + Rule    sol87    1987    only    -    Aug    19    12:03:45s -0:03:45 -
  18190. + Rule    sol87    1987    only    -    Aug    20    12:03:30s -0:03:30 -
  18191. + Rule    sol87    1987    only    -    Aug    21    12:03:15s -0:03:15 -
  18192. + Rule    sol87    1987    only    -    Aug    22    12:03:00s -0:03:00 -
  18193. + Rule    sol87    1987    only    -    Aug    23    12:02:45s -0:02:45 -
  18194. + Rule    sol87    1987    only    -    Aug    24    12:02:30s -0:02:30 -
  18195. + Rule    sol87    1987    only    -    Aug    25    12:02:15s -0:02:15 -
  18196. + Rule    sol87    1987    only    -    Aug    26    12:02:00s -0:02:00 -
  18197. + Rule    sol87    1987    only    -    Aug    27    12:01:40s -0:01:40 -
  18198. + Rule    sol87    1987    only    -    Aug    28    12:01:25s -0:01:25 -
  18199. + Rule    sol87    1987    only    -    Aug    29    12:01:05s -0:01:05 -
  18200. + Rule    sol87    1987    only    -    Aug    30    12:00:50s -0:00:50 -
  18201. + Rule    sol87    1987    only    -    Aug    31    12:00:30s -0:00:30 -
  18202. + Rule    sol87    1987    only    -    Sep    1    12:00:10s -0:00:10 -
  18203. + Rule    sol87    1987    only    -    Sep    2    11:59:50s 0:00:10 -
  18204. + Rule    sol87    1987    only    -    Sep    3    11:59:35s 0:00:25 -
  18205. + Rule    sol87    1987    only    -    Sep    4    11:59:15s 0:00:45 -
  18206. + Rule    sol87    1987    only    -    Sep    5    11:58:55s 0:01:05 -
  18207. + Rule    sol87    1987    only    -    Sep    6    11:58:35s 0:01:25 -
  18208. + Rule    sol87    1987    only    -    Sep    7    11:58:15s 0:01:45 -
  18209. + Rule    sol87    1987    only    -    Sep    8    11:57:55s 0:02:05 -
  18210. + Rule    sol87    1987    only    -    Sep    9    11:57:30s 0:02:30 -
  18211. + Rule    sol87    1987    only    -    Sep    10    11:57:10s 0:02:50 -
  18212. + Rule    sol87    1987    only    -    Sep    11    11:56:50s 0:03:10 -
  18213. + Rule    sol87    1987    only    -    Sep    12    11:56:30s 0:03:30 -
  18214. + Rule    sol87    1987    only    -    Sep    13    11:56:10s 0:03:50 -
  18215. + Rule    sol87    1987    only    -    Sep    14    11:55:45s 0:04:15 -
  18216. + Rule    sol87    1987    only    -    Sep    15    11:55:25s 0:04:35 -
  18217. + Rule    sol87    1987    only    -    Sep    16    11:55:05s 0:04:55 -
  18218. + Rule    sol87    1987    only    -    Sep    17    11:54:45s 0:05:15 -
  18219. + Rule    sol87    1987    only    -    Sep    18    11:54:20s 0:05:40 -
  18220. + Rule    sol87    1987    only    -    Sep    19    11:54:00s 0:06:00 -
  18221. + Rule    sol87    1987    only    -    Sep    20    11:53:40s 0:06:20 -
  18222. + Rule    sol87    1987    only    -    Sep    21    11:53:15s 0:06:45 -
  18223. + Rule    sol87    1987    only    -    Sep    22    11:52:55s 0:07:05 -
  18224. + Rule    sol87    1987    only    -    Sep    23    11:52:35s 0:07:25 -
  18225. + Rule    sol87    1987    only    -    Sep    24    11:52:15s 0:07:45 -
  18226. + Rule    sol87    1987    only    -    Sep    25    11:51:55s 0:08:05 -
  18227. + Rule    sol87    1987    only    -    Sep    26    11:51:35s 0:08:25 -
  18228. + Rule    sol87    1987    only    -    Sep    27    11:51:10s 0:08:50 -
  18229. + Rule    sol87    1987    only    -    Sep    28    11:50:50s 0:09:10 -
  18230. + Rule    sol87    1987    only    -    Sep    29    11:50:30s 0:09:30 -
  18231. + Rule    sol87    1987    only    -    Sep    30    11:50:10s 0:09:50 -
  18232. + Rule    sol87    1987    only    -    Oct    1    11:49:50s 0:10:10 -
  18233. + Rule    sol87    1987    only    -    Oct    2    11:49:35s 0:10:25 -
  18234. + Rule    sol87    1987    only    -    Oct    3    11:49:15s 0:10:45 -
  18235. + Rule    sol87    1987    only    -    Oct    4    11:48:55s 0:11:05 -
  18236. + Rule    sol87    1987    only    -    Oct    5    11:48:35s 0:11:25 -
  18237. + Rule    sol87    1987    only    -    Oct    6    11:48:20s 0:11:40 -
  18238. + Rule    sol87    1987    only    -    Oct    7    11:48:00s 0:12:00 -
  18239. + Rule    sol87    1987    only    -    Oct    8    11:47:45s 0:12:15 -
  18240. + Rule    sol87    1987    only    -    Oct    9    11:47:25s 0:12:35 -
  18241. + Rule    sol87    1987    only    -    Oct    10    11:47:10s 0:12:50 -
  18242. + Rule    sol87    1987    only    -    Oct    11    11:46:55s 0:13:05 -
  18243. + Rule    sol87    1987    only    -    Oct    12    11:46:40s 0:13:20 -
  18244. + Rule    sol87    1987    only    -    Oct    13    11:46:25s 0:13:35 -
  18245. + Rule    sol87    1987    only    -    Oct    14    11:46:10s 0:13:50 -
  18246. + Rule    sol87    1987    only    -    Oct    15    11:45:55s 0:14:05 -
  18247. + Rule    sol87    1987    only    -    Oct    16    11:45:45s 0:14:15 -
  18248. + Rule    sol87    1987    only    -    Oct    17    11:45:30s 0:14:30 -
  18249. + Rule    sol87    1987    only    -    Oct    18    11:45:20s 0:14:40 -
  18250. + Rule    sol87    1987    only    -    Oct    19    11:45:05s 0:14:55 -
  18251. + Rule    sol87    1987    only    -    Oct    20    11:44:55s 0:15:05 -
  18252. + Rule    sol87    1987    only    -    Oct    21    11:44:45s 0:15:15 -
  18253. + Rule    sol87    1987    only    -    Oct    22    11:44:35s 0:15:25 -
  18254. + Rule    sol87    1987    only    -    Oct    23    11:44:25s 0:15:35 -
  18255. + Rule    sol87    1987    only    -    Oct    24    11:44:20s 0:15:40 -
  18256. + Rule    sol87    1987    only    -    Oct    25    11:44:10s 0:15:50 -
  18257. + Rule    sol87    1987    only    -    Oct    26    11:44:05s 0:15:55 -
  18258. + Rule    sol87    1987    only    -    Oct    27    11:43:55s 0:16:05 -
  18259. + Rule    sol87    1987    only    -    Oct    28    11:43:50s 0:16:10 -
  18260. + Rule    sol87    1987    only    -    Oct    29    11:43:45s 0:16:15 -
  18261. + Rule    sol87    1987    only    -    Oct    30    11:43:45s 0:16:15 -
  18262. + Rule    sol87    1987    only    -    Oct    31    11:43:40s 0:16:20 -
  18263. + Rule    sol87    1987    only    -    Nov    1    11:43:40s 0:16:20 -
  18264. + Rule    sol87    1987    only    -    Nov    2    11:43:35s 0:16:25 -
  18265. + Rule    sol87    1987    only    -    Nov    3    11:43:35s 0:16:25 -
  18266. + Rule    sol87    1987    only    -    Nov    4    11:43:35s 0:16:25 -
  18267. + Rule    sol87    1987    only    -    Nov    5    11:43:35s 0:16:25 -
  18268. + Rule    sol87    1987    only    -    Nov    6    11:43:40s 0:16:20 -
  18269. + Rule    sol87    1987    only    -    Nov    7    11:43:40s 0:16:20 -
  18270. + Rule    sol87    1987    only    -    Nov    8    11:43:45s 0:16:15 -
  18271. + Rule    sol87    1987    only    -    Nov    9    11:43:50s 0:16:10 -
  18272. + Rule    sol87    1987    only    -    Nov    10    11:43:55s 0:16:05 -
  18273. + Rule    sol87    1987    only    -    Nov    11    11:44:00s 0:16:00 -
  18274. + Rule    sol87    1987    only    -    Nov    12    11:44:05s 0:15:55 -
  18275. + Rule    sol87    1987    only    -    Nov    13    11:44:15s 0:15:45 -
  18276. + Rule    sol87    1987    only    -    Nov    14    11:44:20s 0:15:40 -
  18277. + Rule    sol87    1987    only    -    Nov    15    11:44:30s 0:15:30 -
  18278. + Rule    sol87    1987    only    -    Nov    16    11:44:40s 0:15:20 -
  18279. + Rule    sol87    1987    only    -    Nov    17    11:44:50s 0:15:10 -
  18280. + Rule    sol87    1987    only    -    Nov    18    11:45:05s 0:14:55 -
  18281. + Rule    sol87    1987    only    -    Nov    19    11:45:15s 0:14:45 -
  18282. + Rule    sol87    1987    only    -    Nov    20    11:45:30s 0:14:30 -
  18283. + Rule    sol87    1987    only    -    Nov    21    11:45:45s 0:14:15 -
  18284. + Rule    sol87    1987    only    -    Nov    22    11:46:00s 0:14:00 -
  18285. + Rule    sol87    1987    only    -    Nov    23    11:46:15s 0:13:45 -
  18286. + Rule    sol87    1987    only    -    Nov    24    11:46:30s 0:13:30 -
  18287. + Rule    sol87    1987    only    -    Nov    25    11:46:50s 0:13:10 -
  18288. + Rule    sol87    1987    only    -    Nov    26    11:47:10s 0:12:50 -
  18289. + Rule    sol87    1987    only    -    Nov    27    11:47:25s 0:12:35 -
  18290. + Rule    sol87    1987    only    -    Nov    28    11:47:45s 0:12:15 -
  18291. + Rule    sol87    1987    only    -    Nov    29    11:48:05s 0:11:55 -
  18292. + Rule    sol87    1987    only    -    Nov    30    11:48:30s 0:11:30 -
  18293. + Rule    sol87    1987    only    -    Dec    1    11:48:50s 0:11:10 -
  18294. + Rule    sol87    1987    only    -    Dec    2    11:49:10s 0:10:50 -
  18295. + Rule    sol87    1987    only    -    Dec    3    11:49:35s 0:10:25 -
  18296. + Rule    sol87    1987    only    -    Dec    4    11:50:00s 0:10:00 -
  18297. + Rule    sol87    1987    only    -    Dec    5    11:50:25s 0:09:35 -
  18298. + Rule    sol87    1987    only    -    Dec    6    11:50:50s 0:09:10 -
  18299. + Rule    sol87    1987    only    -    Dec    7    11:51:15s 0:08:45 -
  18300. + Rule    sol87    1987    only    -    Dec    8    11:51:40s 0:08:20 -
  18301. + Rule    sol87    1987    only    -    Dec    9    11:52:05s 0:07:55 -
  18302. + Rule    sol87    1987    only    -    Dec    10    11:52:30s 0:07:30 -
  18303. + Rule    sol87    1987    only    -    Dec    11    11:53:00s 0:07:00 -
  18304. + Rule    sol87    1987    only    -    Dec    12    11:53:25s 0:06:35 -
  18305. + Rule    sol87    1987    only    -    Dec    13    11:53:55s 0:06:05 -
  18306. + Rule    sol87    1987    only    -    Dec    14    11:54:25s 0:05:35 -
  18307. + Rule    sol87    1987    only    -    Dec    15    11:54:50s 0:05:10 -
  18308. + Rule    sol87    1987    only    -    Dec    16    11:55:20s 0:04:40 -
  18309. + Rule    sol87    1987    only    -    Dec    17    11:55:50s 0:04:10 -
  18310. + Rule    sol87    1987    only    -    Dec    18    11:56:20s 0:03:40 -
  18311. + Rule    sol87    1987    only    -    Dec    19    11:56:50s 0:03:10 -
  18312. + Rule    sol87    1987    only    -    Dec    20    11:57:20s 0:02:40 -
  18313. + Rule    sol87    1987    only    -    Dec    21    11:57:50s 0:02:10 -
  18314. + Rule    sol87    1987    only    -    Dec    22    11:58:20s 0:01:40 -
  18315. + Rule    sol87    1987    only    -    Dec    23    11:58:50s 0:01:10 -
  18316. + Rule    sol87    1987    only    -    Dec    24    11:59:20s 0:00:40 -
  18317. + Rule    sol87    1987    only    -    Dec    25    11:59:50s 0:00:10 -
  18318. + Rule    sol87    1987    only    -    Dec    26    12:00:20s -0:00:20 -
  18319. + Rule    sol87    1987    only    -    Dec    27    12:00:45s -0:00:45 -
  18320. + Rule    sol87    1987    only    -    Dec    28    12:01:15s -0:01:15 -
  18321. + Rule    sol87    1987    only    -    Dec    29    12:01:45s -0:01:45 -
  18322. + Rule    sol87    1987    only    -    Dec    30    12:02:15s -0:02:15 -
  18323. + Rule    sol87    1987    only    -    Dec    31    12:02:45s -0:02:45 -
  18324. + # Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
  18325. + # Before and after 1987, we'll operate on local mean solar time.
  18326. + # Zone    NAME            GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  18327. + Zone    Mideast/Riyadh87    3:07:04    -        ??    1987
  18328. +                 3:07:04    sol87        ??    1988
  18329. +                 3:07:04    -        ??
  18330. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar88 emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar88
  18331. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar88    Thu Jan  1 00:00:00 1970
  18332. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar88    Sat Aug  1 14:24:16 1992
  18333. ***************
  18334. *** 0 ****
  18335. --- 1,386 ----
  18336. + # @(#)solar88    4.2
  18337. + # Apparent noon times below are for Riyadh; they're a bit off for other places.
  18338. + # Times were computed using formulas in the U.S. Naval Observatory's
  18339. + # Almanac for Computers 1988; the formulas "will give EqT to an accuracy of
  18340. + # [plus or minus two] seconds during the current year."
  18341. + #
  18342. + # Rounding to the nearest five seconds results in fewer than
  18343. + # 256 different "time types"--a limit that's faced because time types are
  18344. + # stored on disk as unsigned chars.
  18345. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  18346. + Rule    sol88    1988    only    -    Jan    1    12:03:15s -0:03:15 -
  18347. + Rule    sol88    1988    only    -    Jan    2    12:03:40s -0:03:40 -
  18348. + Rule    sol88    1988    only    -    Jan    3    12:04:10s -0:04:10 -
  18349. + Rule    sol88    1988    only    -    Jan    4    12:04:40s -0:04:40 -
  18350. + Rule    sol88    1988    only    -    Jan    5    12:05:05s -0:05:05 -
  18351. + Rule    sol88    1988    only    -    Jan    6    12:05:30s -0:05:30 -
  18352. + Rule    sol88    1988    only    -    Jan    7    12:06:00s -0:06:00 -
  18353. + Rule    sol88    1988    only    -    Jan    8    12:06:25s -0:06:25 -
  18354. + Rule    sol88    1988    only    -    Jan    9    12:06:50s -0:06:50 -
  18355. + Rule    sol88    1988    only    -    Jan    10    12:07:15s -0:07:15 -
  18356. + Rule    sol88    1988    only    -    Jan    11    12:07:40s -0:07:40 -
  18357. + Rule    sol88    1988    only    -    Jan    12    12:08:05s -0:08:05 -
  18358. + Rule    sol88    1988    only    -    Jan    13    12:08:25s -0:08:25 -
  18359. + Rule    sol88    1988    only    -    Jan    14    12:08:50s -0:08:50 -
  18360. + Rule    sol88    1988    only    -    Jan    15    12:09:10s -0:09:10 -
  18361. + Rule    sol88    1988    only    -    Jan    16    12:09:30s -0:09:30 -
  18362. + Rule    sol88    1988    only    -    Jan    17    12:09:50s -0:09:50 -
  18363. + Rule    sol88    1988    only    -    Jan    18    12:10:10s -0:10:10 -
  18364. + Rule    sol88    1988    only    -    Jan    19    12:10:30s -0:10:30 -
  18365. + Rule    sol88    1988    only    -    Jan    20    12:10:50s -0:10:50 -
  18366. + Rule    sol88    1988    only    -    Jan    21    12:11:05s -0:11:05 -
  18367. + Rule    sol88    1988    only    -    Jan    22    12:11:25s -0:11:25 -
  18368. + Rule    sol88    1988    only    -    Jan    23    12:11:40s -0:11:40 -
  18369. + Rule    sol88    1988    only    -    Jan    24    12:11:55s -0:11:55 -
  18370. + Rule    sol88    1988    only    -    Jan    25    12:12:10s -0:12:10 -
  18371. + Rule    sol88    1988    only    -    Jan    26    12:12:25s -0:12:25 -
  18372. + Rule    sol88    1988    only    -    Jan    27    12:12:40s -0:12:40 -
  18373. + Rule    sol88    1988    only    -    Jan    28    12:12:50s -0:12:50 -
  18374. + Rule    sol88    1988    only    -    Jan    29    12:13:00s -0:13:00 -
  18375. + Rule    sol88    1988    only    -    Jan    30    12:13:10s -0:13:10 -
  18376. + Rule    sol88    1988    only    -    Jan    31    12:13:20s -0:13:20 -
  18377. + Rule    sol88    1988    only    -    Feb    1    12:13:30s -0:13:30 -
  18378. + Rule    sol88    1988    only    -    Feb    2    12:13:40s -0:13:40 -
  18379. + Rule    sol88    1988    only    -    Feb    3    12:13:45s -0:13:45 -
  18380. + Rule    sol88    1988    only    -    Feb    4    12:13:55s -0:13:55 -
  18381. + Rule    sol88    1988    only    -    Feb    5    12:14:00s -0:14:00 -
  18382. + Rule    sol88    1988    only    -    Feb    6    12:14:05s -0:14:05 -
  18383. + Rule    sol88    1988    only    -    Feb    7    12:14:10s -0:14:10 -
  18384. + Rule    sol88    1988    only    -    Feb    8    12:14:10s -0:14:10 -
  18385. + Rule    sol88    1988    only    -    Feb    9    12:14:15s -0:14:15 -
  18386. + Rule    sol88    1988    only    -    Feb    10    12:14:15s -0:14:15 -
  18387. + Rule    sol88    1988    only    -    Feb    11    12:14:15s -0:14:15 -
  18388. + Rule    sol88    1988    only    -    Feb    12    12:14:15s -0:14:15 -
  18389. + Rule    sol88    1988    only    -    Feb    13    12:14:15s -0:14:15 -
  18390. + Rule    sol88    1988    only    -    Feb    14    12:14:15s -0:14:15 -
  18391. + Rule    sol88    1988    only    -    Feb    15    12:14:10s -0:14:10 -
  18392. + Rule    sol88    1988    only    -    Feb    16    12:14:10s -0:14:10 -
  18393. + Rule    sol88    1988    only    -    Feb    17    12:14:05s -0:14:05 -
  18394. + Rule    sol88    1988    only    -    Feb    18    12:14:00s -0:14:00 -
  18395. + Rule    sol88    1988    only    -    Feb    19    12:13:55s -0:13:55 -
  18396. + Rule    sol88    1988    only    -    Feb    20    12:13:50s -0:13:50 -
  18397. + Rule    sol88    1988    only    -    Feb    21    12:13:45s -0:13:45 -
  18398. + Rule    sol88    1988    only    -    Feb    22    12:13:40s -0:13:40 -
  18399. + Rule    sol88    1988    only    -    Feb    23    12:13:30s -0:13:30 -
  18400. + Rule    sol88    1988    only    -    Feb    24    12:13:20s -0:13:20 -
  18401. + Rule    sol88    1988    only    -    Feb    25    12:13:15s -0:13:15 -
  18402. + Rule    sol88    1988    only    -    Feb    26    12:13:05s -0:13:05 -
  18403. + Rule    sol88    1988    only    -    Feb    27    12:12:55s -0:12:55 -
  18404. + Rule    sol88    1988    only    -    Feb    28    12:12:45s -0:12:45 -
  18405. + Rule    sol88    1988    only    -    Feb    29    12:12:30s -0:12:30 -
  18406. + Rule    sol88    1988    only    -    Mar    1    12:12:20s -0:12:20 -
  18407. + Rule    sol88    1988    only    -    Mar    2    12:12:10s -0:12:10 -
  18408. + Rule    sol88    1988    only    -    Mar    3    12:11:55s -0:11:55 -
  18409. + Rule    sol88    1988    only    -    Mar    4    12:11:45s -0:11:45 -
  18410. + Rule    sol88    1988    only    -    Mar    5    12:11:30s -0:11:30 -
  18411. + Rule    sol88    1988    only    -    Mar    6    12:11:15s -0:11:15 -
  18412. + Rule    sol88    1988    only    -    Mar    7    12:11:00s -0:11:00 -
  18413. + Rule    sol88    1988    only    -    Mar    8    12:10:45s -0:10:45 -
  18414. + Rule    sol88    1988    only    -    Mar    9    12:10:30s -0:10:30 -
  18415. + Rule    sol88    1988    only    -    Mar    10    12:10:15s -0:10:15 -
  18416. + Rule    sol88    1988    only    -    Mar    11    12:10:00s -0:10:00 -
  18417. + Rule    sol88    1988    only    -    Mar    12    12:09:45s -0:09:45 -
  18418. + Rule    sol88    1988    only    -    Mar    13    12:09:30s -0:09:30 -
  18419. + Rule    sol88    1988    only    -    Mar    14    12:09:10s -0:09:10 -
  18420. + Rule    sol88    1988    only    -    Mar    15    12:08:55s -0:08:55 -
  18421. + Rule    sol88    1988    only    -    Mar    16    12:08:40s -0:08:40 -
  18422. + Rule    sol88    1988    only    -    Mar    17    12:08:20s -0:08:20 -
  18423. + Rule    sol88    1988    only    -    Mar    18    12:08:05s -0:08:05 -
  18424. + Rule    sol88    1988    only    -    Mar    19    12:07:45s -0:07:45 -
  18425. + Rule    sol88    1988    only    -    Mar    20    12:07:30s -0:07:30 -
  18426. + Rule    sol88    1988    only    -    Mar    21    12:07:10s -0:07:10 -
  18427. + Rule    sol88    1988    only    -    Mar    22    12:06:50s -0:06:50 -
  18428. + Rule    sol88    1988    only    -    Mar    23    12:06:35s -0:06:35 -
  18429. + Rule    sol88    1988    only    -    Mar    24    12:06:15s -0:06:15 -
  18430. + Rule    sol88    1988    only    -    Mar    25    12:06:00s -0:06:00 -
  18431. + Rule    sol88    1988    only    -    Mar    26    12:05:40s -0:05:40 -
  18432. + Rule    sol88    1988    only    -    Mar    27    12:05:20s -0:05:20 -
  18433. + Rule    sol88    1988    only    -    Mar    28    12:05:05s -0:05:05 -
  18434. + Rule    sol88    1988    only    -    Mar    29    12:04:45s -0:04:45 -
  18435. + Rule    sol88    1988    only    -    Mar    30    12:04:25s -0:04:25 -
  18436. + Rule    sol88    1988    only    -    Mar    31    12:04:10s -0:04:10 -
  18437. + Rule    sol88    1988    only    -    Apr    1    12:03:50s -0:03:50 -
  18438. + Rule    sol88    1988    only    -    Apr    2    12:03:35s -0:03:35 -
  18439. + Rule    sol88    1988    only    -    Apr    3    12:03:15s -0:03:15 -
  18440. + Rule    sol88    1988    only    -    Apr    4    12:03:00s -0:03:00 -
  18441. + Rule    sol88    1988    only    -    Apr    5    12:02:40s -0:02:40 -
  18442. + Rule    sol88    1988    only    -    Apr    6    12:02:25s -0:02:25 -
  18443. + Rule    sol88    1988    only    -    Apr    7    12:02:05s -0:02:05 -
  18444. + Rule    sol88    1988    only    -    Apr    8    12:01:50s -0:01:50 -
  18445. + Rule    sol88    1988    only    -    Apr    9    12:01:35s -0:01:35 -
  18446. + Rule    sol88    1988    only    -    Apr    10    12:01:15s -0:01:15 -
  18447. + Rule    sol88    1988    only    -    Apr    11    12:01:00s -0:01:00 -
  18448. + Rule    sol88    1988    only    -    Apr    12    12:00:45s -0:00:45 -
  18449. + Rule    sol88    1988    only    -    Apr    13    12:00:30s -0:00:30 -
  18450. + Rule    sol88    1988    only    -    Apr    14    12:00:15s -0:00:15 -
  18451. + Rule    sol88    1988    only    -    Apr    15    12:00:00s 0:00:00 -
  18452. + Rule    sol88    1988    only    -    Apr    16    11:59:45s 0:00:15 -
  18453. + Rule    sol88    1988    only    -    Apr    17    11:59:30s 0:00:30 -
  18454. + Rule    sol88    1988    only    -    Apr    18    11:59:20s 0:00:40 -
  18455. + Rule    sol88    1988    only    -    Apr    19    11:59:05s 0:00:55 -
  18456. + Rule    sol88    1988    only    -    Apr    20    11:58:55s 0:01:05 -
  18457. + Rule    sol88    1988    only    -    Apr    21    11:58:40s 0:01:20 -
  18458. + Rule    sol88    1988    only    -    Apr    22    11:58:30s 0:01:30 -
  18459. + Rule    sol88    1988    only    -    Apr    23    11:58:15s 0:01:45 -
  18460. + Rule    sol88    1988    only    -    Apr    24    11:58:05s 0:01:55 -
  18461. + Rule    sol88    1988    only    -    Apr    25    11:57:55s 0:02:05 -
  18462. + Rule    sol88    1988    only    -    Apr    26    11:57:45s 0:02:15 -
  18463. + Rule    sol88    1988    only    -    Apr    27    11:57:35s 0:02:25 -
  18464. + Rule    sol88    1988    only    -    Apr    28    11:57:30s 0:02:30 -
  18465. + Rule    sol88    1988    only    -    Apr    29    11:57:20s 0:02:40 -
  18466. + Rule    sol88    1988    only    -    Apr    30    11:57:10s 0:02:50 -
  18467. + Rule    sol88    1988    only    -    May    1    11:57:05s 0:02:55 -
  18468. + Rule    sol88    1988    only    -    May    2    11:56:55s 0:03:05 -
  18469. + Rule    sol88    1988    only    -    May    3    11:56:50s 0:03:10 -
  18470. + Rule    sol88    1988    only    -    May    4    11:56:45s 0:03:15 -
  18471. + Rule    sol88    1988    only    -    May    5    11:56:40s 0:03:20 -
  18472. + Rule    sol88    1988    only    -    May    6    11:56:35s 0:03:25 -
  18473. + Rule    sol88    1988    only    -    May    7    11:56:30s 0:03:30 -
  18474. + Rule    sol88    1988    only    -    May    8    11:56:25s 0:03:35 -
  18475. + Rule    sol88    1988    only    -    May    9    11:56:25s 0:03:35 -
  18476. + Rule    sol88    1988    only    -    May    10    11:56:20s 0:03:40 -
  18477. + Rule    sol88    1988    only    -    May    11    11:56:20s 0:03:40 -
  18478. + Rule    sol88    1988    only    -    May    12    11:56:20s 0:03:40 -
  18479. + Rule    sol88    1988    only    -    May    13    11:56:20s 0:03:40 -
  18480. + Rule    sol88    1988    only    -    May    14    11:56:20s 0:03:40 -
  18481. + Rule    sol88    1988    only    -    May    15    11:56:20s 0:03:40 -
  18482. + Rule    sol88    1988    only    -    May    16    11:56:20s 0:03:40 -
  18483. + Rule    sol88    1988    only    -    May    17    11:56:20s 0:03:40 -
  18484. + Rule    sol88    1988    only    -    May    18    11:56:25s 0:03:35 -
  18485. + Rule    sol88    1988    only    -    May    19    11:56:25s 0:03:35 -
  18486. + Rule    sol88    1988    only    -    May    20    11:56:30s 0:03:30 -
  18487. + Rule    sol88    1988    only    -    May    21    11:56:35s 0:03:25 -
  18488. + Rule    sol88    1988    only    -    May    22    11:56:40s 0:03:20 -
  18489. + Rule    sol88    1988    only    -    May    23    11:56:45s 0:03:15 -
  18490. + Rule    sol88    1988    only    -    May    24    11:56:50s 0:03:10 -
  18491. + Rule    sol88    1988    only    -    May    25    11:56:55s 0:03:05 -
  18492. + Rule    sol88    1988    only    -    May    26    11:57:00s 0:03:00 -
  18493. + Rule    sol88    1988    only    -    May    27    11:57:05s 0:02:55 -
  18494. + Rule    sol88    1988    only    -    May    28    11:57:15s 0:02:45 -
  18495. + Rule    sol88    1988    only    -    May    29    11:57:20s 0:02:40 -
  18496. + Rule    sol88    1988    only    -    May    30    11:57:30s 0:02:30 -
  18497. + Rule    sol88    1988    only    -    May    31    11:57:40s 0:02:20 -
  18498. + Rule    sol88    1988    only    -    Jun    1    11:57:50s 0:02:10 -
  18499. + Rule    sol88    1988    only    -    Jun    2    11:57:55s 0:02:05 -
  18500. + Rule    sol88    1988    only    -    Jun    3    11:58:05s 0:01:55 -
  18501. + Rule    sol88    1988    only    -    Jun    4    11:58:15s 0:01:45 -
  18502. + Rule    sol88    1988    only    -    Jun    5    11:58:30s 0:01:30 -
  18503. + Rule    sol88    1988    only    -    Jun    6    11:58:40s 0:01:20 -
  18504. + Rule    sol88    1988    only    -    Jun    7    11:58:50s 0:01:10 -
  18505. + Rule    sol88    1988    only    -    Jun    8    11:59:00s 0:01:00 -
  18506. + Rule    sol88    1988    only    -    Jun    9    11:59:15s 0:00:45 -
  18507. + Rule    sol88    1988    only    -    Jun    10    11:59:25s 0:00:35 -
  18508. + Rule    sol88    1988    only    -    Jun    11    11:59:35s 0:00:25 -
  18509. + Rule    sol88    1988    only    -    Jun    12    11:59:50s 0:00:10 -
  18510. + Rule    sol88    1988    only    -    Jun    13    12:00:00s 0:00:00 -
  18511. + Rule    sol88    1988    only    -    Jun    14    12:00:15s -0:00:15 -
  18512. + Rule    sol88    1988    only    -    Jun    15    12:00:25s -0:00:25 -
  18513. + Rule    sol88    1988    only    -    Jun    16    12:00:40s -0:00:40 -
  18514. + Rule    sol88    1988    only    -    Jun    17    12:00:55s -0:00:55 -
  18515. + Rule    sol88    1988    only    -    Jun    18    12:01:05s -0:01:05 -
  18516. + Rule    sol88    1988    only    -    Jun    19    12:01:20s -0:01:20 -
  18517. + Rule    sol88    1988    only    -    Jun    20    12:01:30s -0:01:30 -
  18518. + Rule    sol88    1988    only    -    Jun    21    12:01:45s -0:01:45 -
  18519. + Rule    sol88    1988    only    -    Jun    22    12:02:00s -0:02:00 -
  18520. + Rule    sol88    1988    only    -    Jun    23    12:02:10s -0:02:10 -
  18521. + Rule    sol88    1988    only    -    Jun    24    12:02:25s -0:02:25 -
  18522. + Rule    sol88    1988    only    -    Jun    25    12:02:35s -0:02:35 -
  18523. + Rule    sol88    1988    only    -    Jun    26    12:02:50s -0:02:50 -
  18524. + Rule    sol88    1988    only    -    Jun    27    12:03:00s -0:03:00 -
  18525. + Rule    sol88    1988    only    -    Jun    28    12:03:15s -0:03:15 -
  18526. + Rule    sol88    1988    only    -    Jun    29    12:03:25s -0:03:25 -
  18527. + Rule    sol88    1988    only    -    Jun    30    12:03:40s -0:03:40 -
  18528. + Rule    sol88    1988    only    -    Jul    1    12:03:50s -0:03:50 -
  18529. + Rule    sol88    1988    only    -    Jul    2    12:04:00s -0:04:00 -
  18530. + Rule    sol88    1988    only    -    Jul    3    12:04:10s -0:04:10 -
  18531. + Rule    sol88    1988    only    -    Jul    4    12:04:25s -0:04:25 -
  18532. + Rule    sol88    1988    only    -    Jul    5    12:04:35s -0:04:35 -
  18533. + Rule    sol88    1988    only    -    Jul    6    12:04:45s -0:04:45 -
  18534. + Rule    sol88    1988    only    -    Jul    7    12:04:55s -0:04:55 -
  18535. + Rule    sol88    1988    only    -    Jul    8    12:05:05s -0:05:05 -
  18536. + Rule    sol88    1988    only    -    Jul    9    12:05:10s -0:05:10 -
  18537. + Rule    sol88    1988    only    -    Jul    10    12:05:20s -0:05:20 -
  18538. + Rule    sol88    1988    only    -    Jul    11    12:05:30s -0:05:30 -
  18539. + Rule    sol88    1988    only    -    Jul    12    12:05:35s -0:05:35 -
  18540. + Rule    sol88    1988    only    -    Jul    13    12:05:45s -0:05:45 -
  18541. + Rule    sol88    1988    only    -    Jul    14    12:05:50s -0:05:50 -
  18542. + Rule    sol88    1988    only    -    Jul    15    12:05:55s -0:05:55 -
  18543. + Rule    sol88    1988    only    -    Jul    16    12:06:00s -0:06:00 -
  18544. + Rule    sol88    1988    only    -    Jul    17    12:06:05s -0:06:05 -
  18545. + Rule    sol88    1988    only    -    Jul    18    12:06:10s -0:06:10 -
  18546. + Rule    sol88    1988    only    -    Jul    19    12:06:15s -0:06:15 -
  18547. + Rule    sol88    1988    only    -    Jul    20    12:06:20s -0:06:20 -
  18548. + Rule    sol88    1988    only    -    Jul    21    12:06:25s -0:06:25 -
  18549. + Rule    sol88    1988    only    -    Jul    22    12:06:25s -0:06:25 -
  18550. + Rule    sol88    1988    only    -    Jul    23    12:06:25s -0:06:25 -
  18551. + Rule    sol88    1988    only    -    Jul    24    12:06:30s -0:06:30 -
  18552. + Rule    sol88    1988    only    -    Jul    25    12:06:30s -0:06:30 -
  18553. + Rule    sol88    1988    only    -    Jul    26    12:06:30s -0:06:30 -
  18554. + Rule    sol88    1988    only    -    Jul    27    12:06:30s -0:06:30 -
  18555. + Rule    sol88    1988    only    -    Jul    28    12:06:30s -0:06:30 -
  18556. + Rule    sol88    1988    only    -    Jul    29    12:06:25s -0:06:25 -
  18557. + Rule    sol88    1988    only    -    Jul    30    12:06:25s -0:06:25 -
  18558. + Rule    sol88    1988    only    -    Jul    31    12:06:20s -0:06:20 -
  18559. + Rule    sol88    1988    only    -    Aug    1    12:06:15s -0:06:15 -
  18560. + Rule    sol88    1988    only    -    Aug    2    12:06:15s -0:06:15 -
  18561. + Rule    sol88    1988    only    -    Aug    3    12:06:10s -0:06:10 -
  18562. + Rule    sol88    1988    only    -    Aug    4    12:06:05s -0:06:05 -
  18563. + Rule    sol88    1988    only    -    Aug    5    12:05:55s -0:05:55 -
  18564. + Rule    sol88    1988    only    -    Aug    6    12:05:50s -0:05:50 -
  18565. + Rule    sol88    1988    only    -    Aug    7    12:05:45s -0:05:45 -
  18566. + Rule    sol88    1988    only    -    Aug    8    12:05:35s -0:05:35 -
  18567. + Rule    sol88    1988    only    -    Aug    9    12:05:25s -0:05:25 -
  18568. + Rule    sol88    1988    only    -    Aug    10    12:05:20s -0:05:20 -
  18569. + Rule    sol88    1988    only    -    Aug    11    12:05:10s -0:05:10 -
  18570. + Rule    sol88    1988    only    -    Aug    12    12:05:00s -0:05:00 -
  18571. + Rule    sol88    1988    only    -    Aug    13    12:04:50s -0:04:50 -
  18572. + Rule    sol88    1988    only    -    Aug    14    12:04:35s -0:04:35 -
  18573. + Rule    sol88    1988    only    -    Aug    15    12:04:25s -0:04:25 -
  18574. + Rule    sol88    1988    only    -    Aug    16    12:04:15s -0:04:15 -
  18575. + Rule    sol88    1988    only    -    Aug    17    12:04:00s -0:04:00 -
  18576. + Rule    sol88    1988    only    -    Aug    18    12:03:50s -0:03:50 -
  18577. + Rule    sol88    1988    only    -    Aug    19    12:03:35s -0:03:35 -
  18578. + Rule    sol88    1988    only    -    Aug    20    12:03:20s -0:03:20 -
  18579. + Rule    sol88    1988    only    -    Aug    21    12:03:05s -0:03:05 -
  18580. + Rule    sol88    1988    only    -    Aug    22    12:02:50s -0:02:50 -
  18581. + Rule    sol88    1988    only    -    Aug    23    12:02:35s -0:02:35 -
  18582. + Rule    sol88    1988    only    -    Aug    24    12:02:20s -0:02:20 -
  18583. + Rule    sol88    1988    only    -    Aug    25    12:02:00s -0:02:00 -
  18584. + Rule    sol88    1988    only    -    Aug    26    12:01:45s -0:01:45 -
  18585. + Rule    sol88    1988    only    -    Aug    27    12:01:30s -0:01:30 -
  18586. + Rule    sol88    1988    only    -    Aug    28    12:01:10s -0:01:10 -
  18587. + Rule    sol88    1988    only    -    Aug    29    12:00:50s -0:00:50 -
  18588. + Rule    sol88    1988    only    -    Aug    30    12:00:35s -0:00:35 -
  18589. + Rule    sol88    1988    only    -    Aug    31    12:00:15s -0:00:15 -
  18590. + Rule    sol88    1988    only    -    Sep    1    11:59:55s 0:00:05 -
  18591. + Rule    sol88    1988    only    -    Sep    2    11:59:35s 0:00:25 -
  18592. + Rule    sol88    1988    only    -    Sep    3    11:59:20s 0:00:40 -
  18593. + Rule    sol88    1988    only    -    Sep    4    11:59:00s 0:01:00 -
  18594. + Rule    sol88    1988    only    -    Sep    5    11:58:40s 0:01:20 -
  18595. + Rule    sol88    1988    only    -    Sep    6    11:58:20s 0:01:40 -
  18596. + Rule    sol88    1988    only    -    Sep    7    11:58:00s 0:02:00 -
  18597. + Rule    sol88    1988    only    -    Sep    8    11:57:35s 0:02:25 -
  18598. + Rule    sol88    1988    only    -    Sep    9    11:57:15s 0:02:45 -
  18599. + Rule    sol88    1988    only    -    Sep    10    11:56:55s 0:03:05 -
  18600. + Rule    sol88    1988    only    -    Sep    11    11:56:35s 0:03:25 -
  18601. + Rule    sol88    1988    only    -    Sep    12    11:56:15s 0:03:45 -
  18602. + Rule    sol88    1988    only    -    Sep    13    11:55:50s 0:04:10 -
  18603. + Rule    sol88    1988    only    -    Sep    14    11:55:30s 0:04:30 -
  18604. + Rule    sol88    1988    only    -    Sep    15    11:55:10s 0:04:50 -
  18605. + Rule    sol88    1988    only    -    Sep    16    11:54:50s 0:05:10 -
  18606. + Rule    sol88    1988    only    -    Sep    17    11:54:25s 0:05:35 -
  18607. + Rule    sol88    1988    only    -    Sep    18    11:54:05s 0:05:55 -
  18608. + Rule    sol88    1988    only    -    Sep    19    11:53:45s 0:06:15 -
  18609. + Rule    sol88    1988    only    -    Sep    20    11:53:25s 0:06:35 -
  18610. + Rule    sol88    1988    only    -    Sep    21    11:53:00s 0:07:00 -
  18611. + Rule    sol88    1988    only    -    Sep    22    11:52:40s 0:07:20 -
  18612. + Rule    sol88    1988    only    -    Sep    23    11:52:20s 0:07:40 -
  18613. + Rule    sol88    1988    only    -    Sep    24    11:52:00s 0:08:00 -
  18614. + Rule    sol88    1988    only    -    Sep    25    11:51:40s 0:08:20 -
  18615. + Rule    sol88    1988    only    -    Sep    26    11:51:15s 0:08:45 -
  18616. + Rule    sol88    1988    only    -    Sep    27    11:50:55s 0:09:05 -
  18617. + Rule    sol88    1988    only    -    Sep    28    11:50:35s 0:09:25 -
  18618. + Rule    sol88    1988    only    -    Sep    29    11:50:15s 0:09:45 -
  18619. + Rule    sol88    1988    only    -    Sep    30    11:49:55s 0:10:05 -
  18620. + Rule    sol88    1988    only    -    Oct    1    11:49:35s 0:10:25 -
  18621. + Rule    sol88    1988    only    -    Oct    2    11:49:20s 0:10:40 -
  18622. + Rule    sol88    1988    only    -    Oct    3    11:49:00s 0:11:00 -
  18623. + Rule    sol88    1988    only    -    Oct    4    11:48:40s 0:11:20 -
  18624. + Rule    sol88    1988    only    -    Oct    5    11:48:25s 0:11:35 -
  18625. + Rule    sol88    1988    only    -    Oct    6    11:48:05s 0:11:55 -
  18626. + Rule    sol88    1988    only    -    Oct    7    11:47:50s 0:12:10 -
  18627. + Rule    sol88    1988    only    -    Oct    8    11:47:30s 0:12:30 -
  18628. + Rule    sol88    1988    only    -    Oct    9    11:47:15s 0:12:45 -
  18629. + Rule    sol88    1988    only    -    Oct    10    11:47:00s 0:13:00 -
  18630. + Rule    sol88    1988    only    -    Oct    11    11:46:45s 0:13:15 -
  18631. + Rule    sol88    1988    only    -    Oct    12    11:46:30s 0:13:30 -
  18632. + Rule    sol88    1988    only    -    Oct    13    11:46:15s 0:13:45 -
  18633. + Rule    sol88    1988    only    -    Oct    14    11:46:00s 0:14:00 -
  18634. + Rule    sol88    1988    only    -    Oct    15    11:45:45s 0:14:15 -
  18635. + Rule    sol88    1988    only    -    Oct    16    11:45:35s 0:14:25 -
  18636. + Rule    sol88    1988    only    -    Oct    17    11:45:20s 0:14:40 -
  18637. + Rule    sol88    1988    only    -    Oct    18    11:45:10s 0:14:50 -
  18638. + Rule    sol88    1988    only    -    Oct    19    11:45:00s 0:15:00 -
  18639. + Rule    sol88    1988    only    -    Oct    20    11:44:45s 0:15:15 -
  18640. + Rule    sol88    1988    only    -    Oct    21    11:44:40s 0:15:20 -
  18641. + Rule    sol88    1988    only    -    Oct    22    11:44:30s 0:15:30 -
  18642. + Rule    sol88    1988    only    -    Oct    23    11:44:20s 0:15:40 -
  18643. + Rule    sol88    1988    only    -    Oct    24    11:44:10s 0:15:50 -
  18644. + Rule    sol88    1988    only    -    Oct    25    11:44:05s 0:15:55 -
  18645. + Rule    sol88    1988    only    -    Oct    26    11:44:00s 0:16:00 -
  18646. + Rule    sol88    1988    only    -    Oct    27    11:43:55s 0:16:05 -
  18647. + Rule    sol88    1988    only    -    Oct    28    11:43:50s 0:16:10 -
  18648. + Rule    sol88    1988    only    -    Oct    29    11:43:45s 0:16:15 -
  18649. + Rule    sol88    1988    only    -    Oct    30    11:43:40s 0:16:20 -
  18650. + Rule    sol88    1988    only    -    Oct    31    11:43:40s 0:16:20 -
  18651. + Rule    sol88    1988    only    -    Nov    1    11:43:35s 0:16:25 -
  18652. + Rule    sol88    1988    only    -    Nov    2    11:43:35s 0:16:25 -
  18653. + Rule    sol88    1988    only    -    Nov    3    11:43:35s 0:16:25 -
  18654. + Rule    sol88    1988    only    -    Nov    4    11:43:35s 0:16:25 -
  18655. + Rule    sol88    1988    only    -    Nov    5    11:43:40s 0:16:20 -
  18656. + Rule    sol88    1988    only    -    Nov    6    11:43:40s 0:16:20 -
  18657. + Rule    sol88    1988    only    -    Nov    7    11:43:45s 0:16:15 -
  18658. + Rule    sol88    1988    only    -    Nov    8    11:43:45s 0:16:15 -
  18659. + Rule    sol88    1988    only    -    Nov    9    11:43:50s 0:16:10 -
  18660. + Rule    sol88    1988    only    -    Nov    10    11:44:00s 0:16:00 -
  18661. + Rule    sol88    1988    only    -    Nov    11    11:44:05s 0:15:55 -
  18662. + Rule    sol88    1988    only    -    Nov    12    11:44:10s 0:15:50 -
  18663. + Rule    sol88    1988    only    -    Nov    13    11:44:20s 0:15:40 -
  18664. + Rule    sol88    1988    only    -    Nov    14    11:44:30s 0:15:30 -
  18665. + Rule    sol88    1988    only    -    Nov    15    11:44:40s 0:15:20 -
  18666. + Rule    sol88    1988    only    -    Nov    16    11:44:50s 0:15:10 -
  18667. + Rule    sol88    1988    only    -    Nov    17    11:45:00s 0:15:00 -
  18668. + Rule    sol88    1988    only    -    Nov    18    11:45:15s 0:14:45 -
  18669. + Rule    sol88    1988    only    -    Nov    19    11:45:25s 0:14:35 -
  18670. + Rule    sol88    1988    only    -    Nov    20    11:45:40s 0:14:20 -
  18671. + Rule    sol88    1988    only    -    Nov    21    11:45:55s 0:14:05 -
  18672. + Rule    sol88    1988    only    -    Nov    22    11:46:10s 0:13:50 -
  18673. + Rule    sol88    1988    only    -    Nov    23    11:46:30s 0:13:30 -
  18674. + Rule    sol88    1988    only    -    Nov    24    11:46:45s 0:13:15 -
  18675. + Rule    sol88    1988    only    -    Nov    25    11:47:05s 0:12:55 -
  18676. + Rule    sol88    1988    only    -    Nov    26    11:47:20s 0:12:40 -
  18677. + Rule    sol88    1988    only    -    Nov    27    11:47:40s 0:12:20 -
  18678. + Rule    sol88    1988    only    -    Nov    28    11:48:00s 0:12:00 -
  18679. + Rule    sol88    1988    only    -    Nov    29    11:48:25s 0:11:35 -
  18680. + Rule    sol88    1988    only    -    Nov    30    11:48:45s 0:11:15 -
  18681. + Rule    sol88    1988    only    -    Dec    1    11:49:05s 0:10:55 -
  18682. + Rule    sol88    1988    only    -    Dec    2    11:49:30s 0:10:30 -
  18683. + Rule    sol88    1988    only    -    Dec    3    11:49:55s 0:10:05 -
  18684. + Rule    sol88    1988    only    -    Dec    4    11:50:15s 0:09:45 -
  18685. + Rule    sol88    1988    only    -    Dec    5    11:50:40s 0:09:20 -
  18686. + Rule    sol88    1988    only    -    Dec    6    11:51:05s 0:08:55 -
  18687. + Rule    sol88    1988    only    -    Dec    7    11:51:35s 0:08:25 -
  18688. + Rule    sol88    1988    only    -    Dec    8    11:52:00s 0:08:00 -
  18689. + Rule    sol88    1988    only    -    Dec    9    11:52:25s 0:07:35 -
  18690. + Rule    sol88    1988    only    -    Dec    10    11:52:55s 0:07:05 -
  18691. + Rule    sol88    1988    only    -    Dec    11    11:53:20s 0:06:40 -
  18692. + Rule    sol88    1988    only    -    Dec    12    11:53:50s 0:06:10 -
  18693. + Rule    sol88    1988    only    -    Dec    13    11:54:15s 0:05:45 -
  18694. + Rule    sol88    1988    only    -    Dec    14    11:54:45s 0:05:15 -
  18695. + Rule    sol88    1988    only    -    Dec    15    11:55:15s 0:04:45 -
  18696. + Rule    sol88    1988    only    -    Dec    16    11:55:45s 0:04:15 -
  18697. + Rule    sol88    1988    only    -    Dec    17    11:56:15s 0:03:45 -
  18698. + Rule    sol88    1988    only    -    Dec    18    11:56:40s 0:03:20 -
  18699. + Rule    sol88    1988    only    -    Dec    19    11:57:10s 0:02:50 -
  18700. + Rule    sol88    1988    only    -    Dec    20    11:57:40s 0:02:20 -
  18701. + Rule    sol88    1988    only    -    Dec    21    11:58:10s 0:01:50 -
  18702. + Rule    sol88    1988    only    -    Dec    22    11:58:40s 0:01:20 -
  18703. + Rule    sol88    1988    only    -    Dec    23    11:59:10s 0:00:50 -
  18704. + Rule    sol88    1988    only    -    Dec    24    11:59:40s 0:00:20 -
  18705. + Rule    sol88    1988    only    -    Dec    25    12:00:10s -0:00:10 -
  18706. + Rule    sol88    1988    only    -    Dec    26    12:00:40s -0:00:40 -
  18707. + Rule    sol88    1988    only    -    Dec    27    12:01:10s -0:01:10 -
  18708. + Rule    sol88    1988    only    -    Dec    28    12:01:40s -0:01:40 -
  18709. + Rule    sol88    1988    only    -    Dec    29    12:02:10s -0:02:10 -
  18710. + Rule    sol88    1988    only    -    Dec    30    12:02:35s -0:02:35 -
  18711. + Rule    sol88    1988    only    -    Dec    31    12:03:05s -0:03:05 -
  18712. + # Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
  18713. + # Before and after 1988, we'll operate on local mean solar time.
  18714. + # Zone    NAME            GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  18715. + Zone    Mideast/Riyadh88    3:07:04    -        ??    1988
  18716. +                 3:07:04    sol88        ??    1989
  18717. +                 3:07:04    -        ??
  18718. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar89 emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar89
  18719. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar89    Thu Jan  1 00:00:00 1970
  18720. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/solar89    Sat Aug  1 14:24:20 1992
  18721. ***************
  18722. *** 0 ****
  18723. --- 1,391 ----
  18724. + # @(#)solar89    1.3
  18725. + # Apparent noon times below are for Riyadh; they're a bit off for other places.
  18726. + # Times were computed using a formula provided by the U. S. Naval Observatory:
  18727. + #    eqt = -105.8 * sin(l) + 596.2 * sin(2 * l) + 4.4 * sin(3 * l)
  18728. + #        -12.7 * sin(4 * l) - 429.0 * cos(l) - 2.1 * cos (2 * l)
  18729. + #        + 19.3 * cos(3 * l);
  18730. + # where l is the "mean longitude of the Sun" given by
  18731. + #    l = 279.642 degrees + 0.985647 * d
  18732. + # and d is the interval in days from January 0, 0 hours Universal Time
  18733. + # (equaling the day of the year plus the fraction of a day from zero hours).
  18734. + # The accuracy of the formula is plus or minus three seconds.
  18735. + #
  18736. + # Rounding to the nearest five seconds results in fewer than
  18737. + # 256 different "time types"--a limit that's faced because time types are
  18738. + # stored on disk as unsigned chars.
  18739. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  18740. + Rule    sol89    1989    only    -    Jan    1    12:03:35s -0:03:35 -
  18741. + Rule    sol89    1989    only    -    Jan    2    12:04:05s -0:04:05 -
  18742. + Rule    sol89    1989    only    -    Jan    3    12:04:30s -0:04:30 -
  18743. + Rule    sol89    1989    only    -    Jan    4    12:05:00s -0:05:00 -
  18744. + Rule    sol89    1989    only    -    Jan    5    12:05:25s -0:05:25 -
  18745. + Rule    sol89    1989    only    -    Jan    6    12:05:50s -0:05:50 -
  18746. + Rule    sol89    1989    only    -    Jan    7    12:06:15s -0:06:15 -
  18747. + Rule    sol89    1989    only    -    Jan    8    12:06:45s -0:06:45 -
  18748. + Rule    sol89    1989    only    -    Jan    9    12:07:10s -0:07:10 -
  18749. + Rule    sol89    1989    only    -    Jan    10    12:07:35s -0:07:35 -
  18750. + Rule    sol89    1989    only    -    Jan    11    12:07:55s -0:07:55 -
  18751. + Rule    sol89    1989    only    -    Jan    12    12:08:20s -0:08:20 -
  18752. + Rule    sol89    1989    only    -    Jan    13    12:08:45s -0:08:45 -
  18753. + Rule    sol89    1989    only    -    Jan    14    12:09:05s -0:09:05 -
  18754. + Rule    sol89    1989    only    -    Jan    15    12:09:25s -0:09:25 -
  18755. + Rule    sol89    1989    only    -    Jan    16    12:09:45s -0:09:45 -
  18756. + Rule    sol89    1989    only    -    Jan    17    12:10:05s -0:10:05 -
  18757. + Rule    sol89    1989    only    -    Jan    18    12:10:25s -0:10:25 -
  18758. + Rule    sol89    1989    only    -    Jan    19    12:10:45s -0:10:45 -
  18759. + Rule    sol89    1989    only    -    Jan    20    12:11:05s -0:11:05 -
  18760. + Rule    sol89    1989    only    -    Jan    21    12:11:20s -0:11:20 -
  18761. + Rule    sol89    1989    only    -    Jan    22    12:11:35s -0:11:35 -
  18762. + Rule    sol89    1989    only    -    Jan    23    12:11:55s -0:11:55 -
  18763. + Rule    sol89    1989    only    -    Jan    24    12:12:10s -0:12:10 -
  18764. + Rule    sol89    1989    only    -    Jan    25    12:12:20s -0:12:20 -
  18765. + Rule    sol89    1989    only    -    Jan    26    12:12:35s -0:12:35 -
  18766. + Rule    sol89    1989    only    -    Jan    27    12:12:50s -0:12:50 -
  18767. + Rule    sol89    1989    only    -    Jan    28    12:13:00s -0:13:00 -
  18768. + Rule    sol89    1989    only    -    Jan    29    12:13:10s -0:13:10 -
  18769. + Rule    sol89    1989    only    -    Jan    30    12:13:20s -0:13:20 -
  18770. + Rule    sol89    1989    only    -    Jan    31    12:13:30s -0:13:30 -
  18771. + Rule    sol89    1989    only    -    Feb    1    12:13:40s -0:13:40 -
  18772. + Rule    sol89    1989    only    -    Feb    2    12:13:45s -0:13:45 -
  18773. + Rule    sol89    1989    only    -    Feb    3    12:13:55s -0:13:55 -
  18774. + Rule    sol89    1989    only    -    Feb    4    12:14:00s -0:14:00 -
  18775. + Rule    sol89    1989    only    -    Feb    5    12:14:05s -0:14:05 -
  18776. + Rule    sol89    1989    only    -    Feb    6    12:14:10s -0:14:10 -
  18777. + Rule    sol89    1989    only    -    Feb    7    12:14:10s -0:14:10 -
  18778. + Rule    sol89    1989    only    -    Feb    8    12:14:15s -0:14:15 -
  18779. + Rule    sol89    1989    only    -    Feb    9    12:14:15s -0:14:15 -
  18780. + Rule    sol89    1989    only    -    Feb    10    12:14:20s -0:14:20 -
  18781. + Rule    sol89    1989    only    -    Feb    11    12:14:20s -0:14:20 -
  18782. + Rule    sol89    1989    only    -    Feb    12    12:14:20s -0:14:20 -
  18783. + Rule    sol89    1989    only    -    Feb    13    12:14:15s -0:14:15 -
  18784. + Rule    sol89    1989    only    -    Feb    14    12:14:15s -0:14:15 -
  18785. + Rule    sol89    1989    only    -    Feb    15    12:14:10s -0:14:10 -
  18786. + Rule    sol89    1989    only    -    Feb    16    12:14:10s -0:14:10 -
  18787. + Rule    sol89    1989    only    -    Feb    17    12:14:05s -0:14:05 -
  18788. + Rule    sol89    1989    only    -    Feb    18    12:14:00s -0:14:00 -
  18789. + Rule    sol89    1989    only    -    Feb    19    12:13:55s -0:13:55 -
  18790. + Rule    sol89    1989    only    -    Feb    20    12:13:50s -0:13:50 -
  18791. + Rule    sol89    1989    only    -    Feb    21    12:13:40s -0:13:40 -
  18792. + Rule    sol89    1989    only    -    Feb    22    12:13:35s -0:13:35 -
  18793. + Rule    sol89    1989    only    -    Feb    23    12:13:25s -0:13:25 -
  18794. + Rule    sol89    1989    only    -    Feb    24    12:13:15s -0:13:15 -
  18795. + Rule    sol89    1989    only    -    Feb    25    12:13:05s -0:13:05 -
  18796. + Rule    sol89    1989    only    -    Feb    26    12:12:55s -0:12:55 -
  18797. + Rule    sol89    1989    only    -    Feb    27    12:12:45s -0:12:45 -
  18798. + Rule    sol89    1989    only    -    Feb    28    12:12:35s -0:12:35 -
  18799. + Rule    sol89    1989    only    -    Mar    1    12:12:25s -0:12:25 -
  18800. + Rule    sol89    1989    only    -    Mar    2    12:12:10s -0:12:10 -
  18801. + Rule    sol89    1989    only    -    Mar    3    12:12:00s -0:12:00 -
  18802. + Rule    sol89    1989    only    -    Mar    4    12:11:45s -0:11:45 -
  18803. + Rule    sol89    1989    only    -    Mar    5    12:11:35s -0:11:35 -
  18804. + Rule    sol89    1989    only    -    Mar    6    12:11:20s -0:11:20 -
  18805. + Rule    sol89    1989    only    -    Mar    7    12:11:05s -0:11:05 -
  18806. + Rule    sol89    1989    only    -    Mar    8    12:10:50s -0:10:50 -
  18807. + Rule    sol89    1989    only    -    Mar    9    12:10:35s -0:10:35 -
  18808. + Rule    sol89    1989    only    -    Mar    10    12:10:20s -0:10:20 -
  18809. + Rule    sol89    1989    only    -    Mar    11    12:10:05s -0:10:05 -
  18810. + Rule    sol89    1989    only    -    Mar    12    12:09:50s -0:09:50 -
  18811. + Rule    sol89    1989    only    -    Mar    13    12:09:30s -0:09:30 -
  18812. + Rule    sol89    1989    only    -    Mar    14    12:09:15s -0:09:15 -
  18813. + Rule    sol89    1989    only    -    Mar    15    12:09:00s -0:09:00 -
  18814. + Rule    sol89    1989    only    -    Mar    16    12:08:40s -0:08:40 -
  18815. + Rule    sol89    1989    only    -    Mar    17    12:08:25s -0:08:25 -
  18816. + Rule    sol89    1989    only    -    Mar    18    12:08:05s -0:08:05 -
  18817. + Rule    sol89    1989    only    -    Mar    19    12:07:50s -0:07:50 -
  18818. + Rule    sol89    1989    only    -    Mar    20    12:07:30s -0:07:30 -
  18819. + Rule    sol89    1989    only    -    Mar    21    12:07:15s -0:07:15 -
  18820. + Rule    sol89    1989    only    -    Mar    22    12:06:55s -0:06:55 -
  18821. + Rule    sol89    1989    only    -    Mar    23    12:06:35s -0:06:35 -
  18822. + Rule    sol89    1989    only    -    Mar    24    12:06:20s -0:06:20 -
  18823. + Rule    sol89    1989    only    -    Mar    25    12:06:00s -0:06:00 -
  18824. + Rule    sol89    1989    only    -    Mar    26    12:05:40s -0:05:40 -
  18825. + Rule    sol89    1989    only    -    Mar    27    12:05:25s -0:05:25 -
  18826. + Rule    sol89    1989    only    -    Mar    28    12:05:05s -0:05:05 -
  18827. + Rule    sol89    1989    only    -    Mar    29    12:04:50s -0:04:50 -
  18828. + Rule    sol89    1989    only    -    Mar    30    12:04:30s -0:04:30 -
  18829. + Rule    sol89    1989    only    -    Mar    31    12:04:10s -0:04:10 -
  18830. + Rule    sol89    1989    only    -    Apr    1    12:03:55s -0:03:55 -
  18831. + Rule    sol89    1989    only    -    Apr    2    12:03:35s -0:03:35 -
  18832. + Rule    sol89    1989    only    -    Apr    3    12:03:20s -0:03:20 -
  18833. + Rule    sol89    1989    only    -    Apr    4    12:03:00s -0:03:00 -
  18834. + Rule    sol89    1989    only    -    Apr    5    12:02:45s -0:02:45 -
  18835. + Rule    sol89    1989    only    -    Apr    6    12:02:25s -0:02:25 -
  18836. + Rule    sol89    1989    only    -    Apr    7    12:02:10s -0:02:10 -
  18837. + Rule    sol89    1989    only    -    Apr    8    12:01:50s -0:01:50 -
  18838. + Rule    sol89    1989    only    -    Apr    9    12:01:35s -0:01:35 -
  18839. + Rule    sol89    1989    only    -    Apr    10    12:01:20s -0:01:20 -
  18840. + Rule    sol89    1989    only    -    Apr    11    12:01:05s -0:01:05 -
  18841. + Rule    sol89    1989    only    -    Apr    12    12:00:50s -0:00:50 -
  18842. + Rule    sol89    1989    only    -    Apr    13    12:00:35s -0:00:35 -
  18843. + Rule    sol89    1989    only    -    Apr    14    12:00:20s -0:00:20 -
  18844. + Rule    sol89    1989    only    -    Apr    15    12:00:05s -0:00:05 -
  18845. + Rule    sol89    1989    only    -    Apr    16    11:59:50s 0:00:10 -
  18846. + Rule    sol89    1989    only    -    Apr    17    11:59:35s 0:00:25 -
  18847. + Rule    sol89    1989    only    -    Apr    18    11:59:20s 0:00:40 -
  18848. + Rule    sol89    1989    only    -    Apr    19    11:59:10s 0:00:50 -
  18849. + Rule    sol89    1989    only    -    Apr    20    11:58:55s 0:01:05 -
  18850. + Rule    sol89    1989    only    -    Apr    21    11:58:45s 0:01:15 -
  18851. + Rule    sol89    1989    only    -    Apr    22    11:58:30s 0:01:30 -
  18852. + Rule    sol89    1989    only    -    Apr    23    11:58:20s 0:01:40 -
  18853. + Rule    sol89    1989    only    -    Apr    24    11:58:10s 0:01:50 -
  18854. + Rule    sol89    1989    only    -    Apr    25    11:58:00s 0:02:00 -
  18855. + Rule    sol89    1989    only    -    Apr    26    11:57:50s 0:02:10 -
  18856. + Rule    sol89    1989    only    -    Apr    27    11:57:40s 0:02:20 -
  18857. + Rule    sol89    1989    only    -    Apr    28    11:57:30s 0:02:30 -
  18858. + Rule    sol89    1989    only    -    Apr    29    11:57:20s 0:02:40 -
  18859. + Rule    sol89    1989    only    -    Apr    30    11:57:15s 0:02:45 -
  18860. + Rule    sol89    1989    only    -    May    1    11:57:05s 0:02:55 -
  18861. + Rule    sol89    1989    only    -    May    2    11:57:00s 0:03:00 -
  18862. + Rule    sol89    1989    only    -    May    3    11:56:50s 0:03:10 -
  18863. + Rule    sol89    1989    only    -    May    4    11:56:45s 0:03:15 -
  18864. + Rule    sol89    1989    only    -    May    5    11:56:40s 0:03:20 -
  18865. + Rule    sol89    1989    only    -    May    6    11:56:35s 0:03:25 -
  18866. + Rule    sol89    1989    only    -    May    7    11:56:30s 0:03:30 -
  18867. + Rule    sol89    1989    only    -    May    8    11:56:30s 0:03:30 -
  18868. + Rule    sol89    1989    only    -    May    9    11:56:25s 0:03:35 -
  18869. + Rule    sol89    1989    only    -    May    10    11:56:25s 0:03:35 -
  18870. + Rule    sol89    1989    only    -    May    11    11:56:20s 0:03:40 -
  18871. + Rule    sol89    1989    only    -    May    12    11:56:20s 0:03:40 -
  18872. + Rule    sol89    1989    only    -    May    13    11:56:20s 0:03:40 -
  18873. + Rule    sol89    1989    only    -    May    14    11:56:20s 0:03:40 -
  18874. + Rule    sol89    1989    only    -    May    15    11:56:20s 0:03:40 -
  18875. + Rule    sol89    1989    only    -    May    16    11:56:20s 0:03:40 -
  18876. + Rule    sol89    1989    only    -    May    17    11:56:20s 0:03:40 -
  18877. + Rule    sol89    1989    only    -    May    18    11:56:25s 0:03:35 -
  18878. + Rule    sol89    1989    only    -    May    19    11:56:25s 0:03:35 -
  18879. + Rule    sol89    1989    only    -    May    20    11:56:30s 0:03:30 -
  18880. + Rule    sol89    1989    only    -    May    21    11:56:35s 0:03:25 -
  18881. + Rule    sol89    1989    only    -    May    22    11:56:35s 0:03:25 -
  18882. + Rule    sol89    1989    only    -    May    23    11:56:40s 0:03:20 -
  18883. + Rule    sol89    1989    only    -    May    24    11:56:45s 0:03:15 -
  18884. + Rule    sol89    1989    only    -    May    25    11:56:55s 0:03:05 -
  18885. + Rule    sol89    1989    only    -    May    26    11:57:00s 0:03:00 -
  18886. + Rule    sol89    1989    only    -    May    27    11:57:05s 0:02:55 -
  18887. + Rule    sol89    1989    only    -    May    28    11:57:15s 0:02:45 -
  18888. + Rule    sol89    1989    only    -    May    29    11:57:20s 0:02:40 -
  18889. + Rule    sol89    1989    only    -    May    30    11:57:30s 0:02:30 -
  18890. + Rule    sol89    1989    only    -    May    31    11:57:35s 0:02:25 -
  18891. + Rule    sol89    1989    only    -    Jun    1    11:57:45s 0:02:15 -
  18892. + Rule    sol89    1989    only    -    Jun    2    11:57:55s 0:02:05 -
  18893. + Rule    sol89    1989    only    -    Jun    3    11:58:05s 0:01:55 -
  18894. + Rule    sol89    1989    only    -    Jun    4    11:58:15s 0:01:45 -
  18895. + Rule    sol89    1989    only    -    Jun    5    11:58:25s 0:01:35 -
  18896. + Rule    sol89    1989    only    -    Jun    6    11:58:35s 0:01:25 -
  18897. + Rule    sol89    1989    only    -    Jun    7    11:58:45s 0:01:15 -
  18898. + Rule    sol89    1989    only    -    Jun    8    11:59:00s 0:01:00 -
  18899. + Rule    sol89    1989    only    -    Jun    9    11:59:10s 0:00:50 -
  18900. + Rule    sol89    1989    only    -    Jun    10    11:59:20s 0:00:40 -
  18901. + Rule    sol89    1989    only    -    Jun    11    11:59:35s 0:00:25 -
  18902. + Rule    sol89    1989    only    -    Jun    12    11:59:45s 0:00:15 -
  18903. + Rule    sol89    1989    only    -    Jun    13    12:00:00s 0:00:00 -
  18904. + Rule    sol89    1989    only    -    Jun    14    12:00:10s -0:00:10 -
  18905. + Rule    sol89    1989    only    -    Jun    15    12:00:25s -0:00:25 -
  18906. + Rule    sol89    1989    only    -    Jun    16    12:00:35s -0:00:35 -
  18907. + Rule    sol89    1989    only    -    Jun    17    12:00:50s -0:00:50 -
  18908. + Rule    sol89    1989    only    -    Jun    18    12:01:05s -0:01:05 -
  18909. + Rule    sol89    1989    only    -    Jun    19    12:01:15s -0:01:15 -
  18910. + Rule    sol89    1989    only    -    Jun    20    12:01:30s -0:01:30 -
  18911. + Rule    sol89    1989    only    -    Jun    21    12:01:40s -0:01:40 -
  18912. + Rule    sol89    1989    only    -    Jun    22    12:01:55s -0:01:55 -
  18913. + Rule    sol89    1989    only    -    Jun    23    12:02:10s -0:02:10 -
  18914. + Rule    sol89    1989    only    -    Jun    24    12:02:20s -0:02:20 -
  18915. + Rule    sol89    1989    only    -    Jun    25    12:02:35s -0:02:35 -
  18916. + Rule    sol89    1989    only    -    Jun    26    12:02:45s -0:02:45 -
  18917. + Rule    sol89    1989    only    -    Jun    27    12:03:00s -0:03:00 -
  18918. + Rule    sol89    1989    only    -    Jun    28    12:03:10s -0:03:10 -
  18919. + Rule    sol89    1989    only    -    Jun    29    12:03:25s -0:03:25 -
  18920. + Rule    sol89    1989    only    -    Jun    30    12:03:35s -0:03:35 -
  18921. + Rule    sol89    1989    only    -    Jul    1    12:03:45s -0:03:45 -
  18922. + Rule    sol89    1989    only    -    Jul    2    12:04:00s -0:04:00 -
  18923. + Rule    sol89    1989    only    -    Jul    3    12:04:10s -0:04:10 -
  18924. + Rule    sol89    1989    only    -    Jul    4    12:04:20s -0:04:20 -
  18925. + Rule    sol89    1989    only    -    Jul    5    12:04:30s -0:04:30 -
  18926. + Rule    sol89    1989    only    -    Jul    6    12:04:40s -0:04:40 -
  18927. + Rule    sol89    1989    only    -    Jul    7    12:04:50s -0:04:50 -
  18928. + Rule    sol89    1989    only    -    Jul    8    12:05:00s -0:05:00 -
  18929. + Rule    sol89    1989    only    -    Jul    9    12:05:10s -0:05:10 -
  18930. + Rule    sol89    1989    only    -    Jul    10    12:05:20s -0:05:20 -
  18931. + Rule    sol89    1989    only    -    Jul    11    12:05:25s -0:05:25 -
  18932. + Rule    sol89    1989    only    -    Jul    12    12:05:35s -0:05:35 -
  18933. + Rule    sol89    1989    only    -    Jul    13    12:05:40s -0:05:40 -
  18934. + Rule    sol89    1989    only    -    Jul    14    12:05:50s -0:05:50 -
  18935. + Rule    sol89    1989    only    -    Jul    15    12:05:55s -0:05:55 -
  18936. + Rule    sol89    1989    only    -    Jul    16    12:06:00s -0:06:00 -
  18937. + Rule    sol89    1989    only    -    Jul    17    12:06:05s -0:06:05 -
  18938. + Rule    sol89    1989    only    -    Jul    18    12:06:10s -0:06:10 -
  18939. + Rule    sol89    1989    only    -    Jul    19    12:06:15s -0:06:15 -
  18940. + Rule    sol89    1989    only    -    Jul    20    12:06:20s -0:06:20 -
  18941. + Rule    sol89    1989    only    -    Jul    21    12:06:20s -0:06:20 -
  18942. + Rule    sol89    1989    only    -    Jul    22    12:06:25s -0:06:25 -
  18943. + Rule    sol89    1989    only    -    Jul    23    12:06:25s -0:06:25 -
  18944. + Rule    sol89    1989    only    -    Jul    24    12:06:30s -0:06:30 -
  18945. + Rule    sol89    1989    only    -    Jul    25    12:06:30s -0:06:30 -
  18946. + Rule    sol89    1989    only    -    Jul    26    12:06:30s -0:06:30 -
  18947. + Rule    sol89    1989    only    -    Jul    27    12:06:30s -0:06:30 -
  18948. + Rule    sol89    1989    only    -    Jul    28    12:06:30s -0:06:30 -
  18949. + Rule    sol89    1989    only    -    Jul    29    12:06:25s -0:06:25 -
  18950. + Rule    sol89    1989    only    -    Jul    30    12:06:25s -0:06:25 -
  18951. + Rule    sol89    1989    only    -    Jul    31    12:06:20s -0:06:20 -
  18952. + Rule    sol89    1989    only    -    Aug    1    12:06:20s -0:06:20 -
  18953. + Rule    sol89    1989    only    -    Aug    2    12:06:15s -0:06:15 -
  18954. + Rule    sol89    1989    only    -    Aug    3    12:06:10s -0:06:10 -
  18955. + Rule    sol89    1989    only    -    Aug    4    12:06:05s -0:06:05 -
  18956. + Rule    sol89    1989    only    -    Aug    5    12:06:00s -0:06:00 -
  18957. + Rule    sol89    1989    only    -    Aug    6    12:05:50s -0:05:50 -
  18958. + Rule    sol89    1989    only    -    Aug    7    12:05:45s -0:05:45 -
  18959. + Rule    sol89    1989    only    -    Aug    8    12:05:35s -0:05:35 -
  18960. + Rule    sol89    1989    only    -    Aug    9    12:05:30s -0:05:30 -
  18961. + Rule    sol89    1989    only    -    Aug    10    12:05:20s -0:05:20 -
  18962. + Rule    sol89    1989    only    -    Aug    11    12:05:10s -0:05:10 -
  18963. + Rule    sol89    1989    only    -    Aug    12    12:05:00s -0:05:00 -
  18964. + Rule    sol89    1989    only    -    Aug    13    12:04:50s -0:04:50 -
  18965. + Rule    sol89    1989    only    -    Aug    14    12:04:40s -0:04:40 -
  18966. + Rule    sol89    1989    only    -    Aug    15    12:04:30s -0:04:30 -
  18967. + Rule    sol89    1989    only    -    Aug    16    12:04:15s -0:04:15 -
  18968. + Rule    sol89    1989    only    -    Aug    17    12:04:05s -0:04:05 -
  18969. + Rule    sol89    1989    only    -    Aug    18    12:03:50s -0:03:50 -
  18970. + Rule    sol89    1989    only    -    Aug    19    12:03:35s -0:03:35 -
  18971. + Rule    sol89    1989    only    -    Aug    20    12:03:25s -0:03:25 -
  18972. + Rule    sol89    1989    only    -    Aug    21    12:03:10s -0:03:10 -
  18973. + Rule    sol89    1989    only    -    Aug    22    12:02:55s -0:02:55 -
  18974. + Rule    sol89    1989    only    -    Aug    23    12:02:40s -0:02:40 -
  18975. + Rule    sol89    1989    only    -    Aug    24    12:02:20s -0:02:20 -
  18976. + Rule    sol89    1989    only    -    Aug    25    12:02:05s -0:02:05 -
  18977. + Rule    sol89    1989    only    -    Aug    26    12:01:50s -0:01:50 -
  18978. + Rule    sol89    1989    only    -    Aug    27    12:01:30s -0:01:30 -
  18979. + Rule    sol89    1989    only    -    Aug    28    12:01:15s -0:01:15 -
  18980. + Rule    sol89    1989    only    -    Aug    29    12:00:55s -0:00:55 -
  18981. + Rule    sol89    1989    only    -    Aug    30    12:00:40s -0:00:40 -
  18982. + Rule    sol89    1989    only    -    Aug    31    12:00:20s -0:00:20 -
  18983. + Rule    sol89    1989    only    -    Sep    1    12:00:00s 0:00:00 -
  18984. + Rule    sol89    1989    only    -    Sep    2    11:59:45s 0:00:15 -
  18985. + Rule    sol89    1989    only    -    Sep    3    11:59:25s 0:00:35 -
  18986. + Rule    sol89    1989    only    -    Sep    4    11:59:05s 0:00:55 -
  18987. + Rule    sol89    1989    only    -    Sep    5    11:58:45s 0:01:15 -
  18988. + Rule    sol89    1989    only    -    Sep    6    11:58:25s 0:01:35 -
  18989. + Rule    sol89    1989    only    -    Sep    7    11:58:05s 0:01:55 -
  18990. + Rule    sol89    1989    only    -    Sep    8    11:57:45s 0:02:15 -
  18991. + Rule    sol89    1989    only    -    Sep    9    11:57:20s 0:02:40 -
  18992. + Rule    sol89    1989    only    -    Sep    10    11:57:00s 0:03:00 -
  18993. + Rule    sol89    1989    only    -    Sep    11    11:56:40s 0:03:20 -
  18994. + Rule    sol89    1989    only    -    Sep    12    11:56:20s 0:03:40 -
  18995. + Rule    sol89    1989    only    -    Sep    13    11:56:00s 0:04:00 -
  18996. + Rule    sol89    1989    only    -    Sep    14    11:55:35s 0:04:25 -
  18997. + Rule    sol89    1989    only    -    Sep    15    11:55:15s 0:04:45 -
  18998. + Rule    sol89    1989    only    -    Sep    16    11:54:55s 0:05:05 -
  18999. + Rule    sol89    1989    only    -    Sep    17    11:54:35s 0:05:25 -
  19000. + Rule    sol89    1989    only    -    Sep    18    11:54:10s 0:05:50 -
  19001. + Rule    sol89    1989    only    -    Sep    19    11:53:50s 0:06:10 -
  19002. + Rule    sol89    1989    only    -    Sep    20    11:53:30s 0:06:30 -
  19003. + Rule    sol89    1989    only    -    Sep    21    11:53:10s 0:06:50 -
  19004. + Rule    sol89    1989    only    -    Sep    22    11:52:45s 0:07:15 -
  19005. + Rule    sol89    1989    only    -    Sep    23    11:52:25s 0:07:35 -
  19006. + Rule    sol89    1989    only    -    Sep    24    11:52:05s 0:07:55 -
  19007. + Rule    sol89    1989    only    -    Sep    25    11:51:45s 0:08:15 -
  19008. + Rule    sol89    1989    only    -    Sep    26    11:51:25s 0:08:35 -
  19009. + Rule    sol89    1989    only    -    Sep    27    11:51:05s 0:08:55 -
  19010. + Rule    sol89    1989    only    -    Sep    28    11:50:40s 0:09:20 -
  19011. + Rule    sol89    1989    only    -    Sep    29    11:50:20s 0:09:40 -
  19012. + Rule    sol89    1989    only    -    Sep    30    11:50:00s 0:10:00 -
  19013. + Rule    sol89    1989    only    -    Oct    1    11:49:45s 0:10:15 -
  19014. + Rule    sol89    1989    only    -    Oct    2    11:49:25s 0:10:35 -
  19015. + Rule    sol89    1989    only    -    Oct    3    11:49:05s 0:10:55 -
  19016. + Rule    sol89    1989    only    -    Oct    4    11:48:45s 0:11:15 -
  19017. + Rule    sol89    1989    only    -    Oct    5    11:48:30s 0:11:30 -
  19018. + Rule    sol89    1989    only    -    Oct    6    11:48:10s 0:11:50 -
  19019. + Rule    sol89    1989    only    -    Oct    7    11:47:50s 0:12:10 -
  19020. + Rule    sol89    1989    only    -    Oct    8    11:47:35s 0:12:25 -
  19021. + Rule    sol89    1989    only    -    Oct    9    11:47:20s 0:12:40 -
  19022. + Rule    sol89    1989    only    -    Oct    10    11:47:00s 0:13:00 -
  19023. + Rule    sol89    1989    only    -    Oct    11    11:46:45s 0:13:15 -
  19024. + Rule    sol89    1989    only    -    Oct    12    11:46:30s 0:13:30 -
  19025. + Rule    sol89    1989    only    -    Oct    13    11:46:15s 0:13:45 -
  19026. + Rule    sol89    1989    only    -    Oct    14    11:46:00s 0:14:00 -
  19027. + Rule    sol89    1989    only    -    Oct    15    11:45:50s 0:14:10 -
  19028. + Rule    sol89    1989    only    -    Oct    16    11:45:35s 0:14:25 -
  19029. + Rule    sol89    1989    only    -    Oct    17    11:45:20s 0:14:40 -
  19030. + Rule    sol89    1989    only    -    Oct    18    11:45:10s 0:14:50 -
  19031. + Rule    sol89    1989    only    -    Oct    19    11:45:00s 0:15:00 -
  19032. + Rule    sol89    1989    only    -    Oct    20    11:44:50s 0:15:10 -
  19033. + Rule    sol89    1989    only    -    Oct    21    11:44:40s 0:15:20 -
  19034. + Rule    sol89    1989    only    -    Oct    22    11:44:30s 0:15:30 -
  19035. + Rule    sol89    1989    only    -    Oct    23    11:44:20s 0:15:40 -
  19036. + Rule    sol89    1989    only    -    Oct    24    11:44:10s 0:15:50 -
  19037. + Rule    sol89    1989    only    -    Oct    25    11:44:05s 0:15:55 -
  19038. + Rule    sol89    1989    only    -    Oct    26    11:44:00s 0:16:00 -
  19039. + Rule    sol89    1989    only    -    Oct    27    11:43:50s 0:16:10 -
  19040. + Rule    sol89    1989    only    -    Oct    28    11:43:45s 0:16:15 -
  19041. + Rule    sol89    1989    only    -    Oct    29    11:43:40s 0:16:20 -
  19042. + Rule    sol89    1989    only    -    Oct    30    11:43:40s 0:16:20 -
  19043. + Rule    sol89    1989    only    -    Oct    31    11:43:35s 0:16:25 -
  19044. + Rule    sol89    1989    only    -    Nov    1    11:43:35s 0:16:25 -
  19045. + Rule    sol89    1989    only    -    Nov    2    11:43:35s 0:16:25 -
  19046. + Rule    sol89    1989    only    -    Nov    3    11:43:30s 0:16:30 -
  19047. + Rule    sol89    1989    only    -    Nov    4    11:43:35s 0:16:25 -
  19048. + Rule    sol89    1989    only    -    Nov    5    11:43:35s 0:16:25 -
  19049. + Rule    sol89    1989    only    -    Nov    6    11:43:35s 0:16:25 -
  19050. + Rule    sol89    1989    only    -    Nov    7    11:43:40s 0:16:20 -
  19051. + Rule    sol89    1989    only    -    Nov    8    11:43:45s 0:16:15 -
  19052. + Rule    sol89    1989    only    -    Nov    9    11:43:50s 0:16:10 -
  19053. + Rule    sol89    1989    only    -    Nov    10    11:43:55s 0:16:05 -
  19054. + Rule    sol89    1989    only    -    Nov    11    11:44:00s 0:16:00 -
  19055. + Rule    sol89    1989    only    -    Nov    12    11:44:05s 0:15:55 -
  19056. + Rule    sol89    1989    only    -    Nov    13    11:44:15s 0:15:45 -
  19057. + Rule    sol89    1989    only    -    Nov    14    11:44:25s 0:15:35 -
  19058. + Rule    sol89    1989    only    -    Nov    15    11:44:35s 0:15:25 -
  19059. + Rule    sol89    1989    only    -    Nov    16    11:44:45s 0:15:15 -
  19060. + Rule    sol89    1989    only    -    Nov    17    11:44:55s 0:15:05 -
  19061. + Rule    sol89    1989    only    -    Nov    18    11:45:10s 0:14:50 -
  19062. + Rule    sol89    1989    only    -    Nov    19    11:45:20s 0:14:40 -
  19063. + Rule    sol89    1989    only    -    Nov    20    11:45:35s 0:14:25 -
  19064. + Rule    sol89    1989    only    -    Nov    21    11:45:50s 0:14:10 -
  19065. + Rule    sol89    1989    only    -    Nov    22    11:46:05s 0:13:55 -
  19066. + Rule    sol89    1989    only    -    Nov    23    11:46:25s 0:13:35 -
  19067. + Rule    sol89    1989    only    -    Nov    24    11:46:40s 0:13:20 -
  19068. + Rule    sol89    1989    only    -    Nov    25    11:47:00s 0:13:00 -
  19069. + Rule    sol89    1989    only    -    Nov    26    11:47:20s 0:12:40 -
  19070. + Rule    sol89    1989    only    -    Nov    27    11:47:35s 0:12:25 -
  19071. + Rule    sol89    1989    only    -    Nov    28    11:47:55s 0:12:05 -
  19072. + Rule    sol89    1989    only    -    Nov    29    11:48:20s 0:11:40 -
  19073. + Rule    sol89    1989    only    -    Nov    30    11:48:40s 0:11:20 -
  19074. + Rule    sol89    1989    only    -    Dec    1    11:49:00s 0:11:00 -
  19075. + Rule    sol89    1989    only    -    Dec    2    11:49:25s 0:10:35 -
  19076. + Rule    sol89    1989    only    -    Dec    3    11:49:50s 0:10:10 -
  19077. + Rule    sol89    1989    only    -    Dec    4    11:50:15s 0:09:45 -
  19078. + Rule    sol89    1989    only    -    Dec    5    11:50:35s 0:09:25 -
  19079. + Rule    sol89    1989    only    -    Dec    6    11:51:00s 0:09:00 -
  19080. + Rule    sol89    1989    only    -    Dec    7    11:51:30s 0:08:30 -
  19081. + Rule    sol89    1989    only    -    Dec    8    11:51:55s 0:08:05 -
  19082. + Rule    sol89    1989    only    -    Dec    9    11:52:20s 0:07:40 -
  19083. + Rule    sol89    1989    only    -    Dec    10    11:52:50s 0:07:10 -
  19084. + Rule    sol89    1989    only    -    Dec    11    11:53:15s 0:06:45 -
  19085. + Rule    sol89    1989    only    -    Dec    12    11:53:45s 0:06:15 -
  19086. + Rule    sol89    1989    only    -    Dec    13    11:54:10s 0:05:50 -
  19087. + Rule    sol89    1989    only    -    Dec    14    11:54:40s 0:05:20 -
  19088. + Rule    sol89    1989    only    -    Dec    15    11:55:10s 0:04:50 -
  19089. + Rule    sol89    1989    only    -    Dec    16    11:55:40s 0:04:20 -
  19090. + Rule    sol89    1989    only    -    Dec    17    11:56:05s 0:03:55 -
  19091. + Rule    sol89    1989    only    -    Dec    18    11:56:35s 0:03:25 -
  19092. + Rule    sol89    1989    only    -    Dec    19    11:57:05s 0:02:55 -
  19093. + Rule    sol89    1989    only    -    Dec    20    11:57:35s 0:02:25 -
  19094. + Rule    sol89    1989    only    -    Dec    21    11:58:05s 0:01:55 -
  19095. + Rule    sol89    1989    only    -    Dec    22    11:58:35s 0:01:25 -
  19096. + Rule    sol89    1989    only    -    Dec    23    11:59:05s 0:00:55 -
  19097. + Rule    sol89    1989    only    -    Dec    24    11:59:35s 0:00:25 -
  19098. + Rule    sol89    1989    only    -    Dec    25    12:00:05s -0:00:05 -
  19099. + Rule    sol89    1989    only    -    Dec    26    12:00:35s -0:00:35 -
  19100. + Rule    sol89    1989    only    -    Dec    27    12:01:05s -0:01:05 -
  19101. + Rule    sol89    1989    only    -    Dec    28    12:01:35s -0:01:35 -
  19102. + Rule    sol89    1989    only    -    Dec    29    12:02:00s -0:02:00 -
  19103. + Rule    sol89    1989    only    -    Dec    30    12:02:30s -0:02:30 -
  19104. + Rule    sol89    1989    only    -    Dec    31    12:03:00s -0:03:00 -
  19105. + # Riyadh is at about 46 degrees 46 minutes East:  3 hrs, 7 mins, 4 secs
  19106. + # Before and after 1989, we'll operate on local mean solar time.
  19107. + # Zone    NAME            GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  19108. + Zone    Mideast/Riyadh89    3:07:04    -        ??    1989
  19109. +                 3:07:04    sol89        ??    1990
  19110. +                 3:07:04    -        ??
  19111. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/southamerica emacs-18.59/amiga/unix/src/zoneinfo/datfiles/southamerica
  19112. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/southamerica    Thu Jan  1 00:00:00 1970
  19113. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/southamerica    Sat Aug  1 14:24:20 1992
  19114. ***************
  19115. *** 0 ****
  19116. --- 1,103 ----
  19117. + # @(#)southamerica    4.3
  19118. + # From Guy Harris:
  19119. + # From Official Airline Guide - Worldwide Edition (1987).  Countries not
  19120. + # listed here do not observe DST, according to the OAG.  Time zone names
  19121. + # are pure inventions, and none are supplied for countries not observing
  19122. + # DST; updates from natives would be appreciated.  The times that DST
  19123. + # starts and ends are based on the assumption that they switch a 2AM just
  19124. + # as everybody else does.
  19125. + ###############################################################################
  19126. + # Brazil
  19127. + # From Guy Harris:
  19128. + # The OAG lists October 25, 1987 and February 12, 1988 as the starting and
  19129. + # ending dates, giving them as "estimated date(s) based on previous year".  We
  19130. + # infer a rule here from one example, always a dangerous practice....  Yes,
  19131. + # they really do switch on Saturday, according to the OAG.
  19132. + # "Brazil/Acre" is for the Territory of Acre; "Brazil/DeNoronha" is for
  19133. + # Fernando De Noronha.
  19134. + # From Bob Devine (January 28, 1988):
  19135. + # The only information I found is that there was no DST up to 1985.
  19136. + # But there was some before 1952!
  19137. + # From U. S. Naval Observatory (January 16, 1989):
  19138. + # BRAZIL     WEST     5 H  BEHIND UTC    TERRITORY OF ACRE
  19139. + # BRAZIL     WEST     4 H  BEHIND UTC    ACRE OCT 23, '88-FEB 11,
  19140. + # BRAZIL                                 '89 (ESTIMATED)
  19141. + # BRAZIL     CENTRAL  4 H  BEHIND UTC    MANAUS
  19142. + # BRAZIL     CENTRAL  3 H  BEHIND UTC    MANAUS OCT 23, '88-FEB 11,
  19143. + # BRAZIL     CENTRAL                     '89 (ESTIMATED)
  19144. + # BRAZIL     EAST     3 H  BEHIND UTC    COASTAL STATES, RIO, SAO
  19145. + # BRAZIL     EAST                        PAULO, BRASILIA
  19146. + # BRAZIL     EAST     2 H  BEHIND UTC    COASTAL STATES, RIO, SAO
  19147. + # BRAZIL                                 PAULO, BRASILIA OCT 23,
  19148. + # BRAZIL                                 '88-FEB 11, '89
  19149. + # BRAZIL                                 (ESTIMATED)
  19150. + # BRAZIL              2 H  BEHIND UTC    ATLANTIC ISLANDS, FERNANDO
  19151. + # BRAZIL                                 DE NORONHA
  19152. + # BRAZIL              1 H  BEHIND UTC    OCT 23, '88-FEB 11, '89
  19153. + # BRAZIL                                 (ESTIMATED)
  19154. + # BRAZIL              3 H  BEHIND UTC    FOR MOST MAJOR AIRPORTS.
  19155. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  19156. + Rule    Brazil    1987    max    -    Feb    Sat<=14    2:00    0    S
  19157. + Rule    Brazil    1987    max    -    Oct    Sat<=28    2:00    1:00    D
  19158. + # Zone    NAME            GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  19159. + Zone    Brazil/East        -3:00    Brazil        E%sT
  19160. + Zone    Brazil/West        -4:00    Brazil        W%sT
  19161. + Zone    Brazil/Acre        -5:00    Brazil        A%sT
  19162. + Zone    Brazil/DeNoronha    -2:00    Brazil        F%sT
  19163. + ###############################################################################
  19164. + # Chile
  19165. + # From Guy Harris:
  19166. + # The OAG lists October 11, 1987 and March 12, 1988 as the starting and
  19167. + # ending dates, giving them as "estimated date(s) based on previous year."
  19168. + # From Bob Devine (January 28, 1988):
  19169. + # Chile has had 2nd Sunday in October to 2nd Sunday in March DST since 1977.
  19170. + # Switch is at midnight. OAG is right.
  19171. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  19172. + Rule    Chile    1977    max    -    Oct    Sun>=8    0:00    1:00    D
  19173. + Rule    Chile    1978    max    -    Mar    Sun>=8    0:00    0    S
  19174. + # Zone    NAME            GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  19175. + Zone    Chile/Continental    -4:00    Chile        C%sT
  19176. + Zone    Chile/EasterIsland    -6:00    Chile        E%sT
  19177. + ###############################################################################
  19178. + # Paraguay
  19179. + # From Bob Devine (January 28, 1988):
  19180. + # Paraguay: First day in October to last in March.  Midnight switch??
  19181. + # Since 1980.
  19182. + # From U. S. Naval Observatory (January 19, 1989):
  19183. + # PARAGUAY            4 H  BEHIND UTC
  19184. + # PARAGUAY            3 H  BEHIND UTC    OCT 1, '88-MAR 31, '89
  19185. + # From Arthur David Olson (January 21, 1989):
  19186. + # Still don't know time of day when switch occurs.  Punt.
  19187. + ###############################################################################
  19188. + # Argentina
  19189. + # From Bob Devine (January 28, 1988):
  19190. + # Argentina: first Sunday in October to first Sunday in April since 1976.
  19191. + # Double Summer time from 1969 to 1974.  Switches at midnight.
  19192. + # From U. S. Naval Observatory (January 19, 19889):
  19193. + # ARGENTINA           3 H BEHIND   UTC
  19194. + # From Arthur David Olson (January 21, 1989):
  19195. + # OAG, USNO and Bob have different data.  Punt.
  19196. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/systemv emacs-18.59/amiga/unix/src/zoneinfo/datfiles/systemv
  19197. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/systemv    Thu Jan  1 00:00:00 1970
  19198. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/systemv    Sat Aug  1 14:24:22 1992
  19199. ***************
  19200. *** 0 ****
  19201. --- 1,35 ----
  19202. + # @(#)systemv    4.1
  19203. + # Old rules, should the need arise.
  19204. + # No attempt is made to handle Newfoundland, since it cannot be expressed
  19205. + # using the System V "TZ" scheme (half-hour offset), or anything outside
  19206. + # North America (no support for non-standard DST start/end dates), nor
  19207. + # the change in the DST rules in the US in 1987 (can't split between
  19208. + # Canada, with no changes, and the US)
  19209. + #
  19210. + # Be sure to compile this *without* leap second correction for true conformance.
  19211. + # Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  19212. + Rule    SystemV    min    1973    -    Apr    lastSun    2:00    1:00    D
  19213. + Rule    SystemV    min    1973    -    Oct    lastSun    2:00    0    S
  19214. + Rule    SystemV    1974    only    -    Jan    6    2:00    1:00    D
  19215. + Rule    SystemV    1974    only    -    Nov    lastSun    2:00    0    S
  19216. + Rule    SystemV    1975    only    -    Feb    23    2:00    1:00    D
  19217. + Rule    SystemV    1975    only    -    Oct    lastSun    2:00    0    S
  19218. + Rule    SystemV    1976    max    -    Apr    lastSun    2:00    1:00    D
  19219. + Rule    SystemV    1976    max    -    Oct    lastSun    2:00    0    S
  19220. + # Zone    NAME        GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  19221. + Zone    SystemV/AST4ADT    -4:00    SystemV        A%sT
  19222. + Zone    SystemV/EST5EDT    -5:00    SystemV        E%sT
  19223. + Zone    SystemV/CST6CDT    -6:00    SystemV        C%sT
  19224. + Zone    SystemV/MST7MDT    -7:00    SystemV        M%sT
  19225. + Zone    SystemV/PST8PDT    -8:00    SystemV        P%sT
  19226. + Zone    SystemV/YST9YDT    -9:00    SystemV        Y%sT
  19227. + Zone    SystemV/AST4    -4:00    -        AST
  19228. + Zone    SystemV/EST5    -5:00    -        EST
  19229. + Zone    SystemV/CST6    -6:00    -        CST
  19230. + Zone    SystemV/MST7    -7:00    -        MST
  19231. + Zone    SystemV/PST8    -8:00    -        PST
  19232. + Zone    SystemV/YST9    -9:00    -        YST
  19233. + Zone    SystemV/HST10    -10:00    -        HST
  19234. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/usno1988 emacs-18.59/amiga/unix/src/zoneinfo/datfiles/usno1988
  19235. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/usno1988    Thu Jan  1 00:00:00 1970
  19236. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/usno1988    Sat Aug  1 14:24:22 1992
  19237. ***************
  19238. *** 0 ****
  19239. --- 1,111 ----
  19240. + # @(#)usno1988    1.1
  19241. + #
  19242. + # From Arthur David Olson (January 19, 1989):
  19243. + #
  19244. + # Here's some United States Naval Observatory time zone data from
  19245. + # February 1988.  It's here mostly to convince you that the USNO has indeed
  19246. + # been updating its files (see its 1989 data elsewhere).
  19247. + #
  19248. + ANDORRA             1 H AHEAD OF UTC
  19249. + ARGENTINA           3 H BEHIND   UTC
  19250. + BRASIL   WEST       5 H BEHIND UTC        (CRUZEIRO DO SUL) 
  19251. + BRASIL   CENTRAL    4 H BEHIND UTC              (MANAUS)
  19252. + BRASIL   EAST       3 H BEHIND UTC   COASTAL STATES, RIO, SP, BRASILIA
  19253. + BRASIL              2 H BEHIND UTC   ATLANTIC ISLANDS 
  19254. + BRAZIL              5 H BEHIND UTC   WEST (CRUZEIRO DO SUL) 
  19255. + BRAZIL              4 H BEHIND UTC   CENTRAL    (MANAUS)
  19256. + BRAZIL              3 H BEHIND UTC   COASTAL STATES, RIO, SP, BRASILIA
  19257. + BRAZIL              3 H BEHIND UTC   FOR MOST MAJOR AIRPORTS. 
  19258. + BRAZIL              2 H BEHIND UTC   ATLANTIC ISLANDS 
  19259. + BULGARIA            2 H AHEAD OF UTC WINTER 
  19260. + BULGARIA            3 H AHEAD OF UTC SUMMER MAR31 - SEP 85, 0100 LOCAL
  19261. + CHINA               8 H AHEAD OF UTC; ALL OF CHINA, INCL TAIWAN 
  19262. + CUBA                5 H BEHIND UTC IN WINTER
  19263. + CUBA                4 H BEHIND UTC MAY 8 - OCT 8
  19264. + CYPRUS              2 H AHEAD UTC IN WINTER 
  19265. + CYPRUS              3 H AHEAD UTC MAR 25 - SEP 30 
  19266. + DENMARK             1 H AHEAD UTC IN WINTER 
  19267. + DENMARK             2 H AHEAD UTC MAR 31 - SEP 30  , 0200 LOCAL 
  19268. + DENMK. FAEROE IS    1 H AHEAD UTC MAR 31 - SEP 30  , 0200 LOCAL 
  19269. + EGYPT               2 H AHEAD UTC 
  19270. + EGYPT               3 H AHEAD UTC SUMMER (AFTER RAMADAN)
  19271. + ENGLAND             ON UTC IN WINTER; WALES, SCOTLAND, N.I., CH.IS. 
  19272. + ENGLAND             1 H AHEAD OF UTC; SUMMER TIL 28 OCT 0200 LOCAL
  19273. + FINLAND             2 H AHEAD OF UTC IN WINTER
  19274. + FINLAND             3 H AHEAD OF UTC MAR 25 - SEP 30  
  19275. + FRANCE              1 H AHEAD OF UTC IN WINTER
  19276. + FRANCE              2 H AHEAD OF UTC MAR 31 - SEP 30 , 0100 LOCAL 
  19277. + GREECE              2 H AHEAD OF UTC IN WINTER
  19278. + GREECE              3 H AHEAD OF UTC IN SUMMER EFF. 31MAR85 02/03 LOCAL 
  19279. + GREECE              3 H AHEAD OF UTC MAR 25 - SEP 30
  19280. + GREENLAND           4 H BEHIND UTC  IN THULE AIRBASE YEAR ROUND 
  19281. + GREENLAND           3 H BEHIND UTC  IN WINTER AT SONDRESTROM
  19282. + GREENLAND           2 H BEHIND UTC  30 MAR - 30 SEP 2200 LOCAL AT -"- 
  19283. + GREENLAND           2 H BEHIND UTC  AROUND SCORESBY SUND
  19284. + ICELAND             ON UTC
  19285. + IRAN                3.5H AHEAD OF UTC 
  19286. + IRELAND             ON UTC IN WINTER
  19287. + IRELAND             1 H AHEAD OF UTC MAR 31 - OCT 23  0200 LOCAL
  19288. + ITALY               1 H AHEAD OF UTC IN WINTER
  19289. + ITALY               2 H AHEAD OF UTC MAR 31 - SEP 30, 0030 LOCAL
  19290. + JAMAICA             5 H BEHIND UTC IN WINTER
  19291. + JAMAICA             4 H BEHIND UTC APR 29 - OCT 29
  19292. + LIBYA               2 H AHEAD OF UTC
  19293. + MEXICO BAJA CAL N   8 H BEHIND UTC IN WINTER; NORTH BAJA CAL, TIJUANA 
  19294. + MEXICO BAJA CAL N   7 H BEHIND UTC APR 29 - OCT 29
  19295. + MEXICO BAJA CAL S   7 H BEHIND UTC ALL YEAR; MAZATLAN 
  19296. + MEXICO CENTRAL      6 H BEHIND UTC ALL YEAR; MEXICO CITY
  19297. + MONACO              1 H AHEAD UTC IN WINTER 
  19298. + MONACO              2 H AHEAD UTC MAR 25 - SEP30
  19299. + PARAGUAY            4 H BEHIND UTC IN WINTER
  19300. + PARAGUAY            3 H BEHIND UTC SEP 30 - MAR 30
  19301. + POLAND              1 H AHEAD OF UTC IN WINTER
  19302. + POLAND              2 H AHEAD OF UTC MAR 24 - SEP     0200 LOCAL
  19303. + PORTUGAL            ON UTC IN WINTER
  19304. + PORTUGAL            1 H AHEAD OF UTC IN SUMMER MAR 31 - SEP 29   0100 LOCAL 
  19305. + PORTUGAL AZORES     1 H BEHIND UTC IN WINTER
  19306. + PORTUGAL AZORES     ON UTC IN SUMMER MAR 31 - SEP 29
  19307. + PORTUGAL MADEIRA    ON UTC ALL YEAR;
  19308. + ROMANIA             2 H AHEAD OF UTC IN WINTER
  19309. + ROMANIA             3 H AHEAD OF UTC APR 3 - SEP 24 
  19310. + SCOTLAND            SEE ENGLAND 
  19311. + SWITZERLAND         1 H AHEAD OF UTC IN WINTER
  19312. + SWITZERLAND         2 H AHEAD OF UTC MAR 31 - SEP 30  0200 LOCAL
  19313. + TURKEY              3 H AHEAD OF UTC
  19314. + USA   EASTERN       5 H BEHIND UTC IN WINTER; NEW YORK, WASHINGTON
  19315. + USA   EASTERN       4 H BEHIND UTC APR 29 - OCT 29
  19316. + USA   CENTRAL       6 H BEHIND UTC IN WINTER; CHICAGO, HOUSTON
  19317. + USA   CENTRAL       5 H BEHIND UTC APR 29 - OCT 29
  19318. + USA   MOUNTAIN      7 H BEHIND UTC IN WINTER; DENVER
  19319. + USA   MOUNTAIN      6 H BEHIND UTC APR 29 - OCT 29
  19320. + USA   PACIFIC       8 H BEHIND UTC IN WINTER; L.A., SAN FRANCISCO 
  19321. + USA   PACIFIC       7 H BEHIND UTC APR 29 - OCT 29
  19322. + USA   ALASKA STD    9 H BEHIND UTC IN WINTER; MOST OF ALASKA     (AKST) 
  19323. + USA   ALASKA STD    8 H BEHIND UTC APR 29 - OCT 29               (AKDT) 
  19324. + USA   ALEUTIAN     10 H BEHIND UTC IN WINTER; ISLANDS WEST OF 170W
  19325. + USA   - " -         9 H BEHIND UTC APR 29 - OCT 29
  19326. + USA   HAWAII       10 H BEHIND UTC ALL YEAR;
  19327. + USA   BERING       11 H BEHIND UTC ALL YEAR; SAMOA, MIDWAY
  19328. + USSR WEST EUROP     3 H AHEAD OF UTC IN WINTER; LENINGRAD, MOSCOW 
  19329. + USSR WEST EUROP     4 H AHEAD OF UTC APR 1 - SEP 30 
  19330. + USSR CENTRAL EUR    4 H AHEAD OF UTC IN WINTER; ROSTOV, BAKU
  19331. + USSR CENTRAL EUR    5 H AHEAD OF UTC APR 1 - SEP 30 
  19332. + USSR EAST EUROP     5 H AHEAD OF UTC IN WINTER; SVERDLOVSK
  19333. + USSR EAST EUROP     6 H AHEAD OF UTC APR 1 - SEP 30 
  19334. + USSR WEST SIBERIAN  6 H AHEAD OF UTC IN WINTER; TASHKENT, ALMA ATA
  19335. + USSR WEST SIBERIAN  7 H AHEAD OF UTC APR 1 - SEP 30 
  19336. + USSR WEST-CENTRAL   7 H AHEAD OF UTC IN WINTER; NOVOSIBIRSK 
  19337. + USSR WEST-CENTRAL   8 H AHEAD OF UTC APR 1 - SEP 30 
  19338. + USSR WEST-CENTRAL   8 H AHEAD OF UTC IN WINTER; IRKUTSK 
  19339. + USSR WEST-CENTRAL   9 H AHEAD OF UTC APR 1 - SEP 30 
  19340. + USSR CENTRAL SIB    9 H AHEAD OF UTC IN WINTER; YAKUTSK 
  19341. + USSR CENTRAL SIB   10 H AHEAD OF UTC APR 1 - SEP 30 
  19342. + USSR CENTRAL SIB   10 H AHEAD OF UTC IN WINTER; VLADIVOSTOK 
  19343. + USSR CENTRAL SIB   11 H AHEAD OF UTC APR 1 - SEP 30 
  19344. + USSR EAST SIBERIA  11 H AHEAD OF UTC IN WINTER; MAGADAN 
  19345. + USSR EAST SIBERIA  12 H AHEAD OF UTC APR 1 - SEP 30 
  19346. + USSR EAST SIBERIA  12 H AHEAD OF UTC IN WINTER; PETROPAVLOVSK 
  19347. + USSR EAST SIBERIA  13 H AHEAD OF UTC APR 1 - SEP 30 
  19348. + USSR EAST SIBERIA  13 H AHEAD OF UTC IN WINTER; UELEN 
  19349. + USSR EAST SIBERIA  14 H AHEAD OF UTC APR 1 - SEP 30 
  19350. + WALES               SEE ENGLAND 
  19351. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/usno1989 emacs-18.59/amiga/unix/src/zoneinfo/datfiles/usno1989
  19352. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/datfiles/usno1989    Thu Jan  1 00:00:00 1970
  19353. --- emacs-18.59/amiga/unix/src/zoneinfo/datfiles/usno1989    Sat Aug  1 14:24:26 1992
  19354. ***************
  19355. *** 0 ****
  19356. --- 1,452 ----
  19357. + # @(#)usno1989    1.3
  19358. + #
  19359. + # From Arthur David Olson (January 19, 1989):
  19360. + # 
  19361. + # Here's time zone information from the United States Naval Observatory;
  19362. + # no corrections have been made, and there are some obvious challenges.
  19363. + # The USNO warns:
  19364. + #    DUE TO FREQUENT CHANGES IN THE LOCAL LAWS GOVERNING DAYLIGHT
  19365. + #    SAVING TIME, WE CANNOT GUARANTEE THE ACCURACY OF THIS
  19366. + #    INFORMATION.  PLEASE ALERT US TO ANY DISCREPANCY YOU MAY
  19367. + #    DISCOVER.
  19368. + #
  19369. + AFGHANISTAN         4.5H AHEAD OF UTC
  19370. + ALBANIA             1 H  AHEAD OF UTC
  19371. + ALBANIA             2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19372. + ALBANIA                                (ESTIMATED)
  19373. + ALGERIA             1 H  AHEAD OF UTC
  19374. + AMERICAN SAMOA     11 H  BEHIND UTC
  19375. + ANDORRA             1 H  AHEAD OF UTC
  19376. + ANDORRA             2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19377. + ANDORRA                                (ESTIMATED)
  19378. + ANGOLA              1 H  AHEAD OF UTC
  19379. + ARGENTINA           3 H  BEHIND UTC
  19380. + ARUBA               4 H  BEHIND UTC    ALSO BONAIRE, CURACAO,
  19381. + ARUBA                                  ST.MAARTEN
  19382. + AUSTRALIA  WEST     8 H  AHEAD OF UTC  PERTH, EXMOUTH
  19383. + AUSTRALIA  N.T.     9.5H AHEAD OF UTC  DARWIN  NO ADVANCED TIME
  19384. + AUSTRALIA  N.T.                                IN SUMMER
  19385. + AUSTRALIA  SOUTH    9.5H AHEAD OF UTC  ADELAIDE
  19386. + AUSTRALIA                              INCLUDING BROKEN HILL, NSW
  19387. + AUSTRALIA  SOUTH   10.5H AHEAD OF UTC  ADELAIDE OCT 30, '88-MAR
  19388. + AUSTRALIA  SOUTH                       18, '89 INCLUDING BROKEN
  19389. + AUSTRIALIA SOUTH                       HILL, NSW
  19390. + AUSTRALIA  QUEENL  10 H  AHEAD OF UTC
  19391. + AUSTRALIA  NSW     10 H  AHEAD OF UTC  SYDNEY
  19392. + AUSTRALIA  NSW     11 H  AHEAD OF UTC  SYDNEY OCT 30, '88-MAR 18,
  19393. + AUSTRALIA  NSW                         '89
  19394. + AUSTRALIA  TASM.   10 H  AHEAD OF UTC  HOBART
  19395. + AUSTRALIA  TASM.   11 H  AHEAD OF UTC  HOBART OCT 30, '88-MAR 18,
  19396. + AUSTRALIA  TASM.                       '89
  19397. + AUSTRIA             1 H  AHEAD OF UTC
  19398. + AUSTRIA             2 H  AHEAD OF UTC  MAR 27 - SEPT 24
  19399. + AZORES                   SEE PORTUGAL
  19400. + BAHAMAS             5 H  BEHIND UTC    EXCLUDING TURKS AND CAICOS
  19401. + BAHAMAS                                ISLANDS)
  19402. + BAHAMAS             4 H  BEHIND UTC    APR 3 - OCT 29 (SAME
  19403. + BAHAMAS                                EXCLUSION)
  19404. + BAHRAIN             3 H  AHEAD OF UTC
  19405. + BANGLADESH          6 H  AHEAD OF UTC
  19406. + BARBADOS            4 H  BEHIND UTC
  19407. + BELGIUM             1 H  AHEAD OF UTC
  19408. + BELGIUM             2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19409. + BELIZE              6 H  BEHIND UTC
  19410. + BENIN PEOPLES REP   1 H  AHEAD OF UTC  DAHOMEY
  19411. + BERMUDA             4 H  BEHIND UTC
  19412. + BERMUDA             3 H  BEHIND UTC    APR 3 - OCT 29
  19413. + BHUTAN              6 H  AHEAD OF UTC
  19414. + BOLIVIA             4 H  BEHIND UTC
  19415. + BONAIRE             4 H  BEHIND UTC    ALSO ARUBA,CURACAO,
  19416. + BONAIRE                                ST.MAARTEN, SABA
  19417. + BOTSWANA            2 H  AHEAD OF UTC
  19418. + BRAZIL     WEST     5 H  BEHIND UTC    TERRITORY OF ACRE
  19419. + BRAZIL     WEST     4 H  BEHIND UTC    ACRE OCT 23, '88-FEB 11,
  19420. + BRAZIL                                 '89 (ESTIMATED)
  19421. + BRAZIL     CENTRAL  4 H  BEHIND UTC    MANAUS
  19422. + BRAZIL     CENTRAL  3 H  BEHIND UTC    MANAUS OCT 23, '88-FEB 11,
  19423. + BRAZIL     CENTRAL                     '89 (ESTIMATED)
  19424. + BRAZIL     EAST     3 H  BEHIND UTC    COASTAL STATES, RIO, SAO
  19425. + BRAZIL     EAST                        PAULO, BRASILIA
  19426. + BRAZIL     EAST     2 H  BEHIND UTC    COASTAL STATES, RIO, SAO
  19427. + BRAZIL                                 PAULO, BRASILIA OCT 23,
  19428. + BRAZIL                                 '88-FEB 11, '89
  19429. + BRAZIL                                 (ESTIMATED)
  19430. + BRAZIL              2 H  BEHIND UTC    ATLANTIC ISLANDS, FERNANDO
  19431. + BRAZIL                                 DE NORONHA
  19432. + BRAZIL              1 H  BEHIND UTC    OCT 23, '88-FEB 11, '89
  19433. + BRAZIL                                 (ESTIMATED)
  19434. + BRAZIL              3 H  BEHIND UTC    FOR MOST MAJOR AIRPORTS.
  19435. + BRITISH VIRGIN I.   4 H  BEHIND UTC
  19436. + BRUNEI              8 H  AHEAD OF UTC
  19437. + BULGARIA            2 H  AHEAD OF UTC
  19438. + BULGARIA            3 H  AHEAD OF UTC  MAR 27 - SEP 24
  19439. + BURKINA FASO        ON UTC
  19440. + BURMA               6.5H AHEAD OF UTC
  19441. + BURUNDI             2 H  AHEAD OF UTC
  19442. + CAMBODIA            SEE KAMPUCHEA
  19443. + CAMEROON            1 H  AHEAD OF UTC
  19444. + CANADA   NEW FDL    3.5H BEHIND UTC    ST.JOHN'S
  19445. + CANADA   NEW FDL    1.5H BEHIND UTC    APR 3 - OCT 29
  19446. + CANADA   ATLANTIC   4 H  BEHIND UTC    HALIFAX
  19447. + CANADA   ATLANTIC   3 H  BEHIND UTC    APR 3 - OCT 29
  19448. + CANADA   EASTERN    5 H  BEHIND UTC    TORONTO, MONTREAL, OTTAWA
  19449. + CANADA   EASTERN    4 H  BEHIND UTC    APR 3 - OCT 29
  19450. + CANADA   CENTRAL    6 H  BEHIND UTC    REGINA, WINNIPEG
  19451. + CANADA   CENTRAL    5 H  BEHIND UTC    APR 3 - OCT 29
  19452. + CANADA   MOUNTAIN   7 H  BEHIND UTC    CALGARY, EDMONTON
  19453. + CANADA   MOUNTAIN   6 H  BEHIND UTC    APR 3 - OCT 29
  19454. + CANADA   PACIFIC    8 H  BEHIND UTC    VANCOUVER
  19455. + CANADA   PACIFIC    7 H  BEHIND UTC    APR 3 - OCT 29
  19456. + CANADA   YUKON      SAME AS PACIFIC    DAWSON
  19457. + CAPE VERDE          1 H  BEHIND UTC
  19458. + CAYMAN ISLANDS      5 H  BEHIND UTC
  19459. + CAROLINE ISLAND    10 H  AHEAD OF UTC  EXCLUDING PONAPE IS.,
  19460. + CAROLINE ISLAND                       KUSAIE, AND PINGELAP
  19461. + CENTRAL AFRICA      1 H  AHEAD OF UTC
  19462. + CEYLON              5.5H AHEAD OF UTC, SEE SRI LANKA
  19463. + CHAD                1 H  AHEAD OF UTC
  19464. + CHANNEL ISLANDS     SEE ENGLAND
  19465. + CHILE               4 H  BEHIND UTC    CONTINENTAL
  19466. + CHILE               3 H  BEHIND UTC    OCT 9, '88-MAR 11, '89
  19467. + CHILE               6 H  BEHIND UTC    EASTER ISLAND
  19468. + CHILE               5 H  BEHIND UTC    OCT 9, '88-MAR 11, '89
  19469. + CHINA               8 H  AHEAD OF UTC  ALL OF CHINA, INCL TAIWAN
  19470. + CHINA               9 H  AHEAD OF UTC  APR 17 - SEP 10
  19471. + COCOS (Keeling) I.  6.5H AHEAD OF UTC
  19472. + COLOMBIA            5 H  BEHIND UTC
  19473. + COMOROS             3 H  AHEAD OF UTC
  19474. + CONGO               1 H  AHEAD OF UTC
  19475. + COOK ISLANDS       10 H  BEHIND UTC
  19476. + COOK ISLANDS        9.5H  BEHIND UTC   OCT 30, '88-MAR 24, '89
  19477. + COOK ISLANDS                           (ESTIMATED)
  19478. + COSTA RICA          6 H  BEHIND UTC
  19479. + COTE D'IVOIRE       ON UTC
  19480. + CUBA                5 H  BEHIND UTC
  19481. + CUBA                4 H  BEHIND UTC    MAR 20 - OCT 8
  19482. + CURACAO             4 H  BEHIND UTC    ALSO BONAIRE, ARUBA,
  19483. + CURACAO                                ST.MAARTEN
  19484. + CYPRUS              2 H  AHEAD OF UTC
  19485. + CYPRUS              3 H  AHEAD OF UTC  MAR 27 - SEP 24
  19486. + CZECHOSLOVAKIA      1 H  AHEAD OF UTC
  19487. + CZECHOSLOVAKIA      2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19488. + DENMARK             1 H  AHEAD OF UTC
  19489. + DENMARK             2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19490. + DENMK. FAEROE IS    1 H  AHEAD OF UTC  MAR 27 - SEP 24
  19491. + DJIBOUTI            3 H  AHEAD OF UTC
  19492. + DOMINICA            4 H  BEHIND UTC
  19493. + DOMINICAN REP       4 H  BEHIND UTC
  19494. + ECUADOR             5 H  BEHIND UTC    CONTINENTAL
  19495. + ECUADOR             6 H  BEHIND UTC    GALAPAGOS ISLANDS
  19496. + EGYPT               2 H  AHEAD OF UTC
  19497. + EGYPT               3 H  AHEAD OF UTC  MAY 17 - SEP 30 (AFTER
  19498. + EGYPT                                  RAMADAN)
  19499. + EL SALVADOR         6 H  BEHIND UTC
  19500. + ENGLAND             ON UTC             (WALES, SCOTLAND, N.I.,
  19501. + ENGLAND                                CH. IS.)
  19502. + ENGLAND             1 H  AHEAD OF UTC  MAR 27 - OCT 22
  19503. + ENEZUELA           4 H  BEHIND UTC
  19504. + EQUITORIAL GUINEA   1 H  AHEAD OF UTC
  19505. + ETHIOPIA            3 H  AHEAD OF UTC
  19506. + FALKLAND ISLANDS    4 H  BEHIND UTC
  19507. + FALKLAND ISLANDS    3 H  BEHIND UTC    SEP 11, '88-APR 15, '89
  19508. + FALKLAND ISLANDS                       (ESTIMATED)
  19509. + FAROE ISLAND        ON UTC
  19510. + FAROE ISLAND        1 H  AHEAD OF UTC  MAR 27 - SEP 24
  19511. + FIJI               12 H  AHEAD OF UTC
  19512. + FINLAND             2 H  AHEAD OF UTC
  19513. + FINLAND             3 H  AHEAD OF UTC  MAR 27 - SEP 24
  19514. + FRANCE              1 H  AHEAD OF UTC
  19515. + FRANCE              2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19516. + FRENCH GUIANA       3 H  BEHIND UTC
  19517. + FRENCH POLYNESIA    9 H  BEHIND UTC    GAMBIER ISLAND
  19518. + FRENCH POLYNESIA    9.5H BEHIND UTC    MARQUESAS ISLANDS
  19519. + FRENCH POLYNESIA   10 H  BEHIND UTC    SOCIETY ISLANDS, TUBUAI
  19520. + FRENCH POLYNESIA                       ISLANDS, TUAMOTU ISLAND,
  19521. + FRENCH POLYNESIA                       TAHITI
  19522. + GABON               1 H  AHEAD OF UTC
  19523. + GAMBIA              ON UTC
  19524. + GERMANY ALL         1 H  AHEAD OF UTC
  19525. + GERMANY ALL         2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19526. + GHANA               ON UTC
  19527. + GIBRALTAR           1 H  AHEAD OF UTC
  19528. + GIBRALTAR           2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19529. + GREECE              2 H  AHEAD OF UTC
  19530. + GREECE              3 H  AHEAD OF UTC  MAR 27 - SEP 24
  19531. + GREENLAND           4 H  BEHIND UTC    THULE AIRBASE YEAR ROUND
  19532. + GREENLAND           3 H  BEHIND UTC    ANGMAGSSALIK AND W. COAST
  19533. + GREENLAND           2 H  BEHIND UTC    MAR 27 - SEP 24
  19534. + GREENLAND           1 H  BEHIND UTC    SCORESBYSUND
  19535. + GREENLAND           ON UTC             MAR 27 - SEP 24
  19536. + GRENADA             4 H  BEHIND UTC
  19537. + GUADELOUPE          4 H  BEHIND UTC    ST. BARTHELEMY, NORTHERN
  19538. + GUADELOUPE                             ST. MARTIN MARTINIQUE
  19539. + GUAM               10 H  AHEAD OF UTC
  19540. + GUATEMALA           6 H  BEHIND UTC
  19541. + GUINEA              ON UTC
  19542. + GUINEA BISSAU       ON UTC
  19543. + GUINEA REPUBLIC     ON UTC
  19544. + GUINEA EQUATORIAL   1 H  AHEAD OF UTC
  19545. + GUYANA              3 H  BEHIND UTC
  19546. + HAITI               5 H  BEHIND UTC
  19547. + HAITI               4 H  BEHIND UTC    APR 3 - OCT 29
  19548. + HOLLAND             SEE NETHERLANDS
  19549. + HONDURAS            6 H  BEHIND UTC
  19550. + HONG KONG           8 H  AHEAD OF UTC
  19551. + HUNGARY             1 H  AHEAD OF UTC
  19552. + HUNGARY             2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19553. + ICELAND             ON UTC
  19554. + INDIA               5.5H AHEAD OF UTC  INCLUDING ANDAMAN ISLANDS
  19555. + INDONESIA WEST      7 H  AHEAD OF UTC  SUMATRA, JAVA, BALI,
  19556. + INDONESIA WEST                         JAKARTA
  19557. + INDONESIA CENTRAL   8 H  AHEAD OF UTC  KALIMANTAN, SULAWESI
  19558. + INDONESIA EAST      9 H  AHEAD OF UTC  IRIAN, BARAT
  19559. + IRAN                3.5H AHEAD OF UTC
  19560. + IRAQ                3 H  AHEAD OF UTC
  19561. + IRAQ                4 H  AHEAD OF UTC  APR 1 - SEP 30
  19562. + IRELAND             ON UTC
  19563. + IRELAND             1 H  AHEAD OF UTC  MAR 27 - OCT 22
  19564. + ISRAEL              2 H  AHEAD OF UTC
  19565. + ISRAEL              3 H  AHEAD OF UTC  APR 10 - SEP 3
  19566. + ITALY               1 H  AHEAD OF UTC
  19567. + ITALY               2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19568. + IVORY COAST         ON UTC
  19569. + IWAN              8 H  AHEAD OF UTC
  19570. + JAMAICA             5 H  BEHIND UTC
  19571. + JAPAN               9 H  AHEAD OF UTC
  19572. + JOHNSTON ISLAND    10 H  BEHIND UTC
  19573. + JORDAN              2 H  AHEAD OF UTC
  19574. + JORDAN              3 H  AHEAD OF UTC  APR 1 - OCT 6
  19575. + KAMPUCHEA           7 H  AHEAD OF UTC
  19576. + KENYA               3 H  AHEAD OF UTC
  19577. + KIRIBATI, REP OF   12 H  AHEAD OF UTC  CANTON, ENDERBURY ISLANDS
  19578. + KIRIBATI, REP OF   11 H  AHEAD OF UTC  CHRISTMAS ISLAND
  19579. + KOREA               9 H  AHEAD OF UTC
  19580. + KOREA, REP OF       9 H  AHEAD OF UTC
  19581. + KOREA, REP OF      10 H  AHEAD OF UTC  MAY 8 - OCT 8
  19582. + KUWAIT              3 H  AHEAD OF UTC
  19583. + KUSAIE, PINGELAP  12 H  AHEAD OF UTC  INCLUDING MARSHALL IS.,
  19584. + KUSAIE, PINGELAP                      EXCLUDING KWAJALEIN)
  19585. + KWAJALEIN         12 H  BEHIND UTC
  19586. + LAOS                7 H  AHEAD OF UTC
  19587. + LEBANON             2 H  AHEAD OF UTC
  19588. + LEBANON             3 H  AHEAD OF UTC  JUN 1 - OCT 31
  19589. + LEEWARD ISLANDS     4 H BEHIND UTC     ANTIGUA, DOMINICA,
  19590. + LEEWARD ISLANDS                        MONTSERRAT, ST.
  19591. + LEEWARD ISLAANDS                       CHRISTOPHER, ST. KITTS,
  19592. + LEEWARD ISLANDS                        NEVIS, ANGUILLA
  19593. + LESOTHO             2 H  AHEAD OF UTC
  19594. + LIBERIA             ON UTC
  19595. + LIBYAN ARAB         1 H  AHEAD OF UTC  JAMAHIRIYA/LIBYA
  19596. + LIBYAN ARAB         2 H  AHEAD OF UTC  APR 1 - SEP 30 JAMAHIRIYA/LIBYA
  19597. + LIECHTENSTEIN       1 H  AHEAD OF UTC
  19598. + LIECHTENSTEIN       2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19599. + LUXEMBOURG          1 H  AHEAD OF UTC
  19600. + LUXEMBOURG          2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19601. + MACAO               8 H  AHEAD OF UTC
  19602. + MADAGASCAR          3 H  AHEAD OF UTC
  19603. + MADEIRA             SEE PORTUGAL
  19604. + MALAWI              2 H  AHEAD OF UTC
  19605. + MALAYSIA            8 H  AHEAD OF UTC
  19606. + MALDIVES            5 H  AHEAD OF UTC
  19607. + MALI                ON UTC
  19608. + MALTA               1 H  AHEAD OF UTC
  19609. + MALTA               2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19610. + MARTINIQUE          4 H  BEHIND UTC
  19611. + MAURITANIA          ON UTC
  19612. + MAURITIUS           4 H  AHEAD OF UTC
  19613. + MARIANA ISLAND    10 H  AHEAD OF UTC  EXCLUDING GUAM
  19614. + MEXICO BAJA CAL N   7 H  BEHIND UTC    BAJA CALIFORNIA SUR AND
  19615. + MEXICO BAJA CAL N                      N. PACIFIC COAST (STATES
  19616. + MEXICO BAJA CAL N                      OF SINALOA AND SONORA)
  19617. + MEXICO BAJA CAL N   8 H  BEHIND UTC    ABOVE 28TH PARALLAL APR 3
  19618. + MEXICO BAJA CAL N                      - OCT 29
  19619. + MEXICO BAJA CAL N   7 H  BEHIND UTC    ABOVE 28TH PARALLAL APR 3
  19620. + MEXICO BAJA CAL N                      - 0CT 29
  19621. + MEXICO              6 H  BEHIND UTC    STATES OF DURANGO,
  19622. + MEXICO                                 COAHUILA, NUEVO LEON,
  19623. + MEXICO                                 TAMAULIPAS
  19624. + MEXICO              5 H  BEHIND UTC    STATES OF DURANGO,
  19625. + MEXICO                                 COAHUILA, NUEVO LEON,
  19626. + MEXICO                                 TAMAULIPAS  APR 3 - OCT 29
  19627. + MEXICO              6 H  BEHIND UTC    GENERAL MEXICO, STATES OF
  19628. + MEXICO                                 CAMPECHE, QUINTANA ROO AND
  19629. + MEXICO                                 YUCATAN
  19630. + MIDWAY ISLAND      11 H  BEHIND UTC
  19631. + MONACO              1 H  AHEAD OF UTC
  19632. + MONACO              2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19633. + MONGOLIA            8 H  AHEAD OF UTC
  19634. + MONGOLIA            9 H  AHEAD OF UTC  MAR 27 - SEP 24
  19635. + MONTSERRAT          4 H  BEHIND UTC
  19636. + MOROCCO             ON UTC
  19637. + MOZAMBIQUE          2 H  AHEAD OF UTC
  19638. + NAMIBIA             2 H  AHEAD OF UTC
  19639. + NAURU, REP OF      12 H  AHEAD OF UTC
  19640. + NEPAL              5H45M AHEAD OF UTC
  19641. + NETHERLANDS         1 H  AHEAD OF UTC
  19642. + NETHERLANDS         2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19643. + NETHERLANDS         4 H  BEHIND UTC    ANTILLES AND SOUTHERN ST.
  19644. + NETHERLANDS                            MAARTEN
  19645. + NEW CALEDONIA      11 H  AHEAD OF UTC
  19646. + NEW HEBRIDES        SEE VANUATU
  19647. + NEW ZEALAND        12 H  AHEAD OF UTC  (EXCLUDING CHATHAM ISLAND)
  19648. + NEW ZEALAND        13 H  AHEAD OF UTC  OCT 30, '88-MAR 4, '89
  19649. + NEW ZEALAND       12H45M AHEAD OF UTC  CHATHAM ISLAND
  19650. + NICARAGUA           6 H  BEHIND UTC
  19651. + NIGER               1 H  AHEAD OF UTC
  19652. + NIGERIA             1 H  AHEAD OF UTC
  19653. + NIUE ISLAND        11 H  BEHIND UTC
  19654. + NORFOLK ISLAND    11H30M AHEAD OF UTC
  19655. + NORTHERN IRELAND    ON UTC             WALES, SCOTLAND, N.I.,
  19656. + NORTHERN IRELAND                       CH.IS.
  19657. + NORTHERN IRELAND    1 H  AHEAD OF UTC  MAR 27 - OCT 22
  19658. + NORWAY              1 H  AHEAD OF UTC
  19659. + NORWAY              2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19660. + OGO                ON UTC
  19661. + OMAN                4 H  AHEAD OF UTC
  19662. + PACIFIC ISLAND T.T.
  19663. + PALAU ISLAND       9 H  AHEAD OF UTC
  19664. + PAKISTAN            5 H  AHEAD OF UTC
  19665. + PANAMA              5 H  BEHIND UTC
  19666. + PAPUA NEW GUINEA   10 H  AHEAD OF UTC  INCLUDING BOUGAINVILLE
  19667. + PAPUA NEW GUINEA                       ISLAND
  19668. + PARAGUAY            4 H  BEHIND UTC
  19669. + PARAGUAY            3 H  BEHIND UTC    OCT 1, '88-MAR 31, '89
  19670. + PERU                5 H  BEHIND UTC
  19671. + PHILIPPINES         8 H  AHEAD OF UTC
  19672. + PONAPE ISLAND     11 H  AHEAD OF UTC
  19673. + POLAND              1 H  AHEAD OF UTC
  19674. + POLAND              2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19675. + PORTUGAL MAINLAND   ON UTC
  19676. + PORTUGAL MAINLAND   1 H  AHEAD OF UTC  MAR 27 - SEP 24
  19677. + PORTUGAL AZORES     1 H  BEHIND UTC
  19678. + PORTUGAL AZORES     ON UTC             MAR 27 - SEP 24
  19679. + PORTUGAL MADEIRA    ON UTC
  19680. + PORTUGAL MADEIRA    1 H  AHEAD OF UTC  MAR 27 - SEP 24
  19681. + PUERTO RICO         4 H  BEHIND UTC
  19682. + QATAR               3 H  AHEAD OF UTC
  19683. + ROMANIA             2 H  AHEAD OF UTC
  19684. + ROMANIA             3 H  AHEAD OF UTC  MAR 27 - SEP 24
  19685. + RUSSIA              SEE USSR
  19686. + RWANDA              2 H  AHEAD OF UTC
  19687. + SABA                4 H  BEHIND UTC    ALSO BONAIRE, CURACAO,
  19688. + SAMOA              11 H  BEHIND UTC
  19689. + SAN MARINO          1 H  AHEAD OF UTC
  19690. + SAN MARINO          2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19691. + SAN SALVADOR        6  H  BEHIND UTC
  19692. + SAO TOME ISLAND     ON UTC             AND PRINCIPE ISLAND
  19693. + SAUDI ARABIA        3 H  AHEAD OF UTC
  19694. + SCOTLAND            SEE ENGLAND
  19695. + SENEGAL             ON UTC
  19696. + SEYCHELLES          4 H  AHEAD OF UTC
  19697. + SIERRA LEONE        ON UTC
  19698. + SINGAPORE           8 H  AHEAD OF UTC
  19699. + SOLOMON ISLANDS    11 H  AHEAD OF UTC  EXCLUDING BOUGAINVILLE
  19700. + SOLOMON ISLANDS                        ISLAND
  19701. + SOMALI              3 H  AHEAD OF UTC
  19702. + SOUTH AFRICA        2 H  AHEAD OF UTC
  19703. + SPAIN  CANARY IS    ON UTC
  19704. + SPAIN  CANARY IS    1 H  AHEAD OF UTC  MAR 27 - SEP 24
  19705. + SPAIN               1 H  AHEAD OF UTC  CONTINENTAL, BALEARIC AND
  19706. + SPAIN                                  MALLORCA ISLANDS
  19707. + SPAIN               2 H  AHEAD OF UTC  CONTINENTAL, BALEARIC AND
  19708. + SPAIN                                  MALLORCA ISLANDS  MAR 27 -
  19709. + SPAIN                                  SEP 24
  19710. + SPAIN  MAINLAND     1 H  AHEAD OF UTC  MELILLA
  19711. + SPAIN  MAINLAND     2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19712. + SRI LANKA          5H30M AHEAD OF UTC
  19713. + ST.MAARTEN
  19714. + ST.KITTS-NEVIS     4 H  BEHIND UTC
  19715. + ST.LUCIA           4 H  BEHIND UTC
  19716. + ST.PIERRE          3 H  BEHIND UTC    INCLUDING MIQUELON
  19717. + ST.PIERRE          2 H  BEHIND UTC    INLCUDING MIQUELON  APR 3
  19718. + ST.PIERRE                             - OCT 29
  19719. + ST.VINCENT         4 H  BEHIND UTC    INCLUDING THE GRENADINES
  19720. + ST. HELENA          ON UTC
  19721. + SURINAME            3 H  BEHIND UTC
  19722. + SWAZILAND           2 H  AHEAD OF UTC
  19723. + SWEDEN              1 H  AHEAD OF UTC
  19724. + SWEDEN              2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19725. + SWITZERLAND         1 H  AHEAD OF UTC
  19726. + SWITZERLAND         2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19727. + SYRIA               2 H  AHEAD OF UTC
  19728. + SYRIA               3 H  AHEAD OF UTC  MAR 15 - OCT 30
  19729. + TAHITI             10 H  BEHIND UTC
  19730. + TANZANIA            3 H  AHEAD OF UTC
  19731. + THAILAND            7 H  AHEAD OF UTC
  19732. + TRINIDAD / TOBAGO   4 H  BEHIND UTC
  19733. + TUNISIA             1 H  AHEAD OF UTC
  19734. + TUNISIA             2 H  AHEAD OF UTC  APR 10 - SEP 24
  19735. + TURKEY              2 H  AHEAD OF UTC
  19736. + TURKEY              3 H  AHEAD OF UTC  MAR 27 - SEP 24
  19737. + TURKS AND CAICOS    5 H  BEHIND UTC
  19738. + TURKS AND CAICOS    4 H  BEHIND UTC    APR 3 - OCT 29
  19739. + TUVALU             12 H  AHEAD OF UTC
  19740. + UDAN               2 H  AHEAD OF UTC
  19741. + UGANDA              3 H  AHEAD OF UTC
  19742. + UNITED ARAB EMIR.   4 H  AHEAD OF UTC  ABU DHABI, DUBAI, SHARJAH,
  19743. + UNITED ARAB EMIR                       RAS AL KHAIMAH
  19744. + UNITED KINGDOM      ON UTC             WALES, SCOTLAND, N.I., CH.
  19745. + UNITED KINGDOM                         IS.
  19746. + UNITED KINGDOM      1 H  AHEAD OF UTC  MAR 27 - OCT 22
  19747. + UNITED STATES       SEE USA
  19748. + UPPER VOLTA         ON UTC
  19749. + URUGUAY             3 H  BEHIND UTC
  19750. + URUGUAY             2 H  BEHIND UTC    DEC 11, '88-FEB 25, '89
  19751. + URAGUAY                                (ESTIMATED)
  19752. + USA  EASTERN       5 H  BEHIND UTC    NEW YORK, WASHINGTON
  19753. + USA  EASTERN       4 H  BEHIND UTC    APR 3 - OCT 30
  19754. + USA  CENTRAL       6 H  BEHIND UTC    CHICAGO, HOUSTON
  19755. + USA  CENTRAL       5 H  BEHIND UTC    APR 3 - OCT 30
  19756. + USA  MOUNTAIN      7 H  BEHIND UTC    DENVER
  19757. + USA  MOUNTAIN      6 H  BEHIND UTC    APR 3 - OCT 30
  19758. + USA  PACIFIC       8 H  BEHIND UTC    L.A., SAN FRANCISCO
  19759. + USA  PACIFIC       7 H  BEHIND UTC    APR 3 - OCT 30
  19760. + USA  ALASKA STD    9 H  BEHIND UTC    MOST OF ALASKA     (AKST)
  19761. + USA  ALASKA STD    8 H  BEHIND UTC    APR 3 - OCT 30 (AKDT)
  19762. + USA  ALEUTIAN     10 H  BEHIND UTC    ISLANDS WEST OF 170W
  19763. + USA  - " -         9 H  BEHIND UTC    APR 3 - OCT 30
  19764. + USA  HAWAII       10 H  BEHIND UTC
  19765. + USA  BERING       11 H  BEHIND UTC    SAMOA, MIDWAY
  19766. + USA  FOR SPECIFIC INFO ON USA ZONES/TIMES CALL DOT 202-426-4520
  19767. + USSR WEST EUROP     3 H  AHEAD OF UTC  LENINGRAD, MOSCOW
  19768. + USSR WEST EUROP     4 H  AHEAD OF UTC  APR 1 - SEP 30
  19769. + USSR CENTRAL EUR    4 H  AHEAD OF UTC  ROSTOV, BAKU
  19770. + USSR CENTRAL EUR    5 H  AHEAD OF UTC  APR 1 - SEP 30
  19771. + USSR EAST EUROP     5 H  AHEAD OF UTC  SVERDLOVSK
  19772. + USSR EAST EUROP     6 H  AHEAD OF UTC  APR 1 - SEP 30
  19773. + USSR WEST SIBERIAN  6 H  AHEAD OF UTC  TASHKENT, ALMA ATA
  19774. + USSR WEST SIBERIAN  7 H  AHEAD OF UTC  APR 1 - SEP 30
  19775. + USSR WEST-CENTRAL   7 H  AHEAD OF UTC  NOVOSIBIRSK
  19776. + USSR WEST-CENTRAL   8 H  AHEAD OF UTC  APR 1 - SEP 30
  19777. + USSR WEST-CENTRAL   8 H  AHEAD OF UTC  IRKUTSK
  19778. + USSR WEST-CENTRAL   9 H  AHEAD OF UTC  APR 1 - SEP 30
  19779. + USSR CENTRAL SIB    9 H  AHEAD OF UTC  YAKUTSK
  19780. + USSR CENTRAL SIB   10 H  AHEAD OF UTC  APR 1 - SEP 30
  19781. + USSR CENTRAL SIB   10 H  AHEAD OF UTC  VLADIVOSTOK
  19782. + USSR CENTRAL SIB   11 H  AHEAD OF UTC  APR 1 - SEP 30
  19783. + USSR EAST SIBERIA  11 H  AHEAD OF UTC  MAGADAN
  19784. + USSR EAST SIBERIA  12 H  AHEAD OF UTC  APR 1 - SEP 30
  19785. + USSR EAST SIBERIA  12 H  AHEAD OF UTC  PETROPAVLOVSK
  19786. + USSR EAST SIBERIA  13 H  AHEAD OF UTC  APR 1 - SEP 30
  19787. + USSR EAST SIBERIA  13 H  AHEAD OF UTC  UELEN
  19788. + USSR EAST SIBERIA  14 H  AHEAD OF UTC  APR 1 - SEP 30
  19789. + VANUATU            11 H  AHEAD OF UTC  (NEW HEBRIDES)
  19790. + VANUATU            12 H  AHEAD OF UTC  SEP 25, '88-MAR 25, '89
  19791. + VANUATU                                (ESTIMATED)
  19792. + VATICAN             1 H  AHEAD OF UTC
  19793. + VATICAN             2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19794. + VIETNAM             7 H  AHEAD OF UTC
  19795. + VIRGIN ISLANDS      4 H  BEHIND UTC    ST.CROIX, ST.THOMAS,
  19796. + VIRGIN ISLANDS                         ST.JOHN
  19797. + WAKE ISLAND        12 H  AHEAD OF UTC
  19798. + WALES               SEE ENGLAND
  19799. + WALLIS/FUTUNA IS.  12 H  AHEAD OF UTC
  19800. + WINDWARD ISLANDS    4 H  BEHIND UTC    GRENADA, ST. LUCIA
  19801. + YEMEN               3 H  AHEAD OF UTC  BOTH REPUBLICS
  19802. + YUGOSLAVIA          1 H  AHEAD OF UTC
  19803. + YUGOSLAVIA          2 H  AHEAD OF UTC  MAR 27 - SEP 24
  19804. + ZAIRE  EAST         1 H  AHEAD OF UTC  KINSHASA MBANDAKA
  19805. + ZAIRE  WEST         2 H  AHEAD OF UTC  LUBUMBASHI, KASAI, KIVU,
  19806. + ZAIRE  WEST                            HAUT-ZAIRE, SHABA
  19807. + ZAMBIA              2 H  AHEAD OF UTC
  19808. + ZIMBABWE            2 H  AHEAD OF UTC
  19809. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/getopt.c emacs-18.59/amiga/unix/src/zoneinfo/getopt.c
  19810. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/getopt.c    Thu Jan  1 00:00:00 1970
  19811. --- emacs-18.59/amiga/unix/src/zoneinfo/getopt.c    Sat Aug  1 16:48:36 1992
  19812. ***************
  19813. *** 0 ****
  19814. --- 1,678 ----
  19815. + /* Getopt for GNU.
  19816. +    NOTE: getopt is now part of the C library, so if you don't know what
  19817. +    "Keep this file name-space clean" means, talk to roland@gnu.ai.mit.edu
  19818. +    before changing it!
  19819. +    Copyright (C) 1987, 88, 89, 90, 91, 1992 Free Software Foundation, Inc.
  19820. +    This program is free software; you can redistribute it and/or modify
  19821. +    it under the terms of the GNU General Public License as published by
  19822. +    the Free Software Foundation; either version 2, or (at your option)
  19823. +    any later version.
  19824. +    This program is distributed in the hope that it will be useful,
  19825. +    but WITHOUT ANY WARRANTY; without even the implied warranty of
  19826. +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  19827. +    GNU General Public License for more details.
  19828. +    You should have received a copy of the GNU General Public License
  19829. +    along with this program; if not, write to the Free Software
  19830. +    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  19831. + /* AIX requires this to be the first thing in the file. */
  19832. + #ifdef __GNUC__
  19833. + #define alloca __builtin_alloca
  19834. + #else /* not __GNUC__ */
  19835. + #if defined(sparc) && !defined(USG) && !defined(SVR4) && !defined(__svr4__)
  19836. + #include <alloca.h>
  19837. + #else
  19838. + #ifdef _AIX
  19839. +  #pragma alloca
  19840. + #else
  19841. + char *alloca ();
  19842. + #endif
  19843. + #endif /* sparc */
  19844. + #endif /* not __GNUC__ */
  19845. + #ifdef    LIBC
  19846. + /* For when compiled as part of the GNU C library.  */
  19847. + #include <ansidecl.h>
  19848. + #endif
  19849. + #include <stdio.h>
  19850. + /* This needs to come after some library #include
  19851. +    to get __GNU_LIBRARY__ defined.  */
  19852. + #ifdef    __GNU_LIBRARY__
  19853. + #undef    alloca
  19854. + #include <stdlib.h>
  19855. + #include <string.h>
  19856. + #else    /* Not GNU C library.  */
  19857. + #define    __alloca    alloca
  19858. + #endif    /* GNU C library.  */
  19859. + #ifndef __STDC__
  19860. + #define const
  19861. + #endif
  19862. + /* If GETOPT_COMPAT is defined, `+' as well as `--' can introduce a
  19863. +    long-named option.  Because this is not POSIX.2 compliant, it is
  19864. +    being phased out. */
  19865. + #define GETOPT_COMPAT
  19866. + /* This version of `getopt' appears to the caller like standard Unix `getopt'
  19867. +    but it behaves differently for the user, since it allows the user
  19868. +    to intersperse the options with the other arguments.
  19869. +    As `getopt' works, it permutes the elements of ARGV so that,
  19870. +    when it is done, all the options precede everything else.  Thus
  19871. +    all application programs are extended to handle flexible argument order.
  19872. +    Setting the environment variable POSIXLY_CORRECT disables permutation.
  19873. +    Then the behavior is completely standard.
  19874. +    GNU application programs can use a third alternative mode in which
  19875. +    they can distinguish the relative order of options and other arguments.  */
  19876. + #include "getopt.h"
  19877. + /* For communication from `getopt' to the caller.
  19878. +    When `getopt' finds an option that takes an argument,
  19879. +    the argument value is returned here.
  19880. +    Also, when `ordering' is RETURN_IN_ORDER,
  19881. +    each non-option ARGV-element is returned here.  */
  19882. + char *optarg = 0;
  19883. + /* Index in ARGV of the next element to be scanned.
  19884. +    This is used for communication to and from the caller
  19885. +    and for communication between successive calls to `getopt'.
  19886. +    On entry to `getopt', zero means this is the first call; initialize.
  19887. +    When `getopt' returns EOF, this is the index of the first of the
  19888. +    non-option elements that the caller should itself scan.
  19889. +    Otherwise, `optind' communicates from one call to the next
  19890. +    how much of ARGV has been scanned so far.  */
  19891. + int optind = 0;
  19892. + /* The next char to be scanned in the option-element
  19893. +    in which the last option character we returned was found.
  19894. +    This allows us to pick up the scan where we left off.
  19895. +    If this is zero, or a null string, it means resume the scan
  19896. +    by advancing to the next ARGV-element.  */
  19897. + static char *nextchar;
  19898. + /* Callers store zero here to inhibit the error message
  19899. +    for unrecognized options.  */
  19900. + int opterr = 1;
  19901. + /* Describe how to deal with options that follow non-option ARGV-elements.
  19902. +    If the caller did not specify anything,
  19903. +    the default is REQUIRE_ORDER if the environment variable
  19904. +    POSIXLY_CORRECT is defined, PERMUTE otherwise.
  19905. +    REQUIRE_ORDER means don't recognize them as options;
  19906. +    stop option processing when the first non-option is seen.
  19907. +    This is what Unix does.
  19908. +    This mode of operation is selected by either setting the environment
  19909. +    variable POSIXLY_CORRECT, or using `+' as the first character
  19910. +    of the list of option characters.
  19911. +    PERMUTE is the default.  We permute the contents of ARGV as we scan,
  19912. +    so that eventually all the non-options are at the end.  This allows options
  19913. +    to be given in any order, even with programs that were not written to
  19914. +    expect this.
  19915. +    RETURN_IN_ORDER is an option available to programs that were written
  19916. +    to expect options and other ARGV-elements in any order and that care about
  19917. +    the ordering of the two.  We describe each non-option ARGV-element
  19918. +    as if it were the argument of an option with character code 1.
  19919. +    Using `-' as the first character of the list of option characters
  19920. +    selects this mode of operation.
  19921. +    The special argument `--' forces an end of option-scanning regardless
  19922. +    of the value of `ordering'.  In the case of RETURN_IN_ORDER, only
  19923. +    `--' can cause `getopt' to return EOF with `optind' != ARGC.  */
  19924. + static enum
  19925. + {
  19926. +   REQUIRE_ORDER, PERMUTE, RETURN_IN_ORDER
  19927. + } ordering;
  19928. + #ifdef    __GNU_LIBRARY__
  19929. + #include <string.h>
  19930. + #define    my_index    strchr
  19931. + #define    my_bcopy(src, dst, n)    memcpy ((dst), (src), (n))
  19932. + #else
  19933. + /* Avoid depending on library functions or files
  19934. +    whose names are inconsistent.  */
  19935. + char *getenv ();
  19936. + static char *
  19937. + my_index (string, chr)
  19938. +      char *string;
  19939. +      int chr;
  19940. + {
  19941. +   while (*string)
  19942. +     {
  19943. +       if (*string == chr)
  19944. +     return string;
  19945. +       string++;
  19946. +     }
  19947. +   return 0;
  19948. + }
  19949. + static void
  19950. + my_bcopy (from, to, size)
  19951. +      char *from, *to;
  19952. +      int size;
  19953. + {
  19954. +   int i;
  19955. +   for (i = 0; i < size; i++)
  19956. +     to[i] = from[i];
  19957. + }
  19958. + #endif                /* GNU C library.  */
  19959. + /* Handle permutation of arguments.  */
  19960. + /* Describe the part of ARGV that contains non-options that have
  19961. +    been skipped.  `first_nonopt' is the index in ARGV of the first of them;
  19962. +    `last_nonopt' is the index after the last of them.  */
  19963. + static int first_nonopt;
  19964. + static int last_nonopt;
  19965. + /* Exchange two adjacent subsequences of ARGV.
  19966. +    One subsequence is elements [first_nonopt,last_nonopt)
  19967. +    which contains all the non-options that have been skipped so far.
  19968. +    The other is elements [last_nonopt,optind), which contains all
  19969. +    the options processed since those non-options were skipped.
  19970. +    `first_nonopt' and `last_nonopt' are relocated so that they describe
  19971. +    the new indices of the non-options in ARGV after they are moved.  */
  19972. + static void
  19973. + exchange (argv)
  19974. +      char **argv;
  19975. + {
  19976. +   int nonopts_size = (last_nonopt - first_nonopt) * sizeof (char *);
  19977. +   char **temp = (char **) __alloca (nonopts_size);
  19978. +   /* Interchange the two blocks of data in ARGV.  */
  19979. +   my_bcopy (&argv[first_nonopt], temp, nonopts_size);
  19980. +   my_bcopy (&argv[last_nonopt], &argv[first_nonopt],
  19981. +         (optind - last_nonopt) * sizeof (char *));
  19982. +   my_bcopy (temp, &argv[first_nonopt + optind - last_nonopt], nonopts_size);
  19983. +   /* Update records for the slots the non-options now occupy.  */
  19984. +   first_nonopt += (optind - last_nonopt);
  19985. +   last_nonopt = optind;
  19986. + }
  19987. + /* Scan elements of ARGV (whose length is ARGC) for option characters
  19988. +    given in OPTSTRING.
  19989. +    If an element of ARGV starts with '-', and is not exactly "-" or "--",
  19990. +    then it is an option element.  The characters of this element
  19991. +    (aside from the initial '-') are option characters.  If `getopt'
  19992. +    is called repeatedly, it returns successively each of the option characters
  19993. +    from each of the option elements.
  19994. +    If `getopt' finds another option character, it returns that character,
  19995. +    updating `optind' and `nextchar' so that the next call to `getopt' can
  19996. +    resume the scan with the following option character or ARGV-element.
  19997. +    If there are no more option characters, `getopt' returns `EOF'.
  19998. +    Then `optind' is the index in ARGV of the first ARGV-element
  19999. +    that is not an option.  (The ARGV-elements have been permuted
  20000. +    so that those that are not options now come last.)
  20001. +    OPTSTRING is a string containing the legitimate option characters.
  20002. +    If an option character is seen that is not listed in OPTSTRING,
  20003. +    return '?' after printing an error message.  If you set `opterr' to
  20004. +    zero, the error message is suppressed but we still return '?'.
  20005. +    If a char in OPTSTRING is followed by a colon, that means it wants an arg,
  20006. +    so the following text in the same ARGV-element, or the text of the following
  20007. +    ARGV-element, is returned in `optarg'.  Two colons mean an option that
  20008. +    wants an optional arg; if there is text in the current ARGV-element,
  20009. +    it is returned in `optarg', otherwise `optarg' is set to zero.
  20010. +    If OPTSTRING starts with `-' or `+', it requests different methods of
  20011. +    handling the non-option ARGV-elements.
  20012. +    See the comments about RETURN_IN_ORDER and REQUIRE_ORDER, above.
  20013. +    Long-named options begin with `--' instead of `-'.
  20014. +    Their names may be abbreviated as long as the abbreviation is unique
  20015. +    or is an exact match for some defined option.  If they have an
  20016. +    argument, it follows the option name in the same ARGV-element, separated
  20017. +    from the option name by a `=', or else the in next ARGV-element.
  20018. +    When `getopt' finds a long-named option, it returns 0 if that option's
  20019. +    `flag' field is nonzero, the value of the option's `val' field
  20020. +    if the `flag' field is zero.
  20021. +    The elements of ARGV aren't really const, because we permute them.
  20022. +    But we pretend they're const in the prototype to be compatible
  20023. +    with other systems.
  20024. +    LONGOPTS is a vector of `struct option' terminated by an
  20025. +    element containing a name which is zero.
  20026. +    LONGIND returns the index in LONGOPT of the long-named option found.
  20027. +    It is only valid when a long-named option has been found by the most
  20028. +    recent call.
  20029. +    If LONG_ONLY is nonzero, '-' as well as '--' can introduce
  20030. +    long-named options.  */
  20031. + int
  20032. + _getopt_internal (argc, argv, optstring, longopts, longind, long_only)
  20033. +      int argc;
  20034. +      char *const *argv;
  20035. +      const char *optstring;
  20036. +      const struct option *longopts;
  20037. +      int *longind;
  20038. +      int long_only;
  20039. + {
  20040. +   int option_index;
  20041. +   optarg = 0;
  20042. +   /* Initialize the internal data when the first call is made.
  20043. +      Start processing options with ARGV-element 1 (since ARGV-element 0
  20044. +      is the program name); the sequence of previously skipped
  20045. +      non-option ARGV-elements is empty.  */
  20046. +   if (optind == 0)
  20047. +     {
  20048. +       first_nonopt = last_nonopt = optind = 1;
  20049. +       nextchar = NULL;
  20050. +       /* Determine how to handle the ordering of options and nonoptions.  */
  20051. +       if (optstring[0] == '-')
  20052. +     {
  20053. +       ordering = RETURN_IN_ORDER;
  20054. +       ++optstring;
  20055. +     }
  20056. +       else if (optstring[0] == '+')
  20057. +     {
  20058. +       ordering = REQUIRE_ORDER;
  20059. +       ++optstring;
  20060. +     }
  20061. +       else if (getenv ("POSIXLY_CORRECT") != NULL)
  20062. +     ordering = REQUIRE_ORDER;
  20063. +       else
  20064. +     ordering = PERMUTE;
  20065. +     }
  20066. +   if (nextchar == NULL || *nextchar == '\0')
  20067. +     {
  20068. +       if (ordering == PERMUTE)
  20069. +     {
  20070. +       /* If we have just processed some options following some non-options,
  20071. +          exchange them so that the options come first.  */
  20072. +       if (first_nonopt != last_nonopt && last_nonopt != optind)
  20073. +         exchange ((char **) argv);
  20074. +       else if (last_nonopt != optind)
  20075. +         first_nonopt = optind;
  20076. +       /* Now skip any additional non-options
  20077. +          and extend the range of non-options previously skipped.  */
  20078. +       while (optind < argc
  20079. +          && (argv[optind][0] != '-' || argv[optind][1] == '\0')
  20080. + #ifdef GETOPT_COMPAT
  20081. +          && (longopts == NULL
  20082. +              || argv[optind][0] != '+' || argv[optind][1] == '\0')
  20083. + #endif                /* GETOPT_COMPAT */
  20084. +          )
  20085. +         optind++;
  20086. +       last_nonopt = optind;
  20087. +     }
  20088. +       /* Special ARGV-element `--' means premature end of options.
  20089. +      Skip it like a null option,
  20090. +      then exchange with previous non-options as if it were an option,
  20091. +      then skip everything else like a non-option.  */
  20092. +       if (optind != argc && !strcmp (argv[optind], "--"))
  20093. +     {
  20094. +       optind++;
  20095. +       if (first_nonopt != last_nonopt && last_nonopt != optind)
  20096. +         exchange ((char **) argv);
  20097. +       else if (first_nonopt == last_nonopt)
  20098. +         first_nonopt = optind;
  20099. +       last_nonopt = argc;
  20100. +       optind = argc;
  20101. +     }
  20102. +       /* If we have done all the ARGV-elements, stop the scan
  20103. +      and back over any non-options that we skipped and permuted.  */
  20104. +       if (optind == argc)
  20105. +     {
  20106. +       /* Set the next-arg-index to point at the non-options
  20107. +          that we previously skipped, so the caller will digest them.  */
  20108. +       if (first_nonopt != last_nonopt)
  20109. +         optind = first_nonopt;
  20110. +       return EOF;
  20111. +     }
  20112. +       /* If we have come to a non-option and did not permute it,
  20113. +      either stop the scan or describe it to the caller and pass it by.  */
  20114. +       if ((argv[optind][0] != '-' || argv[optind][1] == '\0')
  20115. + #ifdef GETOPT_COMPAT
  20116. +       && (longopts == NULL
  20117. +           || argv[optind][0] != '+' || argv[optind][1] == '\0')
  20118. + #endif                /* GETOPT_COMPAT */
  20119. +       )
  20120. +     {
  20121. +       if (ordering == REQUIRE_ORDER)
  20122. +         return EOF;
  20123. +       optarg = argv[optind++];
  20124. +       return 1;
  20125. +     }
  20126. +       /* We have found another option-ARGV-element.
  20127. +      Start decoding its characters.  */
  20128. +       nextchar = (argv[optind] + 1
  20129. +           + (longopts != NULL && argv[optind][1] == '-'));
  20130. +     }
  20131. +   if (longopts != NULL
  20132. +       && ((argv[optind][0] == '-'
  20133. +        && (argv[optind][1] == '-' || long_only))
  20134. + #ifdef GETOPT_COMPAT
  20135. +       || argv[optind][0] == '+'
  20136. + #endif                /* GETOPT_COMPAT */
  20137. +       ))
  20138. +     {
  20139. +       const struct option *p;
  20140. +       char *s = nextchar;
  20141. +       int exact = 0;
  20142. +       int ambig = 0;
  20143. +       const struct option *pfound = NULL;
  20144. +       int indfound;
  20145. +       while (*s && *s != '=')
  20146. +     s++;
  20147. +       /* Test all options for either exact match or abbreviated matches.  */
  20148. +       for (p = longopts, option_index = 0; p->name;
  20149. +        p++, option_index++)
  20150. +     if (!strncmp (p->name, nextchar, s - nextchar))
  20151. +       {
  20152. +         if (s - nextchar == strlen (p->name))
  20153. +           {
  20154. +         /* Exact match found.  */
  20155. +         pfound = p;
  20156. +         indfound = option_index;
  20157. +         exact = 1;
  20158. +         break;
  20159. +           }
  20160. +         else if (pfound == NULL)
  20161. +           {
  20162. +         /* First nonexact match found.  */
  20163. +         pfound = p;
  20164. +         indfound = option_index;
  20165. +           }
  20166. +         else
  20167. +           /* Second nonexact match found.  */
  20168. +           ambig = 1;
  20169. +       }
  20170. +       if (ambig && !exact)
  20171. +     {
  20172. +       if (opterr)
  20173. +         fprintf (stderr, "%s: option `%s' is ambiguous\n",
  20174. +              argv[0], argv[optind]);
  20175. +       nextchar += strlen (nextchar);
  20176. +       optind++;
  20177. +       return '?';
  20178. +     }
  20179. +       if (pfound != NULL)
  20180. +     {
  20181. +       option_index = indfound;
  20182. +       optind++;
  20183. +       if (*s)
  20184. +         {
  20185. +           /* Don't test has_arg with >, because some C compilers don't
  20186. +          allow it to be used on enums. */
  20187. +           if (pfound->has_arg)
  20188. +         optarg = s + 1;
  20189. +           else
  20190. +         {
  20191. +           if (opterr)
  20192. +             {
  20193. +               if (argv[optind - 1][1] == '-')
  20194. +             /* --option */
  20195. +             fprintf (stderr,
  20196. +                  "%s: option `--%s' doesn't allow an argument\n",
  20197. +                  argv[0], pfound->name);
  20198. +               else
  20199. +             /* +option or -option */
  20200. +             fprintf (stderr,
  20201. +                  "%s: option `%c%s' doesn't allow an argument\n",
  20202. +                  argv[0], argv[optind - 1][0], pfound->name);
  20203. +             }
  20204. +           nextchar += strlen (nextchar);
  20205. +           return '?';
  20206. +         }
  20207. +         }
  20208. +       else if (pfound->has_arg == 1)
  20209. +         {
  20210. +           if (optind < argc)
  20211. +         optarg = argv[optind++];
  20212. +           else
  20213. +         {
  20214. +           if (opterr)
  20215. +             fprintf (stderr, "%s: option `%s' requires an argument\n",
  20216. +                  argv[0], argv[optind - 1]);
  20217. +           nextchar += strlen (nextchar);
  20218. +           return '?';
  20219. +         }
  20220. +         }
  20221. +       nextchar += strlen (nextchar);
  20222. +       if (longind != NULL)
  20223. +         *longind = option_index;
  20224. +       if (pfound->flag)
  20225. +         {
  20226. +           *(pfound->flag) = pfound->val;
  20227. +           return 0;
  20228. +         }
  20229. +       return pfound->val;
  20230. +     }
  20231. +       /* Can't find it as a long option.  If this is not getopt_long_only,
  20232. +      or the option starts with '--' or is not a valid short
  20233. +      option, then it's an error.
  20234. +      Otherwise interpret it as a short option. */
  20235. +       if (!long_only || argv[optind][1] == '-'
  20236. + #ifdef GETOPT_COMPAT
  20237. +       || argv[optind][0] == '+'
  20238. + #endif                /* GETOPT_COMPAT */
  20239. +       || my_index (optstring, *nextchar) == NULL)
  20240. +     {
  20241. +       if (opterr)
  20242. +         {
  20243. +           if (argv[optind][1] == '-')
  20244. +         /* --option */
  20245. +         fprintf (stderr, "%s: unrecognized option `--%s'\n",
  20246. +              argv[0], nextchar);
  20247. +           else
  20248. +         /* +option or -option */
  20249. +         fprintf (stderr, "%s: unrecognized option `%c%s'\n",
  20250. +              argv[0], argv[optind][0], nextchar);
  20251. +         }
  20252. +       nextchar += strlen (nextchar);
  20253. +       optind++;
  20254. +       return '?';
  20255. +     }
  20256. +     }
  20257. +   /* Look at and handle the next option-character.  */
  20258. +   {
  20259. +     char c = *nextchar++;
  20260. +     char *temp = my_index (optstring, c);
  20261. +     /* Increment `optind' when we start to process its last character.  */
  20262. +     if (*nextchar == '\0')
  20263. +       optind++;
  20264. +     if (temp == NULL || c == ':')
  20265. +       {
  20266. +     if (opterr)
  20267. +       {
  20268. +         if (c < 040 || c >= 0177)
  20269. +           fprintf (stderr, "%s: unrecognized option, character code 0%o\n",
  20270. +                argv[0], c);
  20271. +         else
  20272. +           fprintf (stderr, "%s: unrecognized option `-%c'\n", argv[0], c);
  20273. +       }
  20274. +     return '?';
  20275. +       }
  20276. +     if (temp[1] == ':')
  20277. +       {
  20278. +     if (temp[2] == ':')
  20279. +       {
  20280. +         /* This is an option that accepts an argument optionally.  */
  20281. +         if (*nextchar != '\0')
  20282. +           {
  20283. +         optarg = nextchar;
  20284. +         optind++;
  20285. +           }
  20286. +         else
  20287. +           optarg = 0;
  20288. +         nextchar = NULL;
  20289. +       }
  20290. +     else
  20291. +       {
  20292. +         /* This is an option that requires an argument.  */
  20293. +         if (*nextchar != 0)
  20294. +           {
  20295. +         optarg = nextchar;
  20296. +         /* If we end this ARGV-element by taking the rest as an arg,
  20297. +            we must advance to the next element now.  */
  20298. +         optind++;
  20299. +           }
  20300. +         else if (optind == argc)
  20301. +           {
  20302. +         if (opterr)
  20303. +           fprintf (stderr, "%s: option `-%c' requires an argument\n",
  20304. +                argv[0], c);
  20305. +         c = '?';
  20306. +           }
  20307. +         else
  20308. +           /* We already incremented `optind' once;
  20309. +          increment it again when taking next ARGV-elt as argument.  */
  20310. +           optarg = argv[optind++];
  20311. +         nextchar = NULL;
  20312. +       }
  20313. +       }
  20314. +     return c;
  20315. +   }
  20316. + }
  20317. + int
  20318. + getopt (argc, argv, optstring)
  20319. +      int argc;
  20320. +      char *const *argv;
  20321. +      const char *optstring;
  20322. + {
  20323. +   return _getopt_internal (argc, argv, optstring,
  20324. +                (const struct option *) 0,
  20325. +                (int *) 0,
  20326. +                0);
  20327. + }
  20328. + #ifdef TEST
  20329. + /* Compile with -DTEST to make an executable for use in testing
  20330. +    the above definition of `getopt'.  */
  20331. + int
  20332. + main (argc, argv)
  20333. +      int argc;
  20334. +      char **argv;
  20335. + {
  20336. +   int c;
  20337. +   int digit_optind = 0;
  20338. +   while (1)
  20339. +     {
  20340. +       int this_option_optind = optind ? optind : 1;
  20341. +       c = getopt (argc, argv, "abc:d:0123456789");
  20342. +       if (c == EOF)
  20343. +     break;
  20344. +       switch (c)
  20345. +     {
  20346. +     case '0':
  20347. +     case '1':
  20348. +     case '2':
  20349. +     case '3':
  20350. +     case '4':
  20351. +     case '5':
  20352. +     case '6':
  20353. +     case '7':
  20354. +     case '8':
  20355. +     case '9':
  20356. +       if (digit_optind != 0 && digit_optind != this_option_optind)
  20357. +         printf ("digits occur in two different argv-elements.\n");
  20358. +       digit_optind = this_option_optind;
  20359. +       printf ("option %c\n", c);
  20360. +       break;
  20361. +     case 'a':
  20362. +       printf ("option a\n");
  20363. +       break;
  20364. +     case 'b':
  20365. +       printf ("option b\n");
  20366. +       break;
  20367. +     case 'c':
  20368. +       printf ("option c with value `%s'\n", optarg);
  20369. +       break;
  20370. +     case '?':
  20371. +       break;
  20372. +     default:
  20373. +       printf ("?? getopt returned character code 0%o ??\n", c);
  20374. +     }
  20375. +     }
  20376. +   if (optind < argc)
  20377. +     {
  20378. +       printf ("non-option ARGV-elements: ");
  20379. +       while (optind < argc)
  20380. +     printf ("%s ", argv[optind++]);
  20381. +       printf ("\n");
  20382. +     }
  20383. +   exit (0);
  20384. + }
  20385. + #endif /* TEST */
  20386. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/getopt.h emacs-18.59/amiga/unix/src/zoneinfo/getopt.h
  20387. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/getopt.h    Thu Jan  1 00:00:00 1970
  20388. --- emacs-18.59/amiga/unix/src/zoneinfo/getopt.h    Tue Jun 23 20:12:40 1992
  20389. ***************
  20390. *** 0 ****
  20391. --- 1,113 ----
  20392. + /* Declarations for getopt.
  20393. +    Copyright (C) 1989, 1990, 1991, 1992 Free Software Foundation, Inc.
  20394. +    This program is free software; you can redistribute it and/or modify
  20395. +    it under the terms of the GNU General Public License as published by
  20396. +    the Free Software Foundation; either version 2, or (at your option)
  20397. +    any later version.
  20398. +    This program is distributed in the hope that it will be useful,
  20399. +    but WITHOUT ANY WARRANTY; without even the implied warranty of
  20400. +    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  20401. +    GNU General Public License for more details.
  20402. +    You should have received a copy of the GNU General Public License
  20403. +    along with this program; if not, write to the Free Software
  20404. +    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20405. + #ifndef _GETOPT_H_
  20406. + #define _GETOPT_H_
  20407. + /* For communication from `getopt' to the caller.
  20408. +    When `getopt' finds an option that takes an argument,
  20409. +    the argument value is returned here.
  20410. +    Also, when `ordering' is RETURN_IN_ORDER,
  20411. +    each non-option ARGV-element is returned here.  */
  20412. + extern char *optarg;
  20413. + /* Index in ARGV of the next element to be scanned.
  20414. +    This is used for communication to and from the caller
  20415. +    and for communication between successive calls to `getopt'.
  20416. +    On entry to `getopt', zero means this is the first call; initialize.
  20417. +    When `getopt' returns EOF, this is the index of the first of the
  20418. +    non-option elements that the caller should itself scan.
  20419. +    Otherwise, `optind' communicates from one call to the next
  20420. +    how much of ARGV has been scanned so far.  */
  20421. + extern int optind;
  20422. + /* Callers store zero here to inhibit the error message `getopt' prints
  20423. +    for unrecognized options.  */
  20424. + extern int opterr;
  20425. + /* Describe the long-named options requested by the application.
  20426. +    The LONG_OPTIONS argument to getopt_long or getopt_long_only is a vector
  20427. +    of `struct option' terminated by an element containing a name which is
  20428. +    zero.
  20429. +    The field `has_arg' is:
  20430. +    no_argument        (or 0) if the option does not take an argument,
  20431. +    required_argument    (or 1) if the option requires an argument,
  20432. +    optional_argument     (or 2) if the option takes an optional argument.
  20433. +    If the field `flag' is not NULL, it points to a variable that is set
  20434. +    to the value given in the field `val' when the option is found, but
  20435. +    left unchanged if the option is not found.
  20436. +    To have a long-named option do something other than set an `int' to
  20437. +    a compiled-in constant, such as set a value from `optarg', set the
  20438. +    option's `flag' field to zero and its `val' field to a nonzero
  20439. +    value (the equivalent single-letter option character, if there is
  20440. +    one).  For long options that have a zero `flag' field, `getopt'
  20441. +    returns the contents of the `val' field.  */
  20442. + struct option
  20443. + {
  20444. + #ifdef    __STDC__
  20445. +   const char *name;
  20446. + #else
  20447. +   char *name;
  20448. + #endif
  20449. +   /* has_arg can't be an enum because some compilers complain about
  20450. +      type mismatches in all the code that assumes it is an int.  */
  20451. +   int has_arg;
  20452. +   int *flag;
  20453. +   int val;
  20454. + };
  20455. + /* Names for the values of the `has_arg' field of `struct option'.  */
  20456. + enum _argtype
  20457. + {
  20458. +   no_argument,
  20459. +   required_argument,
  20460. +   optional_argument
  20461. + };
  20462. + #ifdef __STDC__
  20463. + extern int getopt (int argc, char *const *argv, const char *shortopts);
  20464. + extern int getopt_long (int argc, char *const *argv, const char *shortopts,
  20465. +                 const struct option *longopts, int *longind);
  20466. + extern int getopt_long_only (int argc, char *const *argv,
  20467. +                  const char *shortopts,
  20468. +                      const struct option *longopts, int *longind);
  20469. + /* Internal only.  Users should not call this directly.  */
  20470. + extern int _getopt_internal (int argc, char *const *argv,
  20471. +                  const char *shortopts,
  20472. +                      const struct option *longopts, int *longind,
  20473. +                  int long_only);
  20474. + #else /* not __STDC__ */
  20475. + extern int getopt ();
  20476. + extern int getopt_long ();
  20477. + extern int getopt_long_only ();
  20478. + extern int _getopt_internal ();
  20479. + #endif /* not __STDC__ */
  20480. + #endif /* _GETOPT_H_ */
  20481. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/ialloc.c emacs-18.59/amiga/unix/src/zoneinfo/ialloc.c
  20482. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/ialloc.c    Thu Jan  1 00:00:00 1970
  20483. --- emacs-18.59/amiga/unix/src/zoneinfo/ialloc.c    Sat Aug  1 16:53:24 1992
  20484. ***************
  20485. *** 0 ****
  20486. --- 1,142 ----
  20487. + /*-
  20488. +  * Copyright (c) 1991 The Regents of the University of California.
  20489. +  * All rights reserved.
  20490. +  *
  20491. +  * This code is derived from software contributed to Berkeley by
  20492. +  * Arthur David Olson of the National Cancer Institute.
  20493. +  *
  20494. +  * Redistribution and use in source and binary forms, with or without
  20495. +  * modification, are permitted provided that the following conditions
  20496. +  * are met:
  20497. +  * 1. Redistributions of source code must retain the above copyright
  20498. +  *    notice, this list of conditions and the following disclaimer.
  20499. +  * 2. Redistributions in binary form must reproduce the above copyright
  20500. +  *    notice, this list of conditions and the following disclaimer in the
  20501. +  *    documentation and/or other materials provided with the distribution.
  20502. +  * 3. All advertising materials mentioning features or use of this software
  20503. +  *    must display the following acknowledgement:
  20504. +  *    This product includes software developed by the University of
  20505. +  *    California, Berkeley and its contributors.
  20506. +  * 4. Neither the name of the University nor the names of its contributors
  20507. +  *    may be used to endorse or promote products derived from this software
  20508. +  *    without specific prior written permission.
  20509. +  *
  20510. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  20511. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  20512. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20513. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  20514. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  20515. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  20516. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  20517. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  20518. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  20519. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  20520. +  * SUCH DAMAGE.
  20521. +  */
  20522. + #ifndef lint
  20523. + static char sccsid[] = "@(#)ialloc.c    5.3 (Berkeley) 4/20/91";
  20524. + #endif /* not lint */
  20525. + #ifdef notdef
  20526. + static char    elsieid[] = "@(#)ialloc.c    8.18";
  20527. + #endif
  20528. + /*LINTLIBRARY*/
  20529. + #include <sys/cdefs.h>
  20530. + #include <sys/types.h>
  20531. + #include <string.h>
  20532. + #include <stdlib.h>
  20533. + #ifdef MAL
  20534. + #define NULLMAL(x)    ((x) == NULL || (x) == MAL)
  20535. + #else /* !defined MAL */
  20536. + #define NULLMAL(x)    ((x) == NULL)
  20537. + #endif /* !defined MAL */
  20538. + #define nonzero(n)    (((n) == 0) ? 1 : (n))
  20539. + char *    icalloc __P((int nelem, int elsize));
  20540. + char *    icatalloc __P((char * old, const char * new));
  20541. + char *    icpyalloc __P((const char * string));
  20542. + char *    imalloc __P((int n));
  20543. + char *    irealloc __P((char * pointer, int size));
  20544. + void    ifree __P((char * pointer));
  20545. + char *
  20546. + imalloc(n)
  20547. + const int    n;
  20548. + {
  20549. + #ifdef MAL
  20550. +     register char *    result;
  20551. +     result = malloc((size_t) nonzero(n));
  20552. +     return NULLMAL(result) ? NULL : result;
  20553. + #else /* !defined MAL */
  20554. +     return malloc((size_t) nonzero(n));
  20555. + #endif /* !defined MAL */
  20556. + }
  20557. + char *
  20558. + icalloc(nelem, elsize)
  20559. + int    nelem;
  20560. + int    elsize;
  20561. + {
  20562. +     if (nelem == 0 || elsize == 0)
  20563. +         nelem = elsize = 1;
  20564. +     return calloc((size_t) nelem, (size_t) elsize);
  20565. + }
  20566. + char *
  20567. + irealloc(pointer, size)
  20568. + char * const    pointer;
  20569. + const int    size;
  20570. + {
  20571. +     if (NULLMAL(pointer))
  20572. +         return imalloc(size);
  20573. +     return realloc((void *) pointer, (size_t) nonzero(size));
  20574. + }
  20575. + char *
  20576. + icatalloc(old, new)
  20577. + char * const        old;
  20578. + const char * const    new;
  20579. + {
  20580. +     register char *    result;
  20581. +     register    oldsize, newsize;
  20582. +     newsize = NULLMAL(new) ? 0 : strlen(new);
  20583. +     if (NULLMAL(old))
  20584. +         oldsize = 0;
  20585. +     else if (newsize == 0)
  20586. +         return old;
  20587. +     else    oldsize = strlen(old);
  20588. +     if ((result = irealloc(old, oldsize + newsize + 1)) != NULL)
  20589. +         if (!NULLMAL(new))
  20590. +             (void) strcpy(result + oldsize, new);
  20591. +     return result;
  20592. + }
  20593. + char *
  20594. + icpyalloc(string)
  20595. + const char * const    string;
  20596. + {
  20597. +     return icatalloc((char *) NULL, string);
  20598. + }
  20599. + void
  20600. + ifree(p)
  20601. + char * const    p;
  20602. + {
  20603. +     if (!NULLMAL(p))
  20604. +         (void) free(p);
  20605. + }
  20606. + void
  20607. + icfree(p)
  20608. + char * const    p;
  20609. + {
  20610. +     if (!NULLMAL(p))
  20611. +         (void) free(p);
  20612. + }
  20613. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/smakefile emacs-18.59/amiga/unix/src/zoneinfo/smakefile
  20614. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/smakefile    Thu Jan  1 00:00:00 1970
  20615. --- emacs-18.59/amiga/unix/src/zoneinfo/smakefile    Thu Sep 30 19:25:36 1993
  20616. ***************
  20617. *** 0 ****
  20618. --- 1,11 ----
  20619. + CFLAGS= DEFINE=TM_GMTOFF=tm_gmtoff DEFINE=TM_ZONE=tm_zone DEFINE=emkdir=mkdir DEFINE=NOSOLAR IDIR=src:unix/include/ IGNORE=104
  20620. + all: zic
  20621. + zic: zic.o ialloc.o getopt.o
  20622. +     sc link to zic zic.o ialloc.o getopt.o lib src:unix/src/unix.lib
  20623. + zic.o: zic.c
  20624. + ialloc.o: ialloc.c
  20625. + getopt.o: getopt.c getopt.h
  20626. Binary files /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/zic and emacs-18.59/amiga/unix/src/zoneinfo/zic differ
  20627. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/zic.8 emacs-18.59/amiga/unix/src/zoneinfo/zic.8
  20628. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/zic.8    Thu Jan  1 00:00:00 1970
  20629. --- emacs-18.59/amiga/unix/src/zoneinfo/zic.8    Sat Aug  1 14:23:58 1992
  20630. ***************
  20631. *** 0 ****
  20632. --- 1,424 ----
  20633. + .\" Copyright (c) 1991 The Regents of the University of California.
  20634. + .\" All rights reserved.
  20635. + .\"
  20636. + .\" This code is derived from software contributed to Berkeley by
  20637. + .\" Arthur David Olson of the National Cancer Institute.
  20638. + .\"
  20639. + .\" Redistribution and use in source and binary forms, with or without
  20640. + .\" modification, are permitted provided that the following conditions
  20641. + .\" are met:
  20642. + .\" 1. Redistributions of source code must retain the above copyright
  20643. + .\"    notice, this list of conditions and the following disclaimer.
  20644. + .\" 2. Redistributions in binary form must reproduce the above copyright
  20645. + .\"    notice, this list of conditions and the following disclaimer in the
  20646. + .\"    documentation and/or other materials provided with the distribution.
  20647. + .\" 3. All advertising materials mentioning features or use of this software
  20648. + .\"    must display the following acknowledgement:
  20649. + .\"    This product includes software developed by the University of
  20650. + .\"    California, Berkeley and its contributors.
  20651. + .\" 4. Neither the name of the University nor the names of its contributors
  20652. + .\"    may be used to endorse or promote products derived from this software
  20653. + .\"    without specific prior written permission.
  20654. + .\"
  20655. + .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  20656. + .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  20657. + .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  20658. + .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  20659. + .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  20660. + .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  20661. + .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  20662. + .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  20663. + .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  20664. + .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  20665. + .\" SUCH DAMAGE.
  20666. + .\"
  20667. + .\"    @(#)zic.8    5.2 (Berkeley) 4/20/91
  20668. + .\"
  20669. + .TH ZIC 8
  20670. + .SH NAME
  20671. + zic \- time zone compiler
  20672. + .SH SYNOPSIS
  20673. + .B zic
  20674. + [
  20675. + .B \-v
  20676. + ] [
  20677. + .B \-d
  20678. + .I directory
  20679. + ] [
  20680. + .B \-l
  20681. + .I localtime
  20682. + ] [
  20683. + .B \-p
  20684. + .I posixrules
  20685. + ] [
  20686. + .B \-L
  20687. + .I leapsecondfilename
  20688. + ] [
  20689. + .B \-s
  20690. + ] [
  20691. + .I filename
  20692. + \&... ]
  20693. + .SH DESCRIPTION
  20694. + .if t .ds lq ``
  20695. + .if t .ds rq ''
  20696. + .if n .ds lq \&"\"
  20697. + .if n .ds rq \&"\"
  20698. + .de q
  20699. + \\$3\*(lq\\$1\*(rq\\$2
  20700. + ..
  20701. + .I Zic
  20702. + reads text from the file(s) named on the command line
  20703. + and creates the time conversion information files specified in this input.
  20704. + If a
  20705. + .I filename
  20706. + is
  20707. + .BR \- ,
  20708. + the standard input is read.
  20709. + .PP
  20710. + These options are available:
  20711. + .TP
  20712. + .BI "\-d " directory
  20713. + Create time conversion information files in the named directory rather than
  20714. + in the standard directory named below.
  20715. + .TP
  20716. + .BI "\-l " timezone
  20717. + Use the given time zone as local time.
  20718. + .I Zic
  20719. + will act as if the input contained a link line of the form
  20720. + .sp
  20721. + .ti +.5i
  20722. + Link    \fItimezone\fP        localtime
  20723. + .TP
  20724. + .BI "\-p " timezone
  20725. + Use the given time zone's rules when handling POSIX-format
  20726. + time zone environment variables.
  20727. + .I Zic
  20728. + will act as if the input contained a link line of the form
  20729. + .sp
  20730. + .ti +.5i
  20731. + Link    \fItimezone\fP        posixrules
  20732. + .TP
  20733. + .BI "\-L " leapsecondfilename
  20734. + Read leap second information from the file with the given name.
  20735. + If this option is not used,
  20736. + no leap second information appears in output files.
  20737. + .TP
  20738. + .B \-v
  20739. + Complain if a year that appears in a data file is outside the range
  20740. + of years representable by
  20741. + .IR time (2)
  20742. + values.
  20743. + .TP
  20744. + .B \-s
  20745. + Limit time values stored in output files to values that are the same
  20746. + whether they're taken to be signed or unsigned.
  20747. + You can use this option to generate SVVS-compatible files.
  20748. + .sp
  20749. + Input lines are made up of fields.
  20750. + Fields are separated from one another by any number of white space characters.
  20751. + Leading and trailing white space on input lines is ignored.
  20752. + An unquoted sharp character (#) in the input introduces a comment which extends
  20753. + to the end of the line the sharp character appears on.
  20754. + White space characters and sharp characters may be enclosed in double quotes
  20755. + (") if they're to be used as part of a field.
  20756. + Any line that is blank (after comment stripping) is ignored.
  20757. + Non-blank lines are expected to be of one of three types:
  20758. + rule lines, zone lines, and link lines.
  20759. + .PP
  20760. + A rule line has the form
  20761. + .nf
  20762. + .B
  20763. + .ti +.5i
  20764. + .ta \w'Rule\0\0'u +\w'NAME\0\0'u +\w'FROM\0\0'u +\w'1973\0\0'u +\w'TYPE\0\0'u +\w'Apr\0\0'u +\w'lastSun\0\0'u +\w'2:00\0\0'u +\w'SAVE\0\0'u
  20765. + .sp
  20766. + Rule    NAME    FROM    TO    TYPE    IN    ON    AT    SAVE    LETTER/S
  20767. + .sp
  20768. + For example:
  20769. + .ti +.5i
  20770. + .sp
  20771. + Rule    USA    1969    1973    \-    Apr    lastSun    2:00    1:00    D
  20772. + .sp
  20773. + .fi
  20774. + The fields that make up a rule line are:
  20775. + .TP "\w'LETTER/S'u"
  20776. + .B NAME
  20777. + Gives the (arbitrary) name of the set of rules this rule is part of.
  20778. + .TP
  20779. + .B FROM
  20780. + Gives the first year in which the rule applies.
  20781. + The word
  20782. + .B minimum
  20783. + (or an abbreviation) means the minimum year with a representable time value.
  20784. + The word
  20785. + .B maximum
  20786. + (or an abbreviation) means the maximum year with a representable time value.
  20787. + .TP
  20788. + .B TO
  20789. + Gives the final year in which the rule applies.
  20790. + In addition to
  20791. + .B minimum
  20792. + and
  20793. + .B maximum
  20794. + (as above),
  20795. + the word
  20796. + .B only
  20797. + (or an abbreviation)
  20798. + may be used to repeat the value of the
  20799. + .B FROM
  20800. + field.
  20801. + .TP
  20802. + .B TYPE
  20803. + Gives the type of year in which the rule applies.
  20804. + If
  20805. + .B TYPE
  20806. + is
  20807. + .B \-
  20808. + then the rule applies in all years between
  20809. + .B FROM
  20810. + and
  20811. + .B TO
  20812. + inclusive;
  20813. + if
  20814. + .B TYPE
  20815. + is
  20816. + .BR uspres ,
  20817. + the rule applies in U.S. Presidential election years;
  20818. + if
  20819. + .B TYPE
  20820. + is
  20821. + .BR nonpres ,
  20822. + the rule applies in years other than U.S. Presidential election years.
  20823. + If
  20824. + .B TYPE
  20825. + is something else, then
  20826. + .I zic
  20827. + executes the command
  20828. + .ti +.5i
  20829. + \fByearistype\fP \fIyear\fP \fItype\fP
  20830. + .br
  20831. + to check the type of a year:
  20832. + an exit status of zero is taken to mean that the year is of the given type;
  20833. + an exit status of one is taken to mean that the year is not of the given type.
  20834. + .TP
  20835. + .B IN
  20836. + Names the month in which the rule takes effect.
  20837. + Month names may be abbreviated.
  20838. + .TP
  20839. + .B ON
  20840. + Gives the day on which the rule takes effect.
  20841. + Recognized forms include:
  20842. + .nf
  20843. + .in +.5i
  20844. + .sp
  20845. + .ta \w'Sun<=25\0\0'u
  20846. + 5    the fifth of the month
  20847. + lastSun    the last Sunday in the month
  20848. + lastMon    the last Monday in the month
  20849. + Sun>=8    first Sunday on or after the eighth
  20850. + Sun<=25    last Sunday on or before the 25th
  20851. + .fi
  20852. + .in -.5i
  20853. + .sp
  20854. + Names of days of the week may be abbreviated or spelled out in full.
  20855. + Note that there must be no spaces within the
  20856. + .B ON
  20857. + field.
  20858. + .TP
  20859. + .B AT
  20860. + Gives the time of day at which the rule takes effect.
  20861. + Recognized forms include:
  20862. + .nf
  20863. + .in +.5i
  20864. + .sp
  20865. + .ta \w'1:28:13\0\0'u
  20866. + 2    time in hours
  20867. + 2:00    time in hours and minutes
  20868. + 15:00    24-hour format time (for times after noon)
  20869. + 1:28:14    time in hours, minutes, and seconds
  20870. + .fi
  20871. + .in -.5i
  20872. + .sp
  20873. + Any of these forms may be followed by the letter
  20874. + .B w
  20875. + if the given time is local
  20876. + .q "wall clock"
  20877. + time or
  20878. + .B s
  20879. + if the given time is local
  20880. + .q standard
  20881. + time; in the absence of
  20882. + .B w
  20883. + or
  20884. + .BR s ,
  20885. + wall clock time is assumed.
  20886. + .TP
  20887. + .B SAVE
  20888. + Gives the amount of time to be added to local standard time when the rule is in
  20889. + effect.
  20890. + This field has the same format as the
  20891. + .B AT
  20892. + field
  20893. + (although, of course, the
  20894. + .B w
  20895. + and
  20896. + .B s
  20897. + suffixes are not used).
  20898. + .TP
  20899. + .B LETTER/S
  20900. + Gives the
  20901. + .q "variable part"
  20902. + (for example, the
  20903. + .q S
  20904. + or
  20905. + .q D
  20906. + in
  20907. + .q EST
  20908. + or
  20909. + .q EDT )
  20910. + of time zone abbreviations to be used when this rule is in effect.
  20911. + If this field is
  20912. + .BR \- ,
  20913. + the variable part is null.
  20914. + .PP
  20915. + A zone line has the form
  20916. + .sp
  20917. + .nf
  20918. + .ti +.5i
  20919. + .ta \w'Zone\0\0'u +\w'Australia/South\-west\0\0'u +\w'GMTOFF\0\0'u +\w'RULES/SAVE\0\0'u +\w'FORMAT\0\0'u
  20920. + Zone    NAME    GMTOFF    RULES/SAVE    FORMAT    [UNTIL]
  20921. + .sp
  20922. + For example:
  20923. + .sp
  20924. + .ti +.5i
  20925. + Zone    Australia/South\-west    9:30    Aus    CST    1987 Mar 15 2:00
  20926. + .sp
  20927. + .fi
  20928. + The fields that make up a zone line are:
  20929. + .TP "\w'GMTOFF'u"
  20930. + .B NAME
  20931. + The name of the time zone.
  20932. + This is the name used in creating the time conversion information file for the
  20933. + zone.
  20934. + .TP
  20935. + .B GMTOFF
  20936. + The amount of time to add to GMT to get standard time in this zone.
  20937. + This field has the same format as the
  20938. + .B AT
  20939. + and
  20940. + .B SAVE
  20941. + fields of rule lines;
  20942. + begin the field with a minus sign if time must be subtracted from GMT.
  20943. + .TP
  20944. + .B RULES/SAVE
  20945. + The name of the rule(s) that apply in the time zone or,
  20946. + alternately, an amount of time to add to local standard time.
  20947. + If this field is
  20948. + .B \-
  20949. + then standard time always applies in the time zone.
  20950. + .TP
  20951. + .B FORMAT
  20952. + The format for time zone abbreviations in this time zone.
  20953. + The pair of characters
  20954. + .B %s
  20955. + is used to show where the
  20956. + .q "variable part"
  20957. + of the time zone abbreviation goes.
  20958. + .TP
  20959. + .B UNTIL
  20960. + The time at which the GMT offset or the rule(s) change for a location.
  20961. + It is specified as a year, a month, a day, and a time of day.
  20962. + If this is specified,
  20963. + the time zone information is generated from the given GMT offset
  20964. + and rule change until the time specified.
  20965. + .IP
  20966. + The next line must be a
  20967. + .q continuation
  20968. + line; this has the same form as a zone line except that the
  20969. + string
  20970. + .q Zone
  20971. + and the name are omitted, as the continuation line will
  20972. + place information starting at the time specified as the
  20973. + .B UNTIL
  20974. + field in the previous line in the file used by the previous line.
  20975. + Continuation lines may contain an
  20976. + .B UNTIL
  20977. + field, just as zone lines do, indicating that the next line is a further
  20978. + continuation.
  20979. + .PP
  20980. + A link line has the form
  20981. + .sp
  20982. + .nf
  20983. + .ti +.5i
  20984. + .if t .ta \w'Link\0\0'u +\w'LINK-FROM\0\0'u
  20985. + .if n .ta \w'Link\0\0'u +\w'US/Eastern\0\0'u
  20986. + Link    LINK-FROM    LINK-TO
  20987. + .sp
  20988. + For example:
  20989. + .sp
  20990. + .ti +.5i
  20991. + Link    US/Eastern    EST5EDT
  20992. + .sp
  20993. + .fi
  20994. + The
  20995. + .B LINK-FROM
  20996. + field should appear as the
  20997. + .B NAME
  20998. + field in some zone line;
  20999. + the
  21000. + .B LINK-TO
  21001. + field is used as an alternate name for that zone.
  21002. + .PP
  21003. + Except for continuation lines,
  21004. + lines may appear in any order in the input.
  21005. + .PP
  21006. + Lines in the file that describes leap seconds have the following form:
  21007. + .nf
  21008. + .B
  21009. + .ti +.5i
  21010. + .ta \w'Leap\0\0'u +\w'YEAR\0\0'u +\w'MONTH\0\0'u +\w'DAY\0\0'u +\w'HH:MM:SS\0\0'u +\w'CORR\0\0'u
  21011. + Leap    YEAR    MONTH    DAY    HH:MM:SS    CORR    R/S
  21012. + .sp
  21013. + For example:
  21014. + .ti +.5i
  21015. + .sp
  21016. + Leap    1974    Dec    31    23:59:60    +    S
  21017. + .sp
  21018. + .fi
  21019. + The 
  21020. + .BR YEAR ,
  21021. + .BR MONTH ,
  21022. + .BR DAY ,
  21023. + and
  21024. + .B HH:MM:SS
  21025. + fields tell when the leap second happened.
  21026. + The
  21027. + .B CORR
  21028. + field
  21029. + should be
  21030. + .q +
  21031. + if a second was added
  21032. + or 
  21033. + .q -
  21034. + if a second was skipped.
  21035. + The
  21036. + .B R/S
  21037. + field
  21038. + should be (an abbreviation of)
  21039. + .q Stationary
  21040. + if the leap second time given by the other fields should be interpreted as GMT
  21041. + or
  21042. + (an abbreviation of)
  21043. + .q Rolling
  21044. + if the leap second time given by the other fields should be interpreted as
  21045. + local wall clock time.
  21046. + .SH NOTE
  21047. + For areas with more than two types of local time,
  21048. + you may need to use local standard time in the
  21049. + .B AT
  21050. + field of the earliest transition time's rule to ensure that
  21051. + the earliest transition time recorded in the compiled file is correct.
  21052. + .SH FILE
  21053. + /etc/zoneinfo    standard directory used for created files
  21054. + .SH "SEE ALSO"
  21055. + newctime(3), tzfile(5), zdump(8)
  21056. + .. @(#)zic.8    4.4
  21057. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/zic.c emacs-18.59/amiga/unix/src/zoneinfo/zic.c
  21058. *** /src/baseline/emacs-18.59/amiga/unix/src/zoneinfo/zic.c    Thu Jan  1 00:00:00 1970
  21059. --- emacs-18.59/amiga/unix/src/zoneinfo/zic.c    Sat Aug  1 18:39:52 1992
  21060. ***************
  21061. *** 0 ****
  21062. --- 1,1903 ----
  21063. + /*-
  21064. +  * Copyright (c) 1991 The Regents of the University of California.
  21065. +  * All rights reserved.
  21066. +  *
  21067. +  * This code is derived from software contributed to Berkeley by
  21068. +  * Arthur David Olson of the National Cancer Institute.
  21069. +  *
  21070. +  * Redistribution and use in source and binary forms, with or without
  21071. +  * modification, are permitted provided that the following conditions
  21072. +  * are met:
  21073. +  * 1. Redistributions of source code must retain the above copyright
  21074. +  *    notice, this list of conditions and the following disclaimer.
  21075. +  * 2. Redistributions in binary form must reproduce the above copyright
  21076. +  *    notice, this list of conditions and the following disclaimer in the
  21077. +  *    documentation and/or other materials provided with the distribution.
  21078. +  * 3. All advertising materials mentioning features or use of this software
  21079. +  *    must display the following acknowledgement:
  21080. +  *    This product includes software developed by the University of
  21081. +  *    California, Berkeley and its contributors.
  21082. +  * 4. Neither the name of the University nor the names of its contributors
  21083. +  *    may be used to endorse or promote products derived from this software
  21084. +  *    without specific prior written permission.
  21085. +  *
  21086. +  * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  21087. +  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  21088. +  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  21089. +  * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  21090. +  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  21091. +  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  21092. +  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  21093. +  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  21094. +  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  21095. +  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  21096. +  * SUCH DAMAGE.
  21097. +  */
  21098. + #ifndef lint
  21099. + static char sccsid[] = "@(#)zic.c    5.3 (Berkeley) 4/20/91";
  21100. + #endif /* not lint */
  21101. + #ifdef notdef
  21102. + static char    elsieid[] = "@(#)zic.c    4.12";
  21103. + #endif
  21104. + #include <sys/types.h>
  21105. + #include <sys/cdefs.h>
  21106. + #include <sys/stat.h>
  21107. + #include <time.h>
  21108. + #include <tzfile.h>
  21109. + #include <stdio.h>
  21110. + #include <ctype.h>
  21111. + #include <string.h>
  21112. + #include <stdlib.h>
  21113. + #ifndef TRUE
  21114. + #define TRUE    1
  21115. + #define FALSE    0
  21116. + #endif /* !defined TRUE */
  21117. + #ifndef EXIT_FAILURE
  21118. + #define EXIT_FAILURE 1
  21119. + #endif
  21120. + #ifndef EXIT_SUCCESS
  21121. + #define EXIT_SUCCESS 0
  21122. + #endif
  21123. + struct rule {
  21124. +     const char *    r_filename;
  21125. +     int        r_linenum;
  21126. +     const char *    r_name;
  21127. +     int        r_loyear;    /* for example, 1986 */
  21128. +     int        r_hiyear;    /* for example, 1986 */
  21129. +     const char *    r_yrtype;
  21130. +     int        r_month;    /* 0..11 */
  21131. +     int        r_dycode;    /* see below */
  21132. +     int        r_dayofmonth;
  21133. +     int        r_wday;
  21134. +     long        r_tod;        /* time from midnight */
  21135. +     int        r_todisstd;    /* above is standard time if TRUE */
  21136. +                     /* or wall clock time if FALSE */
  21137. +     long        r_stdoff;    /* offset from standard time */
  21138. +     const char *    r_abbrvar;    /* variable part of abbreviation */
  21139. +     int        r_todo;        /* a rule to do (used in outzone) */
  21140. +     time_t        r_temp;        /* used in outzone */
  21141. + };
  21142. + /*
  21143. + **    r_dycode        r_dayofmonth    r_wday
  21144. + */
  21145. + #define DC_DOM        0    /* 1..31 */    /* unused */
  21146. + #define DC_DOWGEQ    1    /* 1..31 */    /* 0..6 (Sun..Sat) */
  21147. + #define DC_DOWLEQ    2    /* 1..31 */    /* 0..6 (Sun..Sat) */
  21148. + struct zone {
  21149. +     const char *    z_filename;
  21150. +     int        z_linenum;
  21151. +     const char *    z_name;
  21152. +     long        z_gmtoff;
  21153. +     const char *    z_rule;
  21154. +     const char *    z_format;
  21155. +     long        z_stdoff;
  21156. +     struct rule *    z_rules;
  21157. +     int        z_nrules;
  21158. +     struct rule    z_untilrule;
  21159. +     time_t        z_untiltime;
  21160. + };
  21161. + extern char *    icatalloc __P((char * old, const char * new));
  21162. + extern char *    icpyalloc __P((const char * string));
  21163. + extern void    ifree __P((char * p));
  21164. + extern char *    imalloc __P((int n));
  21165. + extern char *    irealloc __P((char * old, int n));
  21166. + extern int    link __P((const char * fromname, const char * toname));
  21167. + extern char *    optarg;
  21168. + extern int    optind;
  21169. + static void    addtt __P((time_t starttime, int type));
  21170. + static int    addtype
  21171. +             __P((long gmtoff, const char * abbr, int isdst,
  21172. +             int ttisstd));
  21173. + static void    addleap __P((time_t t, int positive, int rolling));
  21174. + static void    adjleap __P((void));
  21175. + static void    associate __P((void));
  21176. + static int    ciequal __P((const char * ap, const char * bp));
  21177. + static void    convert __P((long val, char * buf));
  21178. + static void    dolink __P((const char * fromfile, const char * tofile));
  21179. + static void    eat __P((const char * name, int num));
  21180. + static void    eats __P((const char * name, int num,
  21181. +             const char * rname, int rnum));
  21182. + static long    eitol __P((int i));
  21183. + static void    error __P((const char * message));
  21184. + static char **    getfields __P((char * buf));
  21185. + static long    gethms __P((char * string, const char * errstrng,
  21186. +             int signable));
  21187. + static void    infile __P((const char * filename));
  21188. + static void    inleap __P((char ** fields, int nfields));
  21189. + static void    inlink __P((char ** fields, int nfields));
  21190. + static void    inrule __P((char ** fields, int nfields));
  21191. + static int    inzcont __P((char ** fields, int nfields));
  21192. + static int    inzone __P((char ** fields, int nfields));
  21193. + static int    inzsub __P((char ** fields, int nfields, int iscont));
  21194. + static int    itsabbr __P((const char * abbr, const char * word));
  21195. + static int    itsdir __P((const char * name));
  21196. + static int    lowerit __P((int c));
  21197. + static char *    memcheck __P((char * tocheck));
  21198. + static int    mkdirs __P((char * filename));
  21199. + static void    newabbr __P((const char * abbr));
  21200. + static long    oadd __P((long t1, long t2));
  21201. + static void    outzone __P((const struct zone * zp, int ntzones));
  21202. + static void    puttzcode __P((long code, FILE * fp));
  21203. + static int    rcomp __P((const void *leftp, const void *rightp));
  21204. + static time_t    rpytime __P((const struct rule * rp, int wantedy));
  21205. + static void    rulesub __P((struct rule * rp, char * loyearp, char * hiyearp,
  21206. +         char * typep, char * monthp, char * dayp, char * timep));
  21207. + static void    setboundaries __P((void));
  21208. + static time_t    tadd __P((time_t t1, long t2));
  21209. + static void    usage __P((void));
  21210. + static void    writezone __P((const char * name));
  21211. + static int    yearistype __P((int year, const char * type));
  21212. + static int        charcnt;
  21213. + static int        errors;
  21214. + static const char *    filename;
  21215. + static int        leapcnt;
  21216. + static int        linenum;
  21217. + static time_t        max_time;
  21218. + static int        max_year;
  21219. + static time_t        min_time;
  21220. + static int        min_year;
  21221. + static int        noise;
  21222. + static const char *    rfilename;
  21223. + static int        rlinenum;
  21224. + static const char *    progname;
  21225. + static int        timecnt;
  21226. + static int        typecnt;
  21227. + static int        tt_signed;
  21228. + /*
  21229. + ** Line codes.
  21230. + */
  21231. + #define LC_RULE        0
  21232. + #define LC_ZONE        1
  21233. + #define LC_LINK        2
  21234. + #define LC_LEAP        3
  21235. + /*
  21236. + ** Which fields are which on a Zone line.
  21237. + */
  21238. + #define ZF_NAME        1
  21239. + #define ZF_GMTOFF    2
  21240. + #define ZF_RULE        3
  21241. + #define ZF_FORMAT    4
  21242. + #define ZF_TILYEAR    5
  21243. + #define ZF_TILMONTH    6
  21244. + #define ZF_TILDAY    7
  21245. + #define ZF_TILTIME    8
  21246. + #define ZONE_MINFIELDS    5
  21247. + #define ZONE_MAXFIELDS    9
  21248. + /*
  21249. + ** Which fields are which on a Zone continuation line.
  21250. + */
  21251. + #define ZFC_GMTOFF    0
  21252. + #define ZFC_RULE    1
  21253. + #define ZFC_FORMAT    2
  21254. + #define ZFC_TILYEAR    3
  21255. + #define ZFC_TILMONTH    4
  21256. + #define ZFC_TILDAY    5
  21257. + #define ZFC_TILTIME    6
  21258. + #define ZONEC_MINFIELDS    3
  21259. + #define ZONEC_MAXFIELDS    7
  21260. + /*
  21261. + ** Which files are which on a Rule line.
  21262. + */
  21263. + #define RF_NAME        1
  21264. + #define RF_LOYEAR    2
  21265. + #define RF_HIYEAR    3
  21266. + #define RF_COMMAND    4
  21267. + #define RF_MONTH    5
  21268. + #define RF_DAY        6
  21269. + #define RF_TOD        7
  21270. + #define RF_STDOFF    8
  21271. + #define RF_ABBRVAR    9
  21272. + #define RULE_FIELDS    10
  21273. + /*
  21274. + ** Which fields are which on a Link line.
  21275. + */
  21276. + #define LF_FROM        1
  21277. + #define LF_TO        2
  21278. + #define LINK_FIELDS    3
  21279. + /*
  21280. + ** Which fields are which on a Leap line.
  21281. + */
  21282. + #define LP_YEAR        1
  21283. + #define LP_MONTH    2
  21284. + #define LP_DAY        3
  21285. + #define LP_TIME        4
  21286. + #define LP_CORR        5
  21287. + #define LP_ROLL        6
  21288. + #define LEAP_FIELDS    7
  21289. + /*
  21290. + ** Year synonyms.
  21291. + */
  21292. + #define YR_MINIMUM    0
  21293. + #define YR_MAXIMUM    1
  21294. + #define YR_ONLY        2
  21295. + static struct rule *    rules;
  21296. + static int        nrules;    /* number of rules */
  21297. + static struct zone *    zones;
  21298. + static int        nzones;    /* number of zones */
  21299. + struct link {
  21300. +     const char *    l_filename;
  21301. +     int        l_linenum;
  21302. +     const char *    l_from;
  21303. +     const char *    l_to;
  21304. + };
  21305. + static struct link *    links;
  21306. + static int        nlinks;
  21307. + struct lookup {
  21308. +     const char *    l_word;
  21309. +     const int    l_value;
  21310. + };
  21311. + static struct lookup const *    byword __P((const char * string,
  21312. +                     const struct lookup * lp));
  21313. + static struct lookup const    line_codes[] = {
  21314. +     "Rule",        LC_RULE,
  21315. +     "Zone",        LC_ZONE,
  21316. +     "Link",        LC_LINK,
  21317. +     "Leap",        LC_LEAP,
  21318. +     NULL,        0
  21319. + };
  21320. + static struct lookup const    mon_names[] = {
  21321. +     "January",    TM_JANUARY,
  21322. +     "February",    TM_FEBRUARY,
  21323. +     "March",    TM_MARCH,
  21324. +     "April",    TM_APRIL,
  21325. +     "May",        TM_MAY,
  21326. +     "June",        TM_JUNE,
  21327. +     "July",        TM_JULY,
  21328. +     "August",    TM_AUGUST,
  21329. +     "September",    TM_SEPTEMBER,
  21330. +     "October",    TM_OCTOBER,
  21331. +     "November",    TM_NOVEMBER,
  21332. +     "December",    TM_DECEMBER,
  21333. +     NULL,        0
  21334. + };
  21335. + static struct lookup const    wday_names[] = {
  21336. +     "Sunday",    TM_SUNDAY,
  21337. +     "Monday",    TM_MONDAY,
  21338. +     "Tuesday",    TM_TUESDAY,
  21339. +     "Wednesday",    TM_WEDNESDAY,
  21340. +     "Thursday",    TM_THURSDAY,
  21341. +     "Friday",    TM_FRIDAY,
  21342. +     "Saturday",    TM_SATURDAY,
  21343. +     NULL,        0
  21344. + };
  21345. + static struct lookup const    lasts[] = {
  21346. +     "last-Sunday",        TM_SUNDAY,
  21347. +     "last-Monday",        TM_MONDAY,
  21348. +     "last-Tuesday",        TM_TUESDAY,
  21349. +     "last-Wednesday",    TM_WEDNESDAY,
  21350. +     "last-Thursday",    TM_THURSDAY,
  21351. +     "last-Friday",        TM_FRIDAY,
  21352. +     "last-Saturday",    TM_SATURDAY,
  21353. +     NULL,            0
  21354. + };
  21355. + static struct lookup const    begin_years[] = {
  21356. +     "minimum",        YR_MINIMUM,
  21357. +     "maximum",        YR_MAXIMUM,
  21358. +     NULL,            0
  21359. + };
  21360. + static struct lookup const    end_years[] = {
  21361. +     "minimum",        YR_MINIMUM,
  21362. +     "maximum",        YR_MAXIMUM,
  21363. +     "only",            YR_ONLY,
  21364. +     NULL,            0
  21365. + };
  21366. + static struct lookup const    leap_types[] = {
  21367. +     "Rolling",        TRUE,
  21368. +     "Stationary",        FALSE,
  21369. +     NULL,            0
  21370. + };
  21371. + static const int    len_months[2][MONSPERYEAR] = {
  21372. +     31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,
  21373. +     31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31
  21374. + };
  21375. + static const int    len_years[2] = {
  21376. +     DAYSPERNYEAR, DAYSPERLYEAR
  21377. + };
  21378. + static time_t        ats[TZ_MAX_TIMES];
  21379. + static unsigned char    types[TZ_MAX_TIMES];
  21380. + static long        gmtoffs[TZ_MAX_TYPES];
  21381. + static char        isdsts[TZ_MAX_TYPES];
  21382. + static char        abbrinds[TZ_MAX_TYPES];
  21383. + static char        ttisstds[TZ_MAX_TYPES];
  21384. + static char        chars[TZ_MAX_CHARS];
  21385. + static time_t        trans[TZ_MAX_LEAPS];
  21386. + static long        corr[TZ_MAX_LEAPS];
  21387. + static char        roll[TZ_MAX_LEAPS];
  21388. + /*
  21389. + ** Memory allocation.
  21390. + */
  21391. + static char *
  21392. + memcheck(ptr)
  21393. + char * const    ptr;
  21394. + {
  21395. +     if (ptr == NULL) {
  21396. +         (void) perror(progname);
  21397. +         (void) exit(EXIT_FAILURE);
  21398. +     }
  21399. +     return ptr;
  21400. + }
  21401. + #define emalloc(size)        memcheck(imalloc(size))
  21402. + #define erealloc(ptr, size)    memcheck(irealloc(ptr, size))
  21403. + #define ecpyalloc(ptr)        memcheck(icpyalloc(ptr))
  21404. + #define ecatalloc(oldp, newp)    memcheck(icatalloc(oldp, newp))
  21405. + /*
  21406. + ** Error handling.
  21407. + */
  21408. + static void
  21409. + eats(name, num, rname, rnum)
  21410. + const char * const    name;
  21411. + const int        num;
  21412. + const char * const    rname;
  21413. + const int        rnum;
  21414. + {
  21415. +     filename = name;
  21416. +     linenum = num;
  21417. +     rfilename = rname;
  21418. +     rlinenum = rnum;
  21419. + }
  21420. + static void
  21421. + eat(name, num)
  21422. + const char * const    name;
  21423. + const int        num;
  21424. + {
  21425. +     eats(name, num, (char *) NULL, -1);
  21426. + }
  21427. + static void
  21428. + error(string)
  21429. + const char * const    string;
  21430. + {
  21431. +     /*
  21432. +     ** Match the format of "cc" to allow sh users to
  21433. +     **     zic ... 2>&1 | error -t "*" -v
  21434. +     ** on BSD systems.
  21435. +     */
  21436. +     (void) fprintf(stderr, "\"%s\", line %d: %s",
  21437. +         filename, linenum, string);
  21438. +     if (rfilename != NULL)
  21439. +         (void) fprintf(stderr, " (rule from \"%s\", line %d)",
  21440. +             rfilename, rlinenum);
  21441. +     (void) fprintf(stderr, "\n");
  21442. +     ++errors;
  21443. + }
  21444. + static void
  21445. + usage()
  21446. + {
  21447. +     (void) fprintf(stderr,
  21448. + "%s: usage is %s [ -s ] [ -v ] [ -l localtime ] [ -p posixrules ] [ -d directory ]\n\
  21449. + \t[ -L leapseconds ] [ filename ... ]\n",
  21450. +         progname, progname);
  21451. +     (void) exit(EXIT_FAILURE);
  21452. + }
  21453. + static const char *    psxrules = NULL;
  21454. + static const char *    lcltime = NULL;
  21455. + static const char *    directory = NULL;
  21456. + static const char *    leapsec = NULL;
  21457. + static int        sflag = FALSE;
  21458. + int
  21459. + main(argc, argv)
  21460. + int    argc;
  21461. + char *    argv[];
  21462. + {
  21463. +     register int    i, j;
  21464. +     register int    c;
  21465. +     (void) umask(umask(022) | 022);
  21466. +     progname = argv[0];
  21467. +     while ((c = getopt(argc, argv, "d:l:p:L:vs")) != EOF)
  21468. +         switch (c) {
  21469. +             default:
  21470. +                 usage();
  21471. +             case 'd':
  21472. +                 if (directory == NULL)
  21473. +                     directory = optarg;
  21474. +                 else {
  21475. +                     (void) fprintf(stderr,
  21476. + "%s: More than one -d option specified\n",
  21477. +                         progname);
  21478. +                     (void) exit(EXIT_FAILURE);
  21479. +                 }
  21480. +                 break;
  21481. +             case 'l':
  21482. +                 if (lcltime == NULL)
  21483. +                     lcltime = optarg;
  21484. +                 else {
  21485. +                     (void) fprintf(stderr,
  21486. + "%s: More than one -l option specified\n",
  21487. +                         progname);
  21488. +                     (void) exit(EXIT_FAILURE);
  21489. +                 }
  21490. +                 break;
  21491. +             case 'p':
  21492. +                 if (psxrules == NULL)
  21493. +                     psxrules = optarg;
  21494. +                 else {
  21495. +                     (void) fprintf(stderr,
  21496. + "%s: More than one -p option specified\n",
  21497. +                         progname);
  21498. +                     (void) exit(EXIT_FAILURE);
  21499. +                 }
  21500. +                 break;
  21501. +             case 'L':
  21502. +                 if (leapsec == NULL)
  21503. +                     leapsec = optarg;
  21504. +                 else {
  21505. +                     (void) fprintf(stderr,
  21506. + "%s: More than one -L option specified\n",
  21507. +                         progname);
  21508. +                     (void) exit(EXIT_FAILURE);
  21509. +                 }
  21510. +                 break;
  21511. +             case 'v':
  21512. +                 noise = TRUE;
  21513. +                 break;
  21514. +             case 's':
  21515. +                 sflag = TRUE;
  21516. +                 break;
  21517. +         }
  21518. +     if (optind == argc - 1 && strcmp(argv[optind], "=") == 0)
  21519. +         usage();    /* usage message by request */
  21520. +     if (directory == NULL)
  21521. +         directory = TZDIR;
  21522. +     setboundaries();
  21523. +     if (optind < argc && leapsec != NULL) {
  21524. +         infile(leapsec);
  21525. +         adjleap();
  21526. +     }
  21527. +     zones = (struct zone *) emalloc(0);
  21528. +     rules = (struct rule *) emalloc(0);
  21529. +     links = (struct link *) emalloc(0);
  21530. +     for (i = optind; i < argc; ++i)
  21531. +         infile(argv[i]);
  21532. +     if (errors)
  21533. +         (void) exit(EXIT_FAILURE);
  21534. +     associate();
  21535. +     for (i = 0; i < nzones; i = j) {
  21536. +         /*
  21537. +         ** Find the next non-continuation zone entry.
  21538. +         */
  21539. +         for (j = i + 1; j < nzones && zones[j].z_name == NULL; ++j)
  21540. +             ;
  21541. +         outzone(&zones[i], j - i);
  21542. +     }
  21543. +     /*
  21544. +     ** Make links.
  21545. +     */
  21546. +     for (i = 0; i < nlinks; ++i)
  21547. +         dolink(links[i].l_from, links[i].l_to);
  21548. +     if (lcltime != NULL)
  21549. +         dolink(lcltime, TZDEFAULT);
  21550. +     if (psxrules != NULL)
  21551. +         dolink(psxrules, TZDEFRULES);
  21552. +     return (errors == 0) ? EXIT_SUCCESS : EXIT_FAILURE;
  21553. + }
  21554. + static void
  21555. + dolink(fromfile, tofile)
  21556. + const char * const    fromfile;
  21557. + const char * const    tofile;
  21558. + {
  21559. +     register char *    fromname;
  21560. +     register char *    toname;
  21561. +     fromname = ecpyalloc(directory);
  21562. +     fromname = ecatalloc(fromname, "/");
  21563. +     fromname = ecatalloc(fromname, fromfile);
  21564. +     if (strchr(tofile, ':')) toname = ecpyalloc(tofile);
  21565. +     else
  21566. +       {
  21567. +         toname = ecpyalloc(directory);
  21568. +         toname = ecatalloc(toname, "/");
  21569. +         toname = ecatalloc(toname, tofile);
  21570. +       }
  21571. +     /*
  21572. +     ** We get to be careful here since
  21573. +     ** there's a fair chance of root running us.
  21574. +     */
  21575. +     if (!itsdir(toname))
  21576. +         (void) remove(toname);
  21577. +     if (link(fromname, toname) != 0) {
  21578. +         (void) fprintf(stderr, "%s: Can't link from %s to ",
  21579. +             progname, fromname);
  21580. +         (void) perror(toname);
  21581. +         (void) exit(EXIT_FAILURE);
  21582. +     }
  21583. +     ifree(fromname);
  21584. +     ifree(toname);
  21585. + }
  21586. + static void
  21587. + setboundaries()
  21588. + {
  21589. +     register time_t    bit;
  21590. +     for (bit = 1; bit > 0; bit <<= 1)
  21591. +         ;
  21592. +     if (bit == 0) {        /* time_t is an unsigned type */
  21593. +         tt_signed = FALSE;
  21594. +         min_time = 0;
  21595. +         max_time = ~(time_t) 0;
  21596. +         if (sflag)
  21597. +             max_time >>= 1;
  21598. +     } else {
  21599. +         tt_signed = TRUE;
  21600. +         min_time = bit;
  21601. +         max_time = bit;
  21602. +         ++max_time;
  21603. +         max_time = -max_time;
  21604. +         if (sflag)
  21605. +             min_time = 0;
  21606. +     }
  21607. +     min_year = TM_YEAR_BASE + gmtime(&min_time)->tm_year;
  21608. +     max_year = TM_YEAR_BASE + gmtime(&max_time)->tm_year;
  21609. + }
  21610. + static int
  21611. + itsdir(name)
  21612. + const char * const    name;
  21613. + {
  21614. +     struct stat    s;
  21615. +     return (stat(name, &s) == 0 && S_ISDIR(s.st_mode));
  21616. + }
  21617. + /*
  21618. + ** Associate sets of rules with zones.
  21619. + */
  21620. + /*
  21621. + ** Sort by rule name.
  21622. + */
  21623. + static int
  21624. + rcomp(cp1, cp2)
  21625. + const void *    cp1;
  21626. + const void *    cp2;
  21627. + {
  21628. +     return strcmp(((struct rule *) cp1)->r_name,
  21629. +         ((struct rule *) cp2)->r_name);
  21630. + }
  21631. + static void
  21632. + associate()
  21633. + {
  21634. +     register struct zone *    zp;
  21635. +     register struct rule *    rp;
  21636. +     register int        base, out;
  21637. +     register int        i;
  21638. +     if (nrules != 0)
  21639. +         (void) qsort((void *) rules, (size_t) nrules,
  21640. +              (size_t) sizeof *rules, rcomp);
  21641. +     for (i = 0; i < nzones; ++i) {
  21642. +         zp = &zones[i];
  21643. +         zp->z_rules = NULL;
  21644. +         zp->z_nrules = 0;
  21645. +     }
  21646. +     for (base = 0; base < nrules; base = out) {
  21647. +         rp = &rules[base];
  21648. +         for (out = base + 1; out < nrules; ++out)
  21649. +             if (strcmp(rp->r_name, rules[out].r_name) != 0)
  21650. +                 break;
  21651. +         for (i = 0; i < nzones; ++i) {
  21652. +             zp = &zones[i];
  21653. +             if (strcmp(zp->z_rule, rp->r_name) != 0)
  21654. +                 continue;
  21655. +             zp->z_rules = rp;
  21656. +             zp->z_nrules = out - base;
  21657. +         }
  21658. +     }
  21659. +     for (i = 0; i < nzones; ++i) {
  21660. +         zp = &zones[i];
  21661. +         if (zp->z_nrules == 0) {
  21662. +             /*
  21663. +             ** Maybe we have a local standard time offset.
  21664. +             */
  21665. +             eat(zp->z_filename, zp->z_linenum);
  21666. +             zp->z_stdoff =
  21667. +                 gethms((char *)zp->z_rule, "unruly zone", TRUE);
  21668. +             /*
  21669. +             ** Note, though, that if there's no rule,
  21670. +             ** a '%s' in the format is a bad thing.
  21671. +             */
  21672. +             if (strchr(zp->z_format, '%') != 0)
  21673. +                 error("%s in ruleless zone");
  21674. +         }
  21675. +     }
  21676. +     if (errors)
  21677. +         (void) exit(EXIT_FAILURE);
  21678. + }
  21679. + static void
  21680. + infile(name)
  21681. + const char *    name;
  21682. + {
  21683. +     register FILE *            fp;
  21684. +     register char **        fields;
  21685. +     register char *            cp;
  21686. +     register const struct lookup *    lp;
  21687. +     register int            nfields;
  21688. +     register int            wantcont;
  21689. +     register int            num;
  21690. +     char                buf[BUFSIZ];
  21691. +     if (strcmp(name, "-") == 0) {
  21692. +         name = "standard input";
  21693. +         fp = stdin;
  21694. +     } else if ((fp = fopen(name, "r")) == NULL) {
  21695. +         (void) fprintf(stderr, "%s: Can't open ", progname);
  21696. +         (void) perror(name);
  21697. +         (void) exit(EXIT_FAILURE);
  21698. +     }
  21699. +     wantcont = FALSE;
  21700. +     for (num = 1; ; ++num) {
  21701. +         eat(name, num);
  21702. +         if (fgets(buf, (int) sizeof buf, fp) != buf)
  21703. +             break;
  21704. +         cp = strchr(buf, '\n');
  21705. +         if (cp == NULL) {
  21706. +             error("line too long");
  21707. +             (void) exit(EXIT_FAILURE);
  21708. +         }
  21709. +         *cp = '\0';
  21710. +         fields = getfields(buf);
  21711. +         nfields = 0;
  21712. +         while (fields[nfields] != NULL) {
  21713. +             if (ciequal(fields[nfields], "-"))
  21714. +                 fields[nfields] = "";
  21715. +             ++nfields;
  21716. +         }
  21717. +         if (nfields == 0) {
  21718. +             /* nothing to do */
  21719. +         } else if (wantcont) {
  21720. +             wantcont = inzcont(fields, nfields);
  21721. +         } else {
  21722. +             lp = byword(fields[0], line_codes);
  21723. +             if (lp == NULL)
  21724. +                 error("input line of unknown type");
  21725. +             else switch ((int) (lp->l_value)) {
  21726. +                 case LC_RULE:
  21727. +                     inrule(fields, nfields);
  21728. +                     wantcont = FALSE;
  21729. +                     break;
  21730. +                 case LC_ZONE:
  21731. +                     wantcont = inzone(fields, nfields);
  21732. +                     break;
  21733. +                 case LC_LINK:
  21734. +                     inlink(fields, nfields);
  21735. +                     wantcont = FALSE;
  21736. +                     break;
  21737. +                 case LC_LEAP:
  21738. +                     if (name != leapsec)
  21739. +                         (void) fprintf(stderr,
  21740. + "%s: Leap line in non leap seconds file %s\n",
  21741. +                             progname, name);
  21742. +                     else    inleap(fields, nfields);
  21743. +                     wantcont = FALSE;
  21744. +                     break;
  21745. +                 default:    /* "cannot happen" */
  21746. +                     (void) fprintf(stderr,
  21747. + "%s: panic: Invalid l_value %d\n",
  21748. +                         progname, lp->l_value);
  21749. +                     (void) exit(EXIT_FAILURE);
  21750. +             }
  21751. +         }
  21752. +         ifree((char *) fields);
  21753. +     }
  21754. +     if (ferror(fp)) {
  21755. +         (void) fprintf(stderr, "%s: Error reading ", progname);
  21756. +         (void) perror(filename);
  21757. +         (void) exit(EXIT_FAILURE);
  21758. +     }
  21759. +     if (fp != stdin && fclose(fp)) {
  21760. +         (void) fprintf(stderr, "%s: Error closing ", progname);
  21761. +         (void) perror(filename);
  21762. +         (void) exit(EXIT_FAILURE);
  21763. +     }
  21764. +     if (wantcont)
  21765. +         error("expected continuation line not found");
  21766. + }
  21767. + /*
  21768. + ** Convert a string of one of the forms
  21769. + **    h    -h     hh:mm    -hh:mm    hh:mm:ss    -hh:mm:ss
  21770. + ** into a number of seconds.
  21771. + ** A null string maps to zero.
  21772. + ** Call error with errstring and return zero on errors.
  21773. + */
  21774. + static long
  21775. + gethms(string, errstring, signable)
  21776. + char *        string;
  21777. + const char * const    errstring;
  21778. + const int        signable;
  21779. + {
  21780. +     int    hh, mm, ss, sign;
  21781. +     if (string == NULL || *string == '\0')
  21782. +         return 0;
  21783. +     if (!signable)
  21784. +         sign = 1;
  21785. +     else if (*string == '-') {
  21786. +         sign = -1;
  21787. +         ++string;
  21788. +     } else    sign = 1;
  21789. +     if (sscanf(string, "%d:%d:%d", &hh, &mm, &ss) == 3) ;
  21790. +     else if (sscanf(string, "%d:%d", &hh, &mm) == 2) ss = 0;
  21791. +     else if (sscanf(string, "%d", &hh) == 1) mm = ss = 0;
  21792. +     else
  21793. +     {
  21794. +         error(errstring);
  21795. +         return 0;
  21796. +     }
  21797. +     if (hh < 0 || hh >= HOURSPERDAY ||
  21798. +         mm < 0 || mm >= MINSPERHOUR ||
  21799. +         ss < 0 || ss > SECSPERMIN) {
  21800. +             error(errstring);
  21801. +             return 0;
  21802. +     }
  21803. +     return eitol(sign) *
  21804. +         (eitol(hh * MINSPERHOUR + mm) *
  21805. +         eitol(SECSPERMIN) + eitol(ss));
  21806. + }
  21807. + static void
  21808. + inrule(fields, nfields)
  21809. + register char ** const    fields;
  21810. + const int        nfields;
  21811. + {
  21812. +     static struct rule    r;
  21813. +     if (nfields != RULE_FIELDS) {
  21814. +         error("wrong number of fields on Rule line");
  21815. +         return;
  21816. +     }
  21817. +     if (*fields[RF_NAME] == '\0') {
  21818. +         error("nameless rule");
  21819. +         return;
  21820. +     }
  21821. +     r.r_filename = filename;
  21822. +     r.r_linenum = linenum;
  21823. +     r.r_stdoff = gethms(fields[RF_STDOFF], "invalid saved time", TRUE);
  21824. +     rulesub(&r, fields[RF_LOYEAR], fields[RF_HIYEAR], fields[RF_COMMAND],
  21825. +         fields[RF_MONTH], fields[RF_DAY], fields[RF_TOD]);
  21826. +     r.r_name = ecpyalloc(fields[RF_NAME]);
  21827. +     r.r_abbrvar = ecpyalloc(fields[RF_ABBRVAR]);
  21828. +     rules = (struct rule *) erealloc((char *) rules,
  21829. +         (int) ((nrules + 1) * sizeof *rules));
  21830. +     rules[nrules++] = r;
  21831. + }
  21832. + static int
  21833. + inzone(fields, nfields)
  21834. + register char ** const    fields;
  21835. + const int        nfields;
  21836. + {
  21837. +     register int    i;
  21838. +     char        buf[132];
  21839. +     if (nfields < ZONE_MINFIELDS || nfields > ZONE_MAXFIELDS) {
  21840. +         error("wrong number of fields on Zone line");
  21841. +         return FALSE;
  21842. +     }
  21843. +     if (strcmp(fields[ZF_NAME], TZDEFAULT) == 0 && lcltime != NULL) {
  21844. +         (void) sprintf(buf,
  21845. +             "\"Zone %s\" line and -l option are mutually exclusive",
  21846. +             TZDEFAULT);
  21847. +         error(buf);
  21848. +         return FALSE;
  21849. +     }
  21850. +     if (strcmp(fields[ZF_NAME], TZDEFRULES) == 0 && psxrules != NULL) {
  21851. +         (void) sprintf(buf,
  21852. +             "\"Zone %s\" line and -p option are mutually exclusive",
  21853. +             TZDEFRULES);
  21854. +         error(buf);
  21855. +         return FALSE;
  21856. +     }
  21857. +     for (i = 0; i < nzones; ++i)
  21858. +         if (zones[i].z_name != NULL &&
  21859. +             strcmp(zones[i].z_name, fields[ZF_NAME]) == 0) {
  21860. +                 (void) sprintf(buf,
  21861. + "duplicate zone name %s (file \"%s\", line %d)",
  21862. +                     fields[ZF_NAME],
  21863. +                     zones[i].z_filename,
  21864. +                     zones[i].z_linenum);
  21865. +                 error(buf);
  21866. +                 return FALSE;
  21867. +         }
  21868. +     return inzsub(fields, nfields, FALSE);
  21869. + }
  21870. + static int
  21871. + inzcont(fields, nfields)
  21872. + register char ** const    fields;
  21873. + const int        nfields;
  21874. + {
  21875. +     if (nfields < ZONEC_MINFIELDS || nfields > ZONEC_MAXFIELDS) {
  21876. +         error("wrong number of fields on Zone continuation line");
  21877. +         return FALSE;
  21878. +     }
  21879. +     return inzsub(fields, nfields, TRUE);
  21880. + }
  21881. + static int
  21882. + inzsub(fields, nfields, iscont)
  21883. + register char ** const    fields;
  21884. + const int        nfields;
  21885. + const int        iscont;
  21886. + {
  21887. +     register char *        cp;
  21888. +     static struct zone    z;
  21889. +     register int        i_gmtoff, i_rule, i_format;
  21890. +     register int        i_untilyear, i_untilmonth;
  21891. +     register int        i_untilday, i_untiltime;
  21892. +     register int        hasuntil;
  21893. +     if (iscont) {
  21894. +         i_gmtoff = ZFC_GMTOFF;
  21895. +         i_rule = ZFC_RULE;
  21896. +         i_format = ZFC_FORMAT;
  21897. +         i_untilyear = ZFC_TILYEAR;
  21898. +         i_untilmonth = ZFC_TILMONTH;
  21899. +         i_untilday = ZFC_TILDAY;
  21900. +         i_untiltime = ZFC_TILTIME;
  21901. +         z.z_name = NULL;
  21902. +     } else {
  21903. +         i_gmtoff = ZF_GMTOFF;
  21904. +         i_rule = ZF_RULE;
  21905. +         i_format = ZF_FORMAT;
  21906. +         i_untilyear = ZF_TILYEAR;
  21907. +         i_untilmonth = ZF_TILMONTH;
  21908. +         i_untilday = ZF_TILDAY;
  21909. +         i_untiltime = ZF_TILTIME;
  21910. +         z.z_name = ecpyalloc(fields[ZF_NAME]);
  21911. +     }
  21912. +     z.z_filename = filename;
  21913. +     z.z_linenum = linenum;
  21914. +     z.z_gmtoff = gethms(fields[i_gmtoff], "invalid GMT offset", TRUE);
  21915. +     if ((cp = strchr(fields[i_format], '%')) != 0) {
  21916. +         if (*++cp != 's' || strchr(cp, '%') != 0) {
  21917. +             error("invalid abbreviation format");
  21918. +             return FALSE;
  21919. +         }
  21920. +     }
  21921. +     z.z_rule = ecpyalloc(fields[i_rule]);
  21922. +     z.z_format = ecpyalloc(fields[i_format]);
  21923. +     hasuntil = nfields > i_untilyear;
  21924. +     if (hasuntil) {
  21925. +         z.z_untilrule.r_filename = filename;
  21926. +         z.z_untilrule.r_linenum = linenum;
  21927. +         rulesub(&z.z_untilrule,
  21928. +             fields[i_untilyear],
  21929. +             "only",
  21930. +             "",
  21931. +             (nfields > i_untilmonth) ? fields[i_untilmonth] : "Jan",
  21932. +             (nfields > i_untilday) ? fields[i_untilday] : "1",
  21933. +             (nfields > i_untiltime) ? fields[i_untiltime] : "0");
  21934. +         z.z_untiltime = rpytime(&z.z_untilrule, z.z_untilrule.r_loyear);
  21935. +         if (iscont && nzones > 0 && z.z_untiltime < max_time &&
  21936. +             z.z_untiltime > min_time &&
  21937. +             zones[nzones - 1].z_untiltime >= z.z_untiltime) {
  21938. + error("Zone continuation line end time is not after end time of previous line");
  21939. +             return FALSE;
  21940. +         }
  21941. +     }
  21942. +     zones = (struct zone *) erealloc((char *) zones,
  21943. +         (int) ((nzones + 1) * sizeof *zones));
  21944. +     zones[nzones++] = z;
  21945. +     /*
  21946. +     ** If there was an UNTIL field on this line,
  21947. +     ** there's more information about the zone on the next line.
  21948. +     */
  21949. +     return hasuntil;
  21950. + }
  21951. + static void
  21952. + inleap(fields, nfields)
  21953. + register char ** const    fields;
  21954. + const int        nfields;
  21955. + {
  21956. +     register const char *        cp;
  21957. +     register const struct lookup *    lp;
  21958. +     register int            i, j;
  21959. +     int                year, month, day;
  21960. +     long                dayoff, tod;
  21961. +     time_t                t;
  21962. +     if (nfields != LEAP_FIELDS) {
  21963. +         error("wrong number of fields on Leap line");
  21964. +         return;
  21965. +     }
  21966. +     dayoff = 0;
  21967. +     cp = fields[LP_YEAR];
  21968. +     if (sscanf((char *)cp, "%d", &year) != 1 ||
  21969. +         year < min_year || year > max_year) {
  21970. +             /*
  21971. +              * Leapin' Lizards!
  21972. +              */
  21973. +             error("invalid leaping year");
  21974. +             return;
  21975. +     }
  21976. +     j = EPOCH_YEAR;
  21977. +     while (j != year) {
  21978. +         if (year > j) {
  21979. +             i = len_years[isleap(j)];
  21980. +             ++j;
  21981. +         } else {
  21982. +             --j;
  21983. +             i = -len_years[isleap(j)];
  21984. +         }
  21985. +         dayoff = oadd(dayoff, eitol(i));
  21986. +     }
  21987. +     if ((lp = byword(fields[LP_MONTH], mon_names)) == NULL) {
  21988. +         error("invalid month name");
  21989. +         return;
  21990. +     }
  21991. +     month = lp->l_value;
  21992. +     j = TM_JANUARY;
  21993. +     while (j != month) {
  21994. +         i = len_months[isleap(year)][j];
  21995. +         dayoff = oadd(dayoff, eitol(i));
  21996. +         ++j;
  21997. +     }
  21998. +     cp = fields[LP_DAY];
  21999. +     if (sscanf((char *)cp, "%d", &day) != 1 ||
  22000. +         day <= 0 || day > len_months[isleap(year)][month]) {
  22001. +             error("invalid day of month");
  22002. +             return;
  22003. +     }
  22004. +     dayoff = oadd(dayoff, eitol(day - 1));
  22005. +     if (dayoff < 0 && !tt_signed) {
  22006. +         error("time before zero");
  22007. +         return;
  22008. +     }
  22009. +     t = (time_t) dayoff * SECSPERDAY;
  22010. +     /*
  22011. +     ** Cheap overflow check.
  22012. +     */
  22013. +     if (t / SECSPERDAY != dayoff) {
  22014. +         error("time overflow");
  22015. +         return;
  22016. +     }
  22017. +     tod = gethms(fields[LP_TIME], "invalid time of day", FALSE);
  22018. +     cp = fields[LP_CORR];
  22019. +     if (strcmp(cp, "+") != 0 && strcmp(cp, "") != 0) {
  22020. +         /* infile() turned "-" into "" */
  22021. +         error("illegal CORRECTION field on Leap line");
  22022. +         return;
  22023. +     }
  22024. +     if ((lp = byword(fields[LP_ROLL], leap_types)) == NULL) {
  22025. +         error("illegal Rolling/Stationary field on Leap line");
  22026. +         return;
  22027. +     }
  22028. +     addleap(tadd(t, tod), *cp == '+', lp->l_value);
  22029. + }
  22030. + static void
  22031. + inlink(fields, nfields)
  22032. + register char ** const    fields;
  22033. + const int        nfields;
  22034. + {
  22035. +     struct link    l;
  22036. +     if (nfields != LINK_FIELDS) {
  22037. +         error("wrong number of fields on Link line");
  22038. +         return;
  22039. +     }
  22040. +     if (*fields[LF_FROM] == '\0') {
  22041. +         error("blank FROM field on Link line");
  22042. +         return;
  22043. +     }
  22044. +     if (*fields[LF_TO] == '\0') {
  22045. +         error("blank TO field on Link line");
  22046. +         return;
  22047. +     }
  22048. +     l.l_filename = filename;
  22049. +     l.l_linenum = linenum;
  22050. +     l.l_from = ecpyalloc(fields[LF_FROM]);
  22051. +     l.l_to = ecpyalloc(fields[LF_TO]);
  22052. +     links = (struct link *) erealloc((char *) links,
  22053. +         (int) ((nlinks + 1) * sizeof *links));
  22054. +     links[nlinks++] = l;
  22055. + }
  22056. + static void
  22057. + rulesub(rp, loyearp, hiyearp, typep, monthp, dayp, timep)
  22058. + register struct rule * const    rp;
  22059. + char * const            loyearp;
  22060. + char * const            hiyearp;
  22061. + char * const            typep;
  22062. + char * const            monthp;
  22063. + char * const            dayp;
  22064. + char * const            timep;
  22065. + {
  22066. +     register struct lookup const *    lp;
  22067. +     register char *            cp;
  22068. +     if ((lp = byword(monthp, mon_names)) == NULL) {
  22069. +         error("invalid month name");
  22070. +         return;
  22071. +     }
  22072. +     rp->r_month = lp->l_value;
  22073. +     rp->r_todisstd = FALSE;
  22074. +     cp = timep;
  22075. +     if (*cp != '\0') {
  22076. +         cp += strlen(cp) - 1;
  22077. +         switch (lowerit(*cp)) {
  22078. +             case 's':
  22079. +                 rp->r_todisstd = TRUE;
  22080. +                 *cp = '\0';
  22081. +                 break;
  22082. +             case 'w':
  22083. +                 rp->r_todisstd = FALSE;
  22084. +                 *cp = '\0';
  22085. +                 break;
  22086. +         }
  22087. +     }
  22088. +     rp->r_tod = gethms(timep, "invalid time of day", FALSE);
  22089. +     /*
  22090. +     ** Year work.
  22091. +     */
  22092. +     cp = loyearp;
  22093. +     if ((lp = byword(cp, begin_years)) != NULL) switch ((int) lp->l_value) {
  22094. +         case YR_MINIMUM:
  22095. +             rp->r_loyear = min_year;
  22096. +             break;
  22097. +         case YR_MAXIMUM:
  22098. +             rp->r_loyear = max_year;
  22099. +             break;
  22100. +         default:    /* "cannot happen" */
  22101. +             (void) fprintf(stderr,
  22102. +                 "%s: panic: Invalid l_value %d\n",
  22103. +                 progname, lp->l_value);
  22104. +             (void) exit(EXIT_FAILURE);
  22105. +     } else if (sscanf(cp, "%d", &rp->r_loyear) != 1 ||
  22106. +         rp->r_loyear < min_year || rp->r_loyear > max_year) {
  22107. +             if (noise)
  22108. +                 error("invalid starting year");
  22109. +             if (rp->r_loyear > max_year)
  22110. +                 return;
  22111. +     }
  22112. +     cp = hiyearp;
  22113. +     if ((lp = byword(cp, end_years)) != NULL) switch ((int) lp->l_value) {
  22114. +         case YR_MINIMUM:
  22115. +             rp->r_hiyear = min_year;
  22116. +             break;
  22117. +         case YR_MAXIMUM:
  22118. +             rp->r_hiyear = max_year;
  22119. +             break;
  22120. +         case YR_ONLY:
  22121. +             rp->r_hiyear = rp->r_loyear;
  22122. +             break;
  22123. +         default:    /* "cannot happen" */
  22124. +             (void) fprintf(stderr,
  22125. +                 "%s: panic: Invalid l_value %d\n",
  22126. +                 progname, lp->l_value);
  22127. +             (void) exit(EXIT_FAILURE);
  22128. +     } else if (sscanf(cp, "%d", &rp->r_hiyear) != 1 ||
  22129. +         rp->r_hiyear < min_year || rp->r_hiyear > max_year) {
  22130. +             if (noise)
  22131. +                 error("invalid ending year");
  22132. +             if (rp->r_hiyear < min_year)
  22133. +                 return;
  22134. +     }
  22135. +     if (rp->r_hiyear < min_year)
  22136. +          return;
  22137. +      if (rp->r_loyear < min_year)
  22138. +          rp->r_loyear = min_year;
  22139. +      if (rp->r_hiyear > max_year)
  22140. +          rp->r_hiyear = max_year;
  22141. +     if (rp->r_loyear > rp->r_hiyear) {
  22142. +         error("starting year greater than ending year");
  22143. +         return;
  22144. +     }
  22145. +     if (*typep == '\0')
  22146. +         rp->r_yrtype = NULL;
  22147. +     else {
  22148. +         if (rp->r_loyear == rp->r_hiyear) {
  22149. +             error("typed single year");
  22150. +             return;
  22151. +         }
  22152. +         rp->r_yrtype = ecpyalloc(typep);
  22153. +     }
  22154. +     /*
  22155. +     ** Day work.
  22156. +     ** Accept things such as:
  22157. +     **    1
  22158. +     **    last-Sunday
  22159. +     **    Sun<=20
  22160. +     **    Sun>=7
  22161. +     */
  22162. +     if ((lp = byword(dayp, lasts)) != NULL) {
  22163. +         rp->r_dycode = DC_DOWLEQ;
  22164. +         rp->r_wday = lp->l_value;
  22165. +         rp->r_dayofmonth = len_months[1][rp->r_month];
  22166. +     } else {
  22167. +         if ((cp = strchr(dayp, '<')) != 0)
  22168. +             rp->r_dycode = DC_DOWLEQ;
  22169. +         else if ((cp = strchr(dayp, '>')) != 0)
  22170. +             rp->r_dycode = DC_DOWGEQ;
  22171. +         else {
  22172. +             cp = dayp;
  22173. +             rp->r_dycode = DC_DOM;
  22174. +         }
  22175. +         if (rp->r_dycode != DC_DOM) {
  22176. +             *cp++ = 0;
  22177. +             if (*cp++ != '=') {
  22178. +                 error("invalid day of month");
  22179. +                 return;
  22180. +             }
  22181. +             if ((lp = byword(dayp, wday_names)) == NULL) {
  22182. +                 error("invalid weekday name");
  22183. +                 return;
  22184. +             }
  22185. +             rp->r_wday = lp->l_value;
  22186. +         }
  22187. +         if (sscanf(cp, "%d", &rp->r_dayofmonth) != 1 ||
  22188. +             rp->r_dayofmonth <= 0 ||
  22189. +             (rp->r_dayofmonth > len_months[1][rp->r_month])) {
  22190. +                 error("invalid day of month");
  22191. +                 return;
  22192. +         }
  22193. +     }
  22194. + }
  22195. + static void
  22196. + convert(val, buf)
  22197. + const long    val;
  22198. + char * const    buf;
  22199. + {
  22200. +     register int    i;
  22201. +     register long    shift;
  22202. +     for (i = 0, shift = 24; i < 4; ++i, shift -= 8)
  22203. +         buf[i] = val >> shift;
  22204. + }
  22205. + static void
  22206. + puttzcode(val, fp)
  22207. + const long    val;
  22208. + FILE * const    fp;
  22209. + {
  22210. +     char    buf[4];
  22211. +     convert(val, buf);
  22212. +     (void) fwrite((void *) buf, (size_t) sizeof buf, (size_t) 1, fp);
  22213. + }
  22214. + static void
  22215. + writezone(name)
  22216. + const char * const    name;
  22217. + {
  22218. +     register FILE *        fp;
  22219. +     register int        i, j;
  22220. +     char            fullname[BUFSIZ];
  22221. +     static struct tzhead    tzh;
  22222. +     if (strlen(directory) + 1 + strlen(name) >= sizeof fullname) {
  22223. +         (void) fprintf(stderr,
  22224. +             "%s: File name %s/%s too long\n", progname,
  22225. +             directory, name);
  22226. +         (void) exit(EXIT_FAILURE);
  22227. +     }
  22228. +     (void) sprintf(fullname, "%s/%s", directory, name);
  22229. +     if ((fp = fopen(fullname, "wb")) == NULL) {
  22230. +         if (mkdirs(fullname) != 0)
  22231. +             (void) exit(EXIT_FAILURE);
  22232. +         if ((fp = fopen(fullname, "wb")) == NULL) {
  22233. +             (void) fprintf(stderr, "%s: Can't create ", progname);
  22234. +             (void) perror(fullname);
  22235. +             (void) exit(EXIT_FAILURE);
  22236. +         }
  22237. +     }
  22238. +     convert(eitol(typecnt), tzh.tzh_ttisstdcnt);
  22239. +     convert(eitol(leapcnt), tzh.tzh_leapcnt);
  22240. +     convert(eitol(timecnt), tzh.tzh_timecnt);
  22241. +     convert(eitol(typecnt), tzh.tzh_typecnt);
  22242. +     convert(eitol(charcnt), tzh.tzh_charcnt);
  22243. +     (void) fwrite((void *) &tzh, (size_t) sizeof tzh, (size_t) 1, fp);
  22244. +     for (i = 0; i < timecnt; ++i) {
  22245. +         j = leapcnt;
  22246. +         while (--j >= 0)
  22247. +             if (ats[i] >= trans[j]) {
  22248. +                 ats[i] = tadd(ats[i], corr[j]);
  22249. +                 break;
  22250. +             }
  22251. +         puttzcode((long) ats[i], fp);
  22252. +     }
  22253. +     if (timecnt > 0)
  22254. +         (void) fwrite((void *) types, (size_t) sizeof types[0],
  22255. +             (size_t) timecnt, fp);
  22256. +     for (i = 0; i < typecnt; ++i) {
  22257. +         puttzcode((long) gmtoffs[i], fp);
  22258. +         (void) putc(isdsts[i], fp);
  22259. +         (void) putc(abbrinds[i], fp);
  22260. +     }
  22261. +     if (charcnt != 0)
  22262. +         (void) fwrite((void *) chars, (size_t) sizeof chars[0],
  22263. +             (size_t) charcnt, fp);
  22264. +     for (i = 0; i < leapcnt; ++i) {
  22265. +         if (roll[i]) {
  22266. +             if (timecnt == 0 || trans[i] < ats[0]) {
  22267. +                 j = 0;
  22268. +                 while (isdsts[j])
  22269. +                     if (++j >= typecnt) {
  22270. +                         j = 0;
  22271. +                         break;
  22272. +                     }
  22273. +             } else {
  22274. +                 j = 1;
  22275. +                 while (j < timecnt && trans[i] >= ats[j])
  22276. +                     ++j;
  22277. +                 j = types[j - 1];
  22278. +             }
  22279. +             puttzcode((long) tadd(trans[i], -gmtoffs[j]), fp);
  22280. +         } else    puttzcode((long) trans[i], fp);
  22281. +         puttzcode((long) corr[i], fp);
  22282. +     }
  22283. +     for (i = 0; i < typecnt; ++i)
  22284. +         (void) putc(ttisstds[i], fp);
  22285. +     if (ferror(fp) || fclose(fp)) {
  22286. +         (void) fprintf(stderr, "%s: Write error on ", progname);
  22287. +         (void) perror(fullname);
  22288. +         (void) exit(EXIT_FAILURE);
  22289. +     }
  22290. + }
  22291. + static void
  22292. + outzone(zpfirst, zonecount)
  22293. + const struct zone * const    zpfirst;
  22294. + const int            zonecount;
  22295. + {
  22296. +     register const struct zone *    zp;
  22297. +     register struct rule *        rp;
  22298. +     register int            i, j;
  22299. +     register int            usestart, useuntil;
  22300. +     register time_t            starttime, untiltime;
  22301. +     register long            gmtoff;
  22302. +     register long            stdoff;
  22303. +     register int            year;
  22304. +     register long            startoff;
  22305. +     register int            startisdst;
  22306. +     register int            startttisstd;
  22307. +     register int            type;
  22308. +     char                startbuf[BUFSIZ];
  22309. +     /*
  22310. +     ** Now. . .finally. . .generate some useful data!
  22311. +     */
  22312. +     timecnt = 0;
  22313. +     typecnt = 0;
  22314. +     charcnt = 0;
  22315. +     /*
  22316. +     ** Two guesses. . .the second may well be corrected later.
  22317. +     */
  22318. +     gmtoff = zpfirst->z_gmtoff;
  22319. +     stdoff = 0;
  22320. + #ifdef lint
  22321. +     starttime = 0;
  22322. +     startttisstd = FALSE;
  22323. + #endif /* defined lint */
  22324. +     for (i = 0; i < zonecount; ++i) {
  22325. +         usestart = i > 0;
  22326. +         useuntil = i < (zonecount - 1);
  22327. +         zp = &zpfirst[i];
  22328. +         eat(zp->z_filename, zp->z_linenum);
  22329. +         startisdst = -1;
  22330. +         if (zp->z_nrules == 0) {
  22331. +             type = addtype(oadd(zp->z_gmtoff, zp->z_stdoff),
  22332. +                 zp->z_format, zp->z_stdoff != 0,
  22333. +                 startttisstd);
  22334. +             if (usestart)
  22335. +                 addtt(starttime, type);
  22336. +             gmtoff = zp->z_gmtoff;
  22337. +             stdoff = zp->z_stdoff;
  22338. +         } else for (year = min_year; year <= max_year; ++year) {
  22339. +             if (useuntil && year > zp->z_untilrule.r_hiyear)
  22340. +                 break;
  22341. +             /*
  22342. +             ** Mark which rules to do in the current year.
  22343. +             ** For those to do, calculate rpytime(rp, year);
  22344. +             */
  22345. +             for (j = 0; j < zp->z_nrules; ++j) {
  22346. +                 rp = &zp->z_rules[j];
  22347. +                 eats(zp->z_filename, zp->z_linenum,
  22348. +                     rp->r_filename, rp->r_linenum);
  22349. +                 rp->r_todo = year >= rp->r_loyear &&
  22350. +                         year <= rp->r_hiyear &&
  22351. +                         yearistype(year, rp->r_yrtype);
  22352. +                 if (rp->r_todo)
  22353. +                     rp->r_temp = rpytime(rp, year);
  22354. +             }
  22355. +             for ( ; ; ) {
  22356. +                 register int    k;
  22357. +                 register time_t    jtime, ktime;
  22358. +                 register long    offset;
  22359. +                 char        buf[BUFSIZ];
  22360. +                 if (useuntil) {
  22361. +                     /*
  22362. +                     ** Turn untiltime into GMT
  22363. +                     ** assuming the current gmtoff and
  22364. +                     ** stdoff values.
  22365. +                     */
  22366. +                     offset = gmtoff;
  22367. +                     if (!zp->z_untilrule.r_todisstd)
  22368. +                         offset = oadd(offset, stdoff);
  22369. +                     untiltime = tadd(zp->z_untiltime,
  22370. +                         -offset);
  22371. +                 }
  22372. +                 /*
  22373. +                 ** Find the rule (of those to do, if any)
  22374. +                 ** that takes effect earliest in the year.
  22375. +                 */
  22376. +                 k = -1;
  22377. + #ifdef lint
  22378. +                 ktime = 0;
  22379. + #endif /* defined lint */
  22380. +                 for (j = 0; j < zp->z_nrules; ++j) {
  22381. +                     rp = &zp->z_rules[j];
  22382. +                     if (!rp->r_todo)
  22383. +                         continue;
  22384. +                     eats(zp->z_filename, zp->z_linenum,
  22385. +                         rp->r_filename, rp->r_linenum);
  22386. +                     offset = gmtoff;
  22387. +                     if (!rp->r_todisstd)
  22388. +                         offset = oadd(offset, stdoff);
  22389. +                     jtime = rp->r_temp;
  22390. +                     if (jtime == min_time ||
  22391. +                         jtime == max_time)
  22392. +                             continue;
  22393. +                     jtime = tadd(jtime, -offset);
  22394. +                     if (k < 0 || jtime < ktime) {
  22395. +                         k = j;
  22396. +                         ktime = jtime;
  22397. +                     }
  22398. +                 }
  22399. +                 if (k < 0)
  22400. +                     break;    /* go on to next year */
  22401. +                 rp = &zp->z_rules[k];
  22402. +                 rp->r_todo = FALSE;
  22403. +                 if (useuntil && ktime >= untiltime)
  22404. +                     break;
  22405. +                 if (usestart) {
  22406. +                     if (ktime < starttime) {
  22407. +                         stdoff = rp->r_stdoff;
  22408. +                         startoff = oadd(zp->z_gmtoff,
  22409. +                             rp->r_stdoff);
  22410. +                         (void) sprintf(startbuf,
  22411. +                             zp->z_format,
  22412. +                             rp->r_abbrvar);
  22413. +                         startisdst =
  22414. +                             rp->r_stdoff != 0;
  22415. +                         continue;
  22416. +                     }
  22417. +                     if (ktime != starttime &&
  22418. +                         startisdst >= 0)
  22419. + addtt(starttime, addtype(startoff, startbuf, startisdst, startttisstd));
  22420. +                     usestart = FALSE;
  22421. +                 }
  22422. +                 eats(zp->z_filename, zp->z_linenum,
  22423. +                     rp->r_filename, rp->r_linenum);
  22424. +                 (void) sprintf(buf, zp->z_format,
  22425. +                     rp->r_abbrvar);
  22426. +                 offset = oadd(zp->z_gmtoff, rp->r_stdoff);
  22427. +                 type = addtype(offset, buf, rp->r_stdoff != 0,
  22428. +                     rp->r_todisstd);
  22429. +                 if (timecnt != 0 || rp->r_stdoff != 0)
  22430. +                     addtt(ktime, type);
  22431. +                 gmtoff = zp->z_gmtoff;
  22432. +                 stdoff = rp->r_stdoff;
  22433. +             }
  22434. +         }
  22435. +         /*
  22436. +         ** Now we may get to set starttime for the next zone line.
  22437. +         */
  22438. +         if (useuntil) {
  22439. +             starttime = tadd(zp->z_untiltime,
  22440. +                 -gmtoffs[types[timecnt - 1]]);
  22441. +             startttisstd = zp->z_untilrule.r_todisstd;
  22442. +         }
  22443. +     }
  22444. +     writezone(zpfirst->z_name);
  22445. + }
  22446. + static void
  22447. + addtt(starttime, type)
  22448. + const time_t    starttime;
  22449. + const int    type;
  22450. + {
  22451. +     if (timecnt != 0 && type == types[timecnt - 1])
  22452. +         return;    /* easy enough! */
  22453. +     if (timecnt >= TZ_MAX_TIMES) {
  22454. +         error("too many transitions?!");
  22455. +         (void) exit(EXIT_FAILURE);
  22456. +     }
  22457. +     ats[timecnt] = starttime;
  22458. +     types[timecnt] = type;
  22459. +     ++timecnt;
  22460. + }
  22461. + static int
  22462. + addtype(gmtoff, abbr, isdst, ttisstd)
  22463. + const long        gmtoff;
  22464. + const char * const    abbr;
  22465. + const int        isdst;
  22466. + const int        ttisstd;
  22467. + {
  22468. +     register int    i, j;
  22469. +     /*
  22470. +     ** See if there's already an entry for this zone type.
  22471. +     ** If so, just return its index.
  22472. +     */
  22473. +     for (i = 0; i < typecnt; ++i) {
  22474. +         if (gmtoff == gmtoffs[i] && isdst == isdsts[i] &&
  22475. +             strcmp(abbr, &chars[abbrinds[i]]) == 0 &&
  22476. +             ttisstd == ttisstds[i])
  22477. +                 return i;
  22478. +     }
  22479. +     /*
  22480. +     ** There isn't one; add a new one, unless there are already too
  22481. +     ** many.
  22482. +     */
  22483. +     if (typecnt >= TZ_MAX_TYPES) {
  22484. +         error("too many local time types");
  22485. +         (void) exit(EXIT_FAILURE);
  22486. +     }
  22487. +     gmtoffs[i] = gmtoff;
  22488. +     isdsts[i] = isdst;
  22489. +     ttisstds[i] = ttisstd;
  22490. +     for (j = 0; j < charcnt; ++j)
  22491. +         if (strcmp(&chars[j], abbr) == 0)
  22492. +             break;
  22493. +     if (j == charcnt)
  22494. +         newabbr(abbr);
  22495. +     abbrinds[i] = j;
  22496. +     ++typecnt;
  22497. +     return i;
  22498. + }
  22499. + static void
  22500. + addleap(t, positive, rolling)
  22501. + const time_t    t;
  22502. + const int    positive;
  22503. + const int    rolling;
  22504. + {
  22505. +     register int    i, j;
  22506. +     if (leapcnt >= TZ_MAX_LEAPS) {
  22507. +         error("too many leap seconds");
  22508. +         (void) exit(EXIT_FAILURE);
  22509. +     }
  22510. +     for (i = 0; i < leapcnt; ++i)
  22511. +         if (t <= trans[i]) {
  22512. +             if (t == trans[i]) {
  22513. +                 error("repeated leap second moment");
  22514. +                 (void) exit(EXIT_FAILURE);
  22515. +             }
  22516. +             break;
  22517. +         }
  22518. +     for (j = leapcnt; j > i; --j) {
  22519. +         trans[j] = trans[j-1];
  22520. +         corr[j] = corr[j-1];
  22521. +         roll[j] = roll[j-1];
  22522. +     }
  22523. +     trans[i] = t;
  22524. +     corr[i] = (positive ? 1L : -1L);
  22525. +     roll[i] = rolling;
  22526. +     ++leapcnt;
  22527. + }
  22528. + static void
  22529. + adjleap()
  22530. + {
  22531. +     register int    i;
  22532. +     register long    last = 0;
  22533. +     /*
  22534. +     ** propagate leap seconds forward
  22535. +     */
  22536. +     for (i = 0; i < leapcnt; ++i) {
  22537. +         trans[i] = tadd(trans[i], last);
  22538. +         last = corr[i] += last;
  22539. +     }
  22540. + }
  22541. + static int
  22542. + yearistype(year, type)
  22543. + const int        year;
  22544. + const char * const    type;
  22545. + {
  22546. +     char    buf[BUFSIZ];
  22547. +     int    result;
  22548. +     if (type == NULL || *type == '\0')
  22549. +         return TRUE;
  22550. +     if (strcmp(type, "uspres") == 0)
  22551. +         return (year % 4) == 0;
  22552. +     if (strcmp(type, "nonpres") == 0)
  22553. +         return (year % 4) != 0;
  22554. +     (void) sprintf(buf, "yearistype %d %s", year, type);
  22555. +     result = system(buf);
  22556. +     if (result == 0)
  22557. +         return TRUE;
  22558. +     if (result == (1 << 8))
  22559. +         return FALSE;
  22560. +     error("Wild result from command execution");
  22561. +     (void) fprintf(stderr, "%s: command was '%s', result was %d\n",
  22562. +         progname, buf, result);
  22563. +     for ( ; ; )
  22564. +         (void) exit(EXIT_FAILURE);
  22565. + }
  22566. + static int
  22567. + lowerit(a)
  22568. + const int    a;
  22569. + {
  22570. +     return (isascii(a) && isupper(a)) ? tolower(a) : a;
  22571. + }
  22572. + static int
  22573. + ciequal(ap, bp)        /* case-insensitive equality */
  22574. + register const char *    ap;
  22575. + register const char *    bp;
  22576. + {
  22577. +     while (lowerit(*ap) == lowerit(*bp++))
  22578. +         if (*ap++ == '\0')
  22579. +             return TRUE;
  22580. +     return FALSE;
  22581. + }
  22582. + static int
  22583. + itsabbr(abbr, word)
  22584. + register const char *    abbr;
  22585. + register const char *    word;
  22586. + {
  22587. +     if (lowerit(*abbr) != lowerit(*word))
  22588. +         return FALSE;
  22589. +     ++word;
  22590. +     while (*++abbr != '\0')
  22591. +         do if (*word == '\0')
  22592. +             return FALSE;
  22593. +                 while (lowerit(*word++) != lowerit(*abbr));
  22594. +     return TRUE;
  22595. + }
  22596. + static const struct lookup *
  22597. + byword(word, table)
  22598. + register const char * const        word;
  22599. + register const struct lookup * const    table;
  22600. + {
  22601. +     register const struct lookup *    foundlp;
  22602. +     register const struct lookup *    lp;
  22603. +     if (word == NULL || table == NULL)
  22604. +         return NULL;
  22605. +     /*
  22606. +     ** Look for exact match.
  22607. +     */
  22608. +     for (lp = table; lp->l_word != NULL; ++lp)
  22609. +         if (ciequal(word, lp->l_word))
  22610. +             return lp;
  22611. +     /*
  22612. +     ** Look for inexact match.
  22613. +     */
  22614. +     foundlp = NULL;
  22615. +     for (lp = table; lp->l_word != NULL; ++lp)
  22616. +         if (itsabbr(word, lp->l_word))
  22617. +             if (foundlp == NULL)
  22618. +                 foundlp = lp;
  22619. +             else    return NULL;    /* multiple inexact matches */
  22620. +     return foundlp;
  22621. + }
  22622. + static char **
  22623. + getfields(cp)
  22624. + register char *    cp;
  22625. + {
  22626. +     register char *        dp;
  22627. +     register char **    array;
  22628. +     register int        nsubs;
  22629. +     if (cp == NULL)
  22630. +         return NULL;
  22631. +     array = (char **) emalloc((int) ((strlen(cp) + 1) * sizeof *array));
  22632. +     nsubs = 0;
  22633. +     for ( ; ; ) {
  22634. +         while (isascii(*cp) && isspace(*cp))
  22635. +             ++cp;
  22636. +         if (*cp == '\0' || *cp == '#')
  22637. +             break;
  22638. +         array[nsubs++] = dp = cp;
  22639. +         do {
  22640. +             if ((*dp = *cp++) != '"')
  22641. +                 ++dp;
  22642. +             else while ((*dp = *cp++) != '"')
  22643. +                 if (*dp != '\0')
  22644. +                     ++dp;
  22645. +                 else    error("Odd number of quotation marks");
  22646. +         } while (*cp != '\0' && *cp != '#' &&
  22647. +             (!isascii(*cp) || !isspace(*cp)));
  22648. +         if (isascii(*cp) && isspace(*cp))
  22649. +             ++cp;
  22650. +         *dp = '\0';
  22651. +     }
  22652. +     array[nsubs] = NULL;
  22653. +     return array;
  22654. + }
  22655. + static long
  22656. + oadd(t1, t2)
  22657. + const long    t1;
  22658. + const long    t2;
  22659. + {
  22660. +     register long    t;
  22661. +     t = t1 + t2;
  22662. +     if (t2 > 0 && t <= t1 || t2 < 0 && t >= t1) {
  22663. +         error("time overflow");
  22664. +         (void) exit(EXIT_FAILURE);
  22665. +     }
  22666. +     return t;
  22667. + }
  22668. + static time_t
  22669. + tadd(t1, t2)
  22670. + const time_t    t1;
  22671. + const long    t2;
  22672. + {
  22673. +     register time_t    t;
  22674. +     if (t1 == max_time && t2 > 0)
  22675. +         return max_time;
  22676. +     if (t1 == min_time && t2 < 0)
  22677. +         return min_time;
  22678. +     t = t1 + t2;
  22679. +     if (t2 > 0 && t <= t1 || t2 < 0 && t >= t1) {
  22680. +         error("time overflow");
  22681. +         (void) exit(EXIT_FAILURE);
  22682. +     }
  22683. +     return t;
  22684. + }
  22685. + /*
  22686. + ** Given a rule, and a year, compute the date - in seconds since January 1,
  22687. + ** 1970, 00:00 LOCAL time - in that year that the rule refers to.
  22688. + */
  22689. + static time_t
  22690. + rpytime(rp, wantedy)
  22691. + register const struct rule * const    rp;
  22692. + register const int            wantedy;
  22693. + {
  22694. +     register int    y, m, i;
  22695. +     register long    dayoff;            /* with a nod to Margaret O. */
  22696. +     register time_t    t;
  22697. +     dayoff = 0;
  22698. +     m = TM_JANUARY;
  22699. +     y = EPOCH_YEAR;
  22700. +     while (wantedy != y) {
  22701. +         if (wantedy > y) {
  22702. +             i = len_years[isleap(y)];
  22703. +             ++y;
  22704. +         } else {
  22705. +             --y;
  22706. +             i = -len_years[isleap(y)];
  22707. +         }
  22708. +         dayoff = oadd(dayoff, eitol(i));
  22709. +     }
  22710. +     while (m != rp->r_month) {
  22711. +         i = len_months[isleap(y)][m];
  22712. +         dayoff = oadd(dayoff, eitol(i));
  22713. +         ++m;
  22714. +     }
  22715. +     i = rp->r_dayofmonth;
  22716. +     if (m == TM_FEBRUARY && i == 29 && !isleap(y)) {
  22717. +         if (rp->r_dycode == DC_DOWLEQ)
  22718. +             --i;
  22719. +         else {
  22720. +             error("use of 2/29 in non leap-year");
  22721. +             (void) exit(EXIT_FAILURE);
  22722. +         }
  22723. +     }
  22724. +     --i;
  22725. +     dayoff = oadd(dayoff, eitol(i));
  22726. +     if (rp->r_dycode == DC_DOWGEQ || rp->r_dycode == DC_DOWLEQ) {
  22727. +         register long    wday;
  22728. + #define LDAYSPERWEEK    ((long) DAYSPERWEEK)
  22729. +         wday = eitol(EPOCH_WDAY);
  22730. +         /*
  22731. +         ** Don't trust mod of negative numbers.
  22732. +         */
  22733. +         if (dayoff >= 0)
  22734. +             wday = (wday + dayoff) % LDAYSPERWEEK;
  22735. +         else {
  22736. +             wday -= ((-dayoff) % LDAYSPERWEEK);
  22737. +             if (wday < 0)
  22738. +                 wday += LDAYSPERWEEK;
  22739. +         }
  22740. +         while (wday != eitol(rp->r_wday))
  22741. +             if (rp->r_dycode == DC_DOWGEQ) {
  22742. +                 dayoff = oadd(dayoff, (long) 1);
  22743. +                 if (++wday >= LDAYSPERWEEK)
  22744. +                     wday = 0;
  22745. +                 ++i;
  22746. +             } else {
  22747. +                 dayoff = oadd(dayoff, (long) -1);
  22748. +                 if (--wday < 0)
  22749. +                     wday = LDAYSPERWEEK;
  22750. +                 --i;
  22751. +             }
  22752. +         if (i < 0 || i >= len_months[isleap(y)][m]) {
  22753. +             error("no day in month matches rule");
  22754. +             (void) exit(EXIT_FAILURE);
  22755. +         }
  22756. +     }
  22757. +     if (dayoff < 0 && !tt_signed) {
  22758. +         if (wantedy == rp->r_loyear)
  22759. +             return min_time;
  22760. +         error("time before zero");
  22761. +         (void) exit(EXIT_FAILURE);
  22762. +     }
  22763. +     t = (time_t) dayoff * SECSPERDAY;
  22764. +     /*
  22765. +     ** Cheap overflow check.
  22766. +     */
  22767. +     if (t / SECSPERDAY != dayoff) {
  22768. +         if (wantedy == rp->r_hiyear)
  22769. +             return max_time;
  22770. +         if (wantedy == rp->r_loyear)
  22771. +             return min_time;
  22772. +         error("time overflow");
  22773. +         (void) exit(EXIT_FAILURE);
  22774. +     }
  22775. +     return tadd(t, rp->r_tod);
  22776. + }
  22777. + static void
  22778. + newabbr(string)
  22779. + const char * const    string;
  22780. + {
  22781. +     register int    i;
  22782. +     i = strlen(string) + 1;
  22783. +     if (charcnt + i >= TZ_MAX_CHARS) {
  22784. +         error("too many, or too long, time zone abbreviations");
  22785. +         (void) exit(EXIT_FAILURE);
  22786. +     }
  22787. +     (void) strcpy(&chars[charcnt], string);
  22788. +     charcnt += eitol(i);
  22789. + }
  22790. + static int
  22791. + mkdirs(name)
  22792. + char * const    name;
  22793. + {
  22794. +     register char *    cp;
  22795. +     if ((cp = name) == NULL || *cp == '\0')
  22796. +         return 0;
  22797. +     while ((cp = strchr(cp + 1, '/')) != 0) {
  22798. +         *cp = '\0';
  22799. +         if (!itsdir(name)) {
  22800. +             /*
  22801. +             ** It doesn't seem to exist, so we try to create it.
  22802. +             */
  22803. +             if (mkdir(name, 0755) != 0) {
  22804. +                 (void) fprintf(stderr,
  22805. +                     "%s: Can't create directory ",
  22806. +                     progname);
  22807. +                 (void) perror(name);
  22808. +                 return -1;
  22809. +             }
  22810. +         }
  22811. +         *cp = '/';
  22812. +     }
  22813. +     return 0;
  22814. + }
  22815. + static long
  22816. + eitol(i)
  22817. + const int    i;
  22818. + {
  22819. +     long    l;
  22820. +     l = i;
  22821. +     if (i < 0 && l >= 0 || i == 0 && l != 0 || i > 0 && l <= 0) {
  22822. +         (void) fprintf(stderr, "%s: %d did not sign extend correctly\n",
  22823. +             progname, i);
  22824. +         (void) exit(EXIT_FAILURE);
  22825. +     }
  22826. +     return l;
  22827. + }
  22828. + /*
  22829. + ** UNIX is a registered trademark of AT&T.
  22830. + */
  22831. diff -rc --new-file /src/baseline/emacs-18.59/amiga/unix/unix.doc emacs-18.59/amiga/unix/unix.doc
  22832. *** /src/baseline/emacs-18.59/amiga/unix/unix.doc    Thu Jan  1 00:00:00 1970
  22833. --- emacs-18.59/amiga/unix/unix.doc    Sun Jun  6 08:43:38 1993
  22834. ***************
  22835. *** 0 ****
  22836. --- 1,452 ----
  22837. + Unix compatibility library for SAS C 6.x version 1.2
  22838. + ----------------------------------------------------
  22839. + Introduction
  22840. + ------------
  22841. + This library provides 80 odd functions which are useful for porting
  22842. + Unix programs to the Amiga running AmigaDOS 2.04 or higher. It is thus
  22843. + similar to Markus Wild's ixemul.library, but has more restricted aims:
  22844. + a) It is written specifically for SAS C 6.1, 6.2, ...
  22845. + b) It isn't a complete C library, it requires the SAS C library to function.
  22846. + It adds some routines, and replaces others that were deficient, out of date,
  22847. + or that didn't provide adequate functionality.
  22848. + c) It isn't a complete Unix emulation library, it only contains those functions
  22849. + that I needed while porting various utilities (mainly from GNU) to the Amiga.
  22850. + d) It is a traditional C link library, not an Amiga library. This produces 
  22851. + bigger executables.
  22852. + Considering the above points, you might ask why I wrote it ... There are several
  22853. + good answers:
  22854. + a) I started it before I was aware of ixemul.library.
  22855. + b) ixemul.library didn't provide the features I needed for Emacs (support for
  22856. + select).
  22857. + c) It is easier for me to maintain when I find I need to support another Unix
  22858. + feature (eg deleting open files).
  22859. + Copying
  22860. + -------
  22861. + The library includes code that I have written, which I place in the public domain.
  22862. + This is found in all the files that don't have a Copyright notice.
  22863. + It also includes code which is (inclusive of my modifications)
  22864. +  Copyright (c) 1982, 1986, 1991 The Regents of the University of California.
  22865. +  All rights reserved.
  22866. + This code is freely redistributable (see the copyright notices in the source
  22867. + and include files).
  22868. + Finally it includes Doug Gwyn's public domain alloca implementation.
  22869. + Installation & Use
  22870. + ------------------
  22871. + To use this library, you must compile with the include directory in your include
  22872. + search path, and link with the unix.lib library (which must be specified before
  22873. + lc.lib). For example, if you extract this archive in a directory called src:, you
  22874. + could compile the following program:
  22875. + echo.c:
  22876. + #include <sys/unistd.h>
  22877. + void main(int argc, char **argv)
  22878. + {
  22879. +   int i;
  22880. +   for (i = 1; i < argc; i++)
  22881. +     {
  22882. +       if (i != 1) write(1, " ", 1);
  22883. +       write(1, argv[i], strlen(argv[i]));
  22884. +     }
  22885. +   write(1, "\n", 1);
  22886. + }
  22887. + with the command
  22888. +   sc idir src:unix/include/ lib src:unix/src/unix.lib link echo.c
  22889. + to produce a simple unix-like echo command.
  22890. + You should define the following environment variables:
  22891. + USER - A user name for the sole Amiga user (default "user").
  22892. + USERNAME - The full name of the sole Amiga user (default $USER).
  22893. + HOME - A "home" directory (default "s:") for programs that want one. Configuration
  22894. +        files will probably end up here ...
  22895. + SHELL - A program which behaves reasonably like a Unix shell (default "bin:sh").
  22896. +     You should copy the sh executable there if you don't have a Unix-like shell.
  22897. + HOSTNAME - The name of your machine (default "amiga").
  22898. + If you are going to be using pipes, you will require Matt Dillon's fifo.library
  22899. + and fifo: device. This can be found on the Fish disks, with his UUCP distribution
  22900. + and on many FTP sites.
  22901. + If you want to install the timezone information (see the discussion below on
  22902. + Unix vs Amiga time), do the following:
  22903. +   a) change to the zoneinfo directory
  22904. +   b) compile the zic problem by running lmk.
  22905. +   c) change to the datfiles directory.
  22906. +   d) edit lmkfile and choose your timezone (you can look at the data files
  22907. +      to see the ones available). If you get this wrong, you can always change
  22908. +      it later with the zic program.
  22909. +   e) type 'lmk install'. This will compile the timezones, and setup the one
  22910. +      you chose as the default. The default can be changed with
  22911. +        zic -l <timezone name>
  22912. +      or by defining the environment variable TZ.
  22913. + Functionality
  22914. + -------------
  22915. + While this library aims to hide the differences between AmigaDOS & Unix, 
  22916. + it also aims to provide support for Amiga specific features. This sometimes
  22917. + produces strange compromises.
  22918. + This library provides two things to programs linked with it:
  22919. + a) A Unix-like environment:
  22920. + This includes:
  22921. + - Unix-like command line parsing, with wildcard expansion. These
  22922. + wildcards are however specified with the Amiga syntax. 
  22923. + Arguments which are unquoted or surround with single quotes are
  22924. + handled like Unix shells. Those surrounded with double quotes are
  22925. + handled in the Amiga fashion, but with wildcard expansion (this is
  22926. + done to avoid problems with the way the exec function works).
  22927. + Here is a summary of argument splitting:
  22928. + Arguments can be enclosed in single quotes, (') double quotes ("), or 
  22929. + separated by spaces.
  22930. + Arguments enclosed by single quotes never suffer wildcard expansion, and
  22931. + no character is significant inside them (not even \). Given the echo program
  22932. + given above,
  22933. +   echo 'f*un\'
  22934. + simply displays
  22935. +   f*un\
  22936. + Within double quotes, * is the standard Amiga escape character. \ is
  22937. + handled just like any other character. Wildcards are expanded. So,
  22938. + assuming the current directory contains only echo.c and echo,
  22939. +   echo "#?.c" "*.c" "\mad"
  22940. + displays
  22941. +   echo.c .c \mad
  22942. + (* escapes the following character, except that *N is newline and *E is 
  22943. + escape. Wildcard characters still behave as usual (' is the standard
  22944. + Amiga wildcard escape character)).
  22945. + If an argument is unquoted, \ acts as an escape character (removing
  22946. + special significance from the next character, be it a wildcard, a space, 
  22947. + a \, ...). So
  22948. +   echo \*.c \\ \n
  22949. + displays
  22950. +   *.c \ n
  22951. + - When a program is run from the Workbench, stdin, stdout & stderr are opened 
  22952. + on NIL:, and the icons selected are converted to file names and passed as the
  22953. + argc,argv to main.
  22954. + - The standard variable environ is defined and contains all the local environment
  22955. + variables. This is passed as the envp parameter to main.
  22956. + - The program is led to believe that all files belong to $USER (uid 1), group
  22957. + wheel (gid 0).
  22958. + - Amiga protection flags are mapped onto the standard 12 Unix protection bits
  22959. + (and back when necessary). This can be overridden (dynamically) by changing the
  22960. + value of use_amiga_flags. Eg:
  22961. +   extern int use_amiga_flags;
  22962. +   ...
  22963. +   main()
  22964. +   {
  22965. +     use_amiga_flags = 1;
  22966. +     ... some code using stat or chmod or ...
  22967. +   }
  22968. + In this case, the Amiga protection bits are left untouched. Otherwise the
  22969. + mapping is as follows (note that the archive bit is lost):
  22970. + Unix -> Amiga
  22971. + Amiga read: if user, group or world read.
  22972. + Amiga write: if user or group write.
  22973. + Amiga delete: if user or world write.
  22974. + Amiga execute: if group execute or only user execute.
  22975. + Amiga script: if world execute or only user execute.
  22976. + Amiga pure: if sticky.
  22977. + Amiga -> Unix
  22978. + user, group, world read: if amiga read.
  22979. + user write: if amiga write and delete.
  22980. + group write: if amiga write.
  22981. + world write: if amiga delete.
  22982. + user execute: if amiga execute or amiga script.
  22983. + group execute: if amiga execute.
  22984. + world execute: if amiga script.
  22985. + sticky: if amiga pure.
  22986. + - Unix-like time. time is expressed in seconds since 1-Jan-1970 00:00 GMT. 
  22987. + This is the format used by the time(), stat() and utime() functions. The
  22988. + library uses the BSD time functions which properly handle timezones, 
  22989. + daylight savings time, etc. 
  22990. + On Unix systems, time is generally stored as GMT, while the Amiga stores
  22991. + local time. These times are visible in two places: the time stored in the
  22992. + system clock and the creation, modification or access dates for files (only
  22993. + the modification date is available on the Amiga). There are 3 ways to resolve
  22994. + this conflict:
  22995. + 1) Ignore timezones (you can choose this option by not installing the
  22996. + timezone information). The library will then assume that system time
  22997. + and file times are expressed in GMT and will never apply any
  22998. + corrections. All will work well (except maybe on a global network).
  22999. + This is the simplest solution.
  23000. + 2) System & file time are assumed to be local times. The time() & stat()
  23001. + functions convert local time to GMT, the utime() call converts GMT to
  23002. + local time. This allows you to keep the system clock on local time, which
  23003. + is compatible with most (all?) Amiga applications. However, nearly every
  23004. + program will be bigger because they will need the timezone information and
  23005. + timezone conversion code (approximately 7k). The library can be recompiled
  23006. + if you prefer to have things this way by adding -dUSE_LOCAL to the CFLAGS
  23007. + variable in lmkfile.
  23008. + 3) System & file time are stored in GMT. Times are converted to local time
  23009. + only when they are displayed to the user, who must of course choose the 
  23010. + correct timezone. This entails changing your system clock to GMT, which means
  23011. + that most programs will display an incorrect time. However, you won't have
  23012. + to change your system clock when daylight savings time ends ... The library
  23013. + comes compiled this way (But you can still choose option 1, no timezone
  23014. + information, and avoid the potential confusion).
  23015. + - BSD-like signals. Signal handlers stay enabled after a signal occurs
  23016. + (that particular signal is simply masked for the duration of the handler).
  23017. + setjmp & longjmp preserve the signal mask (the functions _setjmp & _longjmp
  23018. + don't). You may receive any signal with kill(getpid(), sig). Otherwise only
  23019. + the following occur:
  23020. +   SIGINT: user typed ctrl-c
  23021. +   SIGQUIT: user typed ctrl-d
  23022. +   SIGALRM: alarm() expired
  23023. +   SIGCHLD: a child process died
  23024. + When using kill to signal another process, only SIGHUP, SIGINT, SIGQUIT & 
  23025. + SIGKILL do anything. They all send SIGBREAKF_CTRL_C | D to the process (and
  23026. + hopefully its children). See the discussion under the exec function.
  23027. + b) A large number of unix C library calls:
  23028. + _exit, _setjmp, _longjmp, abort, access, alloca, gettimeofday, ftime, 
  23029. + bcmp, bcopy, bzero, chmod, chown, fchown, close, creat, tzset, tzsetwall,
  23030. + localtime, gmtime, asctime, ctime, mktime, opendir, closedir, readdir, 
  23031. + telldir, seekdir, fchmod, fcntl, fstat, ftruncate, getenv, gethostname,
  23032. + getpid, getwd, getgid, getegid, getgrgid, getgrnam, index, ioctl, isatty,
  23033. + kill, link, lseek, mkdir, mkfifo, mknod, mktemp, open, perror, pipe, sktpair, 
  23034. + getpwuid, getpwnam, getlogin, read, rename, rindex, rmdir, select, setjmp, 
  23035. + longjmp, signal, sigpause, sigsetmask, sleep, stat, strftime, time, truncate,
  23036. + getuid, geteuid, umask, unlink, utime, wait, waitpid, wait3, wait4, write,
  23037. + readlink, symlink, popen, pclose.
  23038. + These functions aim to be BSD compatible, however I based myself on descriptions
  23039. + in the SunOS 4 man pages. Their behaviour is sometimes strange or incomplete.
  23040. + Here is a summary of the differences with the standard Unix functions:
  23041. + alloca - This is Doug Gwyn's portable alloca. Memory allocated is freed
  23042. + later than with a true alloca.
  23043. + gettimeofday - The dst field of the timezone is a (not very good) guess. It
  23044. + shouldn't be used anyway.
  23045. + chown, fchown - These are do-nothing routines.
  23046. + opendir, closedir, ... - These interact with stat to avoid having to read
  23047. + each directory entry twice when doing a readdir + stat loop.
  23048. + fchmod - The protection is only set when the file is closed. See also the
  23049. + discussion of protection modes above.
  23050. + fcntl - Only the F_GETFL & F_SETFL operations are supported.
  23051. + truncate, ftruncate - These will not necessarily work with all filing systems.
  23052. + See the discussion of the AmigaDOS SetFileSize function.
  23053. + getenv - This checks local environment variables and then global ones. It 
  23054. + allocates memory for the variables value each time. This memory is never freed
  23055. + (till the program exits).
  23056. + gethostname - This is obtained from the HOSTNAME environment variable at startup.
  23057. + getuid, geteuid, getgid, getegid, getpwuid, getpwnam, getgrgid, getgrnam, getlogin -
  23058. + These function only know about one user. He/She is:
  23059. +   name: $USER (default "user")
  23060. +   home directory: $HOME (default "s:")
  23061. +   shell: $SHELL (default "bin:sh")
  23062. +   uid: 1, gid: 0
  23063. + ioctl - Only FIONBIO & TIOCGWINSZ are known, plus a number of amiga specific
  23064. + ioctls (for internal use). These are documented in include/amiga/ioctl.h.
  23065. + lseek - Seeks beyond the end of a file are not implemented.
  23066. + mkfifo, mknod - These are 'do-nothing' routines.
  23067. + pipe - This uses Matt Dillon's fifo.library and fifo: device. It works well
  23068. + for interactive use, but not for transfering large quantities of data.
  23069. + select - This implementation only works with pipes & sktpairs, and cannot
  23070. + detect 'exceptional' conditions.
  23071. + sigvec - The flags are not recognized.
  23072. + symlink - Symbolic links on the Amiga are far too buggy and should not be used.
  23073. + By default, as compiled, this routine always returns an error. However readlink
  23074. + does work, so you can read existing symbolic links.
  23075. + umask - This is a 'do-nothing' routine.
  23076. + unlink - You can unlink a file that your program has opened before you close
  23077. + it. At that point, the AmigaDOS file is closed & deleted, though it still
  23078. + appears open to read (it returns EOF), write, close, etc. Also you can unlink
  23079. + a file even if it is protected from deletion (the protection mode is changed
  23080. + first ...).
  23081. + utime - Only the modification time can be changed (the others don't exist).
  23082. + wait3, wait4 - Resource usage is never returned.
  23083. + exec
  23084. + ----
  23085. + vfork() and execxx() are very tricky to implement. So I took the easy
  23086. + (but see below) way out, providing a function, eexec, that create a
  23087. + new process given argc, argv.  This functions returns a pid which can
  23088. + be used with wait, waitpid, ... as usual. Also exiting processes
  23089. + generate the SIGCHLD signal. With this, it is generally fairly easy to
  23090. + replace the process creation parts of most Unix programs.
  23091. + First, here is a description of the problems which arise:
  23092. + Executing an external program is tricky with AmigaDOS. The various system
  23093. + routines (CreateNewProc, SystemTags, Execute) allow some operations to be
  23094. + done easily, but make others difficult. Specifically, if you want to do all
  23095. + of the following:
  23096. + - Execute a program given argc, argv (like with unix)
  23097. + - Specify arbitrary input, output and error streams, including inheriting
  23098. + the current ones.
  23099. + - Have some of these streams be pipes of which you keep one end.
  23100. + - Have some of these pipes appear to be interactive (this is used for example
  23101. + by programs running inside emacs).
  23102. + - Detect when the execute program exits, and get its return code.
  23103. + - Send signals (eg ctrl-c) to the created process, and preferably its children.
  23104. + you are in deep trouble. A minimum of 10 attempts is needed to get
  23105. + something which works most of the time, ie the eexec function.
  23106. + The problems are:
  23107. + - You have to make a command line from argc, argv. But these arguments may
  23108. + contain spaces, so they must be surrounded by double quotes. And then, '*'
  23109. + must be escaped as it is the escape character. And so on.
  23110. + - Only recently has an error stream appeared in AmigaDOS. And it doesn't
  23111. + inherit very well (Indeed, specifying the error stream doesn't work in the
  23112. + current version).
  23113. + - Amiga programs generally expect interactive files to be console windows.
  23114. + And fifo: is the only interactive pipe I'm aware of. So the pipe: system
  23115. + call uses fifo: and fifo.library.
  23116. + - To get the return code of an application, you must use the synchronous
  23117. + version of SystemTags. Otherwise it is lost. But you want an asynchronous
  23118. + process facility. So I create 2 processes, the first one is created with
  23119. + CreateNewProc and executes a custom piece of code. This code launches
  23120. + the real program with SystemTags, and sends a message with the return code
  23121. + to its parent (if it is still around).
  23122. + - You can't find the children of a process. So the signal is sent to all
  23123. + the processes that share the input filehandle of the created process. This
  23124. + is the best solution that I found.
  23125. + - AmigaDOS isn't Unix.
  23126. + Therefore, the eexec function is far from perfect. It works as follows:
  23127. + eexec(program, argv, input, output, error, directory, stacksize)
  23128. +   program: the path of the executable file. Your path is searched.
  23129. +   argv: A null terminated array of arguments. The first (argv[0]) is ignored.
  23130. +   input: A unix filehandle on the desired input. -1 means copy Input().
  23131. +   output: A unix filehandle on the desired output. -1 means copy Output().
  23132. +   error: A unix filehandle on the desired error stream. -1 means copy the pr_CES
  23133. +      field of the current process, -2 means copy the value specified for output.
  23134. +          Currently, this parameter has no effect.
  23135. +   directory: pathname for the current directory for the created process, or NULL
  23136. +          to inheir the current processes'.
  23137. +   stacksize: stack size for the created process. 0 means the same size as the 
  23138. +          current stack.
  23139. +   
  23140. + _start_process is a lower level interface:
  23141. + _start_process(command, input, close_input, output, close_output,
  23142. +            error, close_error, dir, stacksize)
  23143. +   command: the string to pass to SystemTags (it will be passed to
  23144. +     the UserShell, not the system default).
  23145. +   input, output, error, close_xxx: AmigaDOS filehandles for use as the
  23146. +     appropriate stream. If close_x is true, the corresponding stream will be
  23147. +     closed when the process exits.
  23148. +   dir: Lock on the desired directory for the new process.
  23149. +   stacksize: as above.
  23150. + Recompiling
  23151. + -----------
  23152. + To recompile, simply run lmk in the src directory. You can add the -dUSE_LOCAL
  23153. + flag to CFLAGS in lmkfile if you want the system clock to store local time 
  23154. + instead of GMT.
  23155. + If you want symlink to work, add -dSOFTLINK to CFLAGS (For example, tar uses
  23156. + a version of unix.lib compiled like this).
  23157. + If you add modules, you can use the mkmkf to remake the makefile dependencies
  23158. + (it generates lmkfile from lmkfile.base and the dependencies for all the .c
  23159. + files in the current directory). This program requires perl (available from
  23160. + ftp sites).
  23161. + Changes from 1.0 to 1.1
  23162. + -----------------------
  23163. + stat() now returns a value for st_dev.
  23164. + exec() extended by eexec, assembly part rewritten in C.
  23165. + symbolic links recognized. Their use is not recommended (too buggy).
  23166. + sigvec added.
  23167. + popen, pclose added.
  23168. + Documentation discusses exec.
  23169. diff -rc --new-file /src/baseline/emacs-18.59/cpp/SCOPTIONS emacs-18.59/cpp/SCOPTIONS
  23170. *** /src/baseline/emacs-18.59/cpp/SCOPTIONS    Thu Jan  1 00:00:00 1970
  23171. --- emacs-18.59/cpp/SCOPTIONS    Sat Jun  5 12:01:06 1993
  23172. ***************
  23173. *** 0 ****
  23174. --- 1,7 ----
  23175. + IGNORE=161
  23176. + IGNORE=154
  23177. + IGNORE=100
  23178. + IGNORE=181
  23179. + IGNORE=84
  23180. + IGNORE=93
  23181. + IGNORE=72
  23182. \ No newline at end of file
  23183. diff -rc --new-file /src/baseline/emacs-18.59/cpp/cccp.c emacs-18.59/cpp/cccp.c
  23184. *** /src/baseline/emacs-18.59/cpp/cccp.c    Fri Sep 28 16:17:57 1990
  23185. --- emacs-18.59/cpp/cccp.c    Sat Jun  5 12:07:16 1993
  23186. ***************
  23187. *** 97,103 ****
  23188. --- 97,113 ----
  23189.   
  23190.   #ifdef EMACS
  23191.   #define NO_SHORTNAMES
  23192. + #ifdef AMIGA
  23193. + #include "/src/config.h"
  23194. + #undef fflush
  23195. + #undef fwrite
  23196. + #undef main
  23197. + #undef putchar
  23198. + #undef AMIGA_DUMP
  23199. + #include <string.h>
  23200. + #else
  23201.   #include "../src/config.h"
  23202. + #endif
  23203.   #ifdef static
  23204.   #undef static
  23205.   #endif
  23206. ***************
  23207. *** 115,121 ****
  23208. --- 125,135 ----
  23209.   #include <ctype.h>
  23210.   #include <stdio.h>
  23211.   #ifndef USG
  23212. + #ifdef AMIGA
  23213. + #include <time.h>
  23214. + #else
  23215.   #include <sys/time.h>        /* for __DATE__ and __TIME__ */
  23216. + #endif
  23217.   #else
  23218.   #define index strchr
  23219.   #define rindex strrchr
  23220. ***************
  23221. *** 123,130 ****
  23222. --- 137,146 ----
  23223.   #include <fcntl.h>
  23224.   #endif /* USG */
  23225.   
  23226. + #ifndef AMIGA
  23227.   void bcopy (), bzero ();
  23228.   int bcmp ();
  23229. + #endif
  23230.   
  23231.   char *xmalloc (), *xrealloc (), *xcalloc ();
  23232.   void fatal (), pfatal_with_name (), perror_with_name ();
  23233. ***************
  23234. *** 142,156 ****
  23235. --- 158,186 ----
  23236.   /* #include "file" starts with the first entry in the stack */
  23237.   /* #include <file> starts with the second. */
  23238.   /* -I directories are added after the first */
  23239. + #ifdef AMIGA
  23240. + struct directory_stack default_includes[2] =
  23241. +   {
  23242. +     { &default_includes[1], "" },
  23243. +     { 0, "include:" }
  23244. +   };
  23245. + #else
  23246.   struct directory_stack default_includes[2] =
  23247.     {
  23248.       { &default_includes[1], "." },
  23249.       { 0, "/usr/include" }
  23250.     };
  23251. + #endif
  23252.   struct directory_stack *include = &default_includes[0];
  23253.   
  23254. + #ifdef AMIGA
  23255.   int max_include_len = 14;    /* strlen (default_include) + 2
  23256.                               (for / and null) */
  23257. + #else
  23258. + int max_include_len = 9;    /* strlen (default_include) + 1
  23259. +                             (for null) */
  23260. + #endif
  23261.   
  23262.   char STDIN_FILE[] = "";        /* Empty, like real cpp */
  23263.   int put_out_comments = 0;    /* JF non-zero means leave comments in the
  23264. ***************
  23265. *** 379,385 ****
  23266.       dirtmp->next = include->next;
  23267.       include->next = dirtmp;
  23268.       dirtmp->fname = argv[i]+2;
  23269. -     include = dirtmp;
  23270.       if (strlen (argv[i]) > max_include_len)
  23271.         max_include_len = strlen (argv[i]);
  23272.       break;
  23273. --- 409,414 ----
  23274. ***************
  23275. *** 405,415 ****
  23276.     else if ((f = open (in_fname, O_RDONLY)) < 0)
  23277.       goto perror;
  23278.   
  23279. !   fstat (f, &sbuf);
  23280.     fp->fname = in_fname;
  23281.     fp->lineno = 1;
  23282.     /* JF all this is mine about reading pipes and ttys */
  23283. !   if ((sbuf.st_mode & S_IFMT) != S_IFREG) {
  23284.       int size;
  23285.       int bsize;
  23286.       int cnt;
  23287. --- 434,444 ----
  23288.     else if ((f = open (in_fname, O_RDONLY)) < 0)
  23289.       goto perror;
  23290.   
  23291. !   if (f) fstat (f, &sbuf);
  23292.     fp->fname = in_fname;
  23293.     fp->lineno = 1;
  23294.     /* JF all this is mine about reading pipes and ttys */
  23295. !   if (!f || (sbuf.st_mode & S_IFMT) != S_IFREG) {
  23296.       int size;
  23297.       int bsize;
  23298.       int cnt;
  23299. ***************
  23300. *** 478,488 ****
  23301.     struct keyword_table *handle_directive ();
  23302.     int excess_newlines = 0;
  23303.     int escaped = 0;
  23304. !   
  23305.     U_CHAR *bp;
  23306. !   
  23307.     check_expand(op, ip->length);
  23308. !   
  23309.     ip->bufp = ip->buf;
  23310.     limit = ip->buf + ip->length;
  23311.     while (1) {
  23312. --- 507,517 ----
  23313.     struct keyword_table *handle_directive ();
  23314.     int excess_newlines = 0;
  23315.     int escaped = 0;
  23316.     U_CHAR *bp;
  23317.     check_expand(op, ip->length);
  23318.     ip->bufp = ip->buf;
  23319.     limit = ip->buf + ip->length;
  23320.     while (1) {
  23321. ***************
  23322. *** 615,639 ****
  23323.           *op->bufp++ = '/';
  23324.         ip->bufp = bp + 1;
  23325.         break;
  23326. !       
  23327.       case '0': case '1': case '2': case '3': case '4':
  23328.       case '5': case '6': case '7': case '8': case '9':
  23329.         /* if digit is not part of identifier, it is random */
  23330.         if (ident_length == 0)
  23331.       goto randomchar;
  23332.         /* fall through */
  23333. !       
  23334.       case '_':
  23335.       case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
  23336.       case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
  23337.       case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
  23338.       case 's': case 't': case 'u': case 'v': case 'w': case 'x':
  23339. !     case 'y': case 'z': 
  23340.       case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
  23341.       case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
  23342.       case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
  23343.       case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
  23344. !     case 'Y': case 'Z': 
  23345.         ident_length++;
  23346.         /* compute step of hash function, to avoid a proc call on every token */
  23347.         hash = HASHSTEP(hash, c);
  23348. --- 644,668 ----
  23349.           *op->bufp++ = '/';
  23350.         ip->bufp = bp + 1;
  23351.         break;
  23352.       case '0': case '1': case '2': case '3': case '4':
  23353.       case '5': case '6': case '7': case '8': case '9':
  23354.         /* if digit is not part of identifier, it is random */
  23355.         if (ident_length == 0)
  23356.       goto randomchar;
  23357.         /* fall through */
  23358.       case '_':
  23359.       case 'a': case 'b': case 'c': case 'd': case 'e': case 'f':
  23360.       case 'g': case 'h': case 'i': case 'j': case 'k': case 'l':
  23361.       case 'm': case 'n': case 'o': case 'p': case 'q': case 'r':
  23362.       case 's': case 't': case 'u': case 'v': case 'w': case 'x':
  23363. !     case 'y': case 'z':
  23364.       case 'A': case 'B': case 'C': case 'D': case 'E': case 'F':
  23365.       case 'G': case 'H': case 'I': case 'J': case 'K': case 'L':
  23366.       case 'M': case 'N': case 'O': case 'P': case 'Q': case 'R':
  23367.       case 'S': case 'T': case 'U': case 'V': case 'W': case 'X':
  23368. !     case 'Y': case 'Z':
  23369.         ident_length++;
  23370.         /* compute step of hash function, to avoid a proc call on every token */
  23371.         hash = HASHSTEP(hash, c);
  23372. ***************
  23373. *** 646,676 ****
  23374.       for (hp = hashtab[MAKE_POS(hash) % HASHSIZE]; hp != NULL;
  23375.            hp = hp->next) {
  23376.             U_CHAR *save_ibufp;    /* kludge, see below */
  23377. !           
  23378.             if (hp->length == ident_length) {
  23379.           register int i = ident_length;
  23380.           register U_CHAR *p = hp->name;
  23381.           register U_CHAR *q = op->bufp - i;
  23382.   
  23383. !         if (c != (U_CHAR) -1)
  23384.             q--;
  23385.   
  23386.           do {        /* all this to avoid a strncmp() */
  23387.             if (*p++ != *q++)
  23388.           goto hashcollision;
  23389.           } while (--i);
  23390. !      
  23391.           save_ibufp = ip->bufp;
  23392.           /* back up over identifier, then expand token */
  23393.           op->bufp -= ident_length;
  23394. !         if (c != (U_CHAR) -1) op->bufp--;
  23395.           macroexpand (hp, ip, op, &excess_newlines);
  23396.   
  23397.           check_expand(op, ip->length - (ip->bufp - ip->buf));
  23398. !         
  23399.           /* If we just processed an identifier at end of input,
  23400.              return right away.  */
  23401. !         if (c == (U_CHAR) -1)
  23402.             return;
  23403.   
  23404.           /* if the expansion routine has not moved the input
  23405. --- 675,705 ----
  23406.       for (hp = hashtab[MAKE_POS(hash) % HASHSIZE]; hp != NULL;
  23407.            hp = hp->next) {
  23408.             U_CHAR *save_ibufp;    /* kludge, see below */
  23409.             if (hp->length == ident_length) {
  23410.           register int i = ident_length;
  23411.           register U_CHAR *p = hp->name;
  23412.           register U_CHAR *q = op->bufp - i;
  23413.   
  23414. !         if (c != -1)
  23415.             q--;
  23416.   
  23417.           do {        /* all this to avoid a strncmp() */
  23418.             if (*p++ != *q++)
  23419.           goto hashcollision;
  23420.           } while (--i);
  23421.           save_ibufp = ip->bufp;
  23422.           /* back up over identifier, then expand token */
  23423.           op->bufp -= ident_length;
  23424. !         if (c != -1) op->bufp--;
  23425.           macroexpand (hp, ip, op, &excess_newlines);
  23426.   
  23427.           check_expand(op, ip->length - (ip->bufp - ip->buf));
  23428.           /* If we just processed an identifier at end of input,
  23429.              return right away.  */
  23430. !         if (c == -1)
  23431.             return;
  23432.   
  23433.           /* if the expansion routine has not moved the input
  23434. ***************
  23435. *** 679,685 ****
  23436.              reason to put it back or not put it back. */
  23437.           if (ip->bufp == save_ibufp)
  23438.             *op->bufp++ = c;
  23439. !         
  23440.           break;        /* out of for loop */
  23441.         }
  23442.   hashcollision:
  23443. --- 708,714 ----
  23444.              reason to put it back or not put it back. */
  23445.           if (ip->bufp == save_ibufp)
  23446.             *op->bufp++ = c;
  23447.           break;        /* out of for loop */
  23448.         }
  23449.   hashcollision:
  23450. ***************
  23451. *** 687,693 ****
  23452.       }            /* end for loop */
  23453.       ident_length = hash = 0; /* stop collecting identifier */
  23454.         }
  23455. !         
  23456.         /* If we just processed an identifier at end of input,
  23457.        return right away.  */
  23458.         if (c == -1)
  23459. --- 716,722 ----
  23460.       }            /* end for loop */
  23461.       ident_length = hash = 0; /* stop collecting identifier */
  23462.         }
  23463.         /* If we just processed an identifier at end of input,
  23464.        return right away.  */
  23465.         if (c == -1)
  23466. ***************
  23467. *** 746,752 ****
  23468.     while (is_idchar[*cp])
  23469.       cp++;
  23470.     ident_length = cp - bp;
  23471. !   
  23472.     /*
  23473.      * Decode the keyword and call the appropriate expansion
  23474.      * routine, after moving the input pointer up to the next line.
  23475. --- 775,781 ----
  23476.     while (is_idchar[*cp])
  23477.       cp++;
  23478.     ident_length = cp - bp;
  23479.     /*
  23480.      * Decode the keyword and call the appropriate expansion
  23481.      * routine, after moving the input pointer up to the next line.
  23482. ***************
  23483. *** 758,770 ****
  23484.         register U_CHAR *buf;
  23485.         register U_CHAR *limit = ip->buf + ip->length;
  23486.         U_CHAR *skip_to_end_of_comment();
  23487. !       
  23488.         buf = bp = bp + ident_length;
  23489.         while (bp < limit) {
  23490.       if (*bp == '\'' || *bp == '\"') {        /* JF handle quotes right  */
  23491.         U_CHAR quotec;
  23492.   
  23493. !       for (quotec = *bp++; bp < limit && *bp != quotec; bp++) {
  23494.           if (*bp == '\\') bp++;
  23495.           if (*bp == '\n') {
  23496.             if (bp[-1] == '\\')
  23497. --- 787,804 ----
  23498.         register U_CHAR *buf;
  23499.         register U_CHAR *limit = ip->buf + ip->length;
  23500.         U_CHAR *skip_to_end_of_comment();
  23501.         buf = bp = bp + ident_length;
  23502.         while (bp < limit) {
  23503.       if (*bp == '\'' || *bp == '\"') {        /* JF handle quotes right  */
  23504.         U_CHAR quotec;
  23505.   
  23506. !       for (quotec = *bp++; bp < limit; bp++) {
  23507. !         if (*bp == quotec)
  23508. !           {
  23509. !         bp++;
  23510. !         break;
  23511. !           }
  23512.           if (*bp == '\\') bp++;
  23513.           if (*bp == '\n') {
  23514.             if (bp[-1] == '\\')
  23515. ***************
  23516. *** 801,813 ****
  23517.                             some slop */
  23518.       bp = buf;
  23519.       buf = cp;
  23520. !     
  23521.       while (bp < limit) {
  23522.         if (*bp == '\'' || *bp == '\"') {    /* JF handle quotes right  */
  23523.           U_CHAR quotec;
  23524.   
  23525.           *cp++ = *bp;
  23526. !         for (quotec = *bp++; bp < limit && *bp != quotec; *cp++ = *bp++) {
  23527.             if (*bp == '\\')
  23528.           *cp++ = *bp++;
  23529.             if (*bp == '\n') {
  23530. --- 835,852 ----
  23531.                             some slop */
  23532.       bp = buf;
  23533.       buf = cp;
  23534.       while (bp < limit) {
  23535.         if (*bp == '\'' || *bp == '\"') {    /* JF handle quotes right  */
  23536.           U_CHAR quotec;
  23537.   
  23538.           *cp++ = *bp;
  23539. !         for (quotec = *bp++; bp < limit; *cp++ = *bp++) {
  23540. !           if (*bp == quotec)
  23541. !         {
  23542. !           *cp++ = *bp++;
  23543. !           break;
  23544. !         }
  23545.             if (*bp == '\\')
  23546.           *cp++ = *bp++;
  23547.             if (*bp == '\n') {
  23548. ***************
  23549. *** 939,950 ****
  23550.         ++ip->bufp;
  23551.       }
  23552.       break;
  23553. !     
  23554.   oops:
  23555. !     
  23556.       error ("`defined' must be followed by IDENT or (IDENT)");
  23557.       break;
  23558. !       
  23559.     default:
  23560.       error("CCCP error: illegal special hash type"); /* time for gdb */
  23561.       abort ();
  23562. --- 978,989 ----
  23563.         ++ip->bufp;
  23564.       }
  23565.       break;
  23566.   oops:
  23567.       error ("`defined' must be followed by IDENT or (IDENT)");
  23568.       break;
  23569.     default:
  23570.       error("CCCP error: illegal special hash type"); /* time for gdb */
  23571.       abort ();
  23572. ***************
  23573. *** 953,959 ****
  23574.     check_expand(op, len);
  23575.     bcopy (buf, op->bufp, len);
  23576.     op->bufp += len;
  23577. !   
  23578.     return;
  23579.   }
  23580.   
  23581. --- 992,998 ----
  23582.     check_expand(op, len);
  23583.     bcopy (buf, op->bufp, len);
  23584.     op->bufp += len;
  23585.     return;
  23586.   }
  23587.   
  23588. ***************
  23589. *** 978,984 ****
  23590.     struct stat sbuf;        /* to stat the include file */
  23591.     FILE_BUF *fp;    /* for input stack frame */
  23592.     struct directory_stack *stackp;
  23593. !   int flen;
  23594.   
  23595.     int save_indepth = indepth;
  23596.                   /* in case of errors */
  23597. --- 1017,1023 ----
  23598.     struct stat sbuf;        /* to stat the include file */
  23599.     FILE_BUF *fp;    /* for input stack frame */
  23600.     struct directory_stack *stackp;
  23601. !   int flen, maxlen;
  23602.   
  23603.     int save_indepth = indepth;
  23604.                   /* in case of errors */
  23605. ***************
  23606. *** 1019,1025 ****
  23607. --- 1058,1068 ----
  23608.     if (err)
  23609.       goto nope;
  23610.   
  23611. +   /* DG: This doesn't handle includes of aa:... on the Amiga */
  23612. +   /* It doesn't seem worth it. */
  23613.     other_dir = NULL;
  23614. +   maxlen = max_include_len;
  23615. + #if 0
  23616.     if (stackp == include)
  23617.       {
  23618.         fp = &instack[indepth];
  23619. ***************
  23620. *** 1037,1049 ****
  23621.             other_dir = (char *) alloca (n + 1);
  23622.             strncpy (other_dir, nam, n);
  23623.             other_dir[n] = '\0';
  23624.           }
  23625.             break;
  23626.           }
  23627.       }
  23628.       }
  23629.                 /* JF search directory path */
  23630. !   fname = (char *) alloca (max_include_len + flen);
  23631.     for (; stackp; stackp = stackp->next)
  23632.       {
  23633.         if (other_dir)
  23634. --- 1080,1094 ----
  23635.             other_dir = (char *) alloca (n + 1);
  23636.             strncpy (other_dir, nam, n);
  23637.             other_dir[n] = '\0';
  23638. +                   if (n + 4 > maxlen) maxlen = n + 4;
  23639.           }
  23640.             break;
  23641.           }
  23642.       }
  23643.       }
  23644. + #endif
  23645.                 /* JF search directory path */
  23646. !   fname = (char *) alloca (maxlen + flen);
  23647.     for (; stackp; stackp = stackp->next)
  23648.       {
  23649.         if (other_dir)
  23650. ***************
  23651. *** 1053,1058 ****
  23652. --- 1098,1107 ----
  23653.       }
  23654.         else
  23655.       strcpy (fname, stackp->fname);
  23656. + #ifdef AMIGA
  23657. +       if (fname[0] != 0 && fname[strlen(fname) - 1] != ':')
  23658. +       /* Don't add / after : or empty strings */
  23659. + #endif
  23660.         strcat (fname, "/");
  23661.         strncat (fname, fbeg, flen);
  23662.         if ((f = open (fname, O_RDONLY)) >= 0)
  23663. ***************
  23664. *** 1064,1070 ****
  23665. --- 1113,1123 ----
  23666.         goto nope;
  23667.       }
  23668.   
  23669. + #ifdef AMIGA
  23670. +   if (stat(fname, &sbuf) < 0)
  23671. + #else
  23672.     if (fstat(f, &sbuf) < 0)
  23673. + #endif
  23674.       {
  23675.         perror_with_name (fname);
  23676.         goto nope;        /* impossible? */
  23677. ***************
  23678. *** 1202,1208 ****
  23679.       ++bp;            /* skip paren */
  23680.       /* Skip exactly one space or tab if any.  */
  23681.       if (bp < limit && (*bp == ' ' || *bp == '\t')) ++bp;
  23682. !       
  23683.       /* now everything from bp before limit is the definition. */
  23684.       defn = collect_expansion(bp, limit - bp, arg_ptrs);
  23685.     } else {
  23686. --- 1255,1261 ----
  23687.       ++bp;            /* skip paren */
  23688.       /* Skip exactly one space or tab if any.  */
  23689.       if (bp < limit && (*bp == ' ' || *bp == '\t')) ++bp;
  23690.       /* now everything from bp before limit is the definition. */
  23691.       defn = collect_expansion(bp, limit - bp, arg_ptrs);
  23692.     } else {
  23693. ***************
  23694. *** 1226,1235 ****
  23695.         }
  23696.       }
  23697.     }
  23698. !   
  23699.     install (symname, T_MACRO, defn);
  23700.     return 0;
  23701. !   
  23702.   nope:
  23703.   
  23704.     return 1;
  23705. --- 1279,1288 ----
  23706.         }
  23707.       }
  23708.     }
  23709.     install (symname, T_MACRO, defn);
  23710.     return 0;
  23711.   nope:
  23712.   
  23713.     return 1;
  23714. ***************
  23715. *** 1308,1314 ****
  23716.   
  23717.       if (is_idstart[*p] && (p==buf || !is_idchar[*(p-1)])) {
  23718.   
  23719. !       for (id_len = 0; is_idchar[p[id_len]]; id_len++)
  23720.       ;
  23721.         for (arg = arglist; arg != NULL; arg = arg->next) {
  23722.       struct reflist *tpat;
  23723. --- 1361,1367 ----
  23724.   
  23725.       if (is_idstart[*p] && (p==buf || !is_idchar[*(p-1)])) {
  23726.   
  23727. !       for (id_len = 0; p+id_len < buf+size && is_idchar[p[id_len]]; id_len++)
  23728.       ;
  23729.         for (arg = arglist; arg != NULL; arg = arg->next) {
  23730.       struct reflist *tpat;
  23731. ***************
  23732. *** 1341,1347 ****
  23733.     *exp_p++ = '\0';
  23734.   
  23735.     defn->length = exp_p - defn->expansion - 1;
  23736. !   
  23737.     /* give back excess storage */
  23738.     defn->expansion = (U_CHAR *) xrealloc (defn->expansion, defn->length + 1);
  23739.   
  23740. --- 1394,1400 ----
  23741.     *exp_p++ = '\0';
  23742.   
  23743.     defn->length = exp_p - defn->expansion - 1;
  23744.     /* give back excess storage */
  23745.     defn->expansion = (U_CHAR *) xrealloc (defn->expansion, defn->length + 1);
  23746.   
  23747. ***************
  23748. *** 1456,1462 ****
  23749.       delete (hp);
  23750.   }
  23751.   
  23752. ! /* handle #error command later */ 
  23753.   do_error()
  23754.   {
  23755.   }
  23756. --- 1509,1515 ----
  23757.       delete (hp);
  23758.   }
  23759.   
  23760. ! /* handle #error command later */
  23761.   do_error()
  23762.   {
  23763.   }
  23764. ***************
  23765. *** 1465,1470 ****
  23766. --- 1518,1538 ----
  23767.    * the behavior of the #pragma directive is implementation defined.
  23768.    * this implementation defines it as follows.
  23769.    */
  23770. + #ifdef AMIGA
  23771. + do_pragma(buf, limit, op, keyword)
  23772. +      U_CHAR *buf, *limit;
  23773. +      FILE_BUF *op;
  23774. +      struct keyword_table *keyword;
  23775. + {
  23776. +     /* Just copy the pragma directibe back out */
  23777. +     int len2 = limit - buf, len1 = sizeof("#pragma") - 1;
  23778. +     check_expand(op, len1 + len2);
  23779. +     bcopy("#pragma", op->bufp, len1);
  23780. +     bcopy(buf, op->bufp + len1, len2);
  23781. +     op->bufp += len1 + len2;
  23782. + }
  23783. + #else
  23784.   do_pragma()
  23785.   {
  23786.     close (0);
  23787. ***************
  23788. *** 1479,1484 ****
  23789. --- 1547,1553 ----
  23790.   nope:
  23791.     fatal ("You are in a maze of twisty compiler features, all different");
  23792.   }
  23793. + #endif
  23794.   
  23795.   typedef struct if_stack {
  23796.     struct if_stack *next;    /* for chaining to the next stack frame */
  23797. ***************
  23798. *** 1541,1547 ****
  23799.       }
  23800.       if_stack->type = T_ELIF;
  23801.     }
  23802. !   
  23803.     value = eval_if_expression (buf, limit - buf);
  23804.     conditional_skip (ip, value == 0, T_ELIF);
  23805.   }
  23806. --- 1610,1616 ----
  23807.       }
  23808.       if_stack->type = T_ELIF;
  23809.     }
  23810.     value = eval_if_expression (buf, limit - buf);
  23811.     conditional_skip (ip, value == 0, T_ELIF);
  23812.   }
  23813. ***************
  23814. *** 1574,1580 ****
  23815.   
  23816.     delete (save_defined);    /* clean up special symbol */
  23817.     free (temp_obuf.buf);
  23818. !   
  23819.     return value;
  23820.   }
  23821.   
  23822. --- 1643,1649 ----
  23823.   
  23824.     delete (save_defined);    /* clean up special symbol */
  23825.     free (temp_obuf.buf);
  23826.     return value;
  23827.   }
  23828.   
  23829. ***************
  23830. *** 1614,1620 ****
  23831.     if_stack = temp;
  23832.   
  23833.     if_stack->type = type;
  23834. !   
  23835.     if (skip != 0) {
  23836.       skip_if_group(ip);
  23837.       return;
  23838. --- 1683,1689 ----
  23839.     if_stack = temp;
  23840.   
  23841.     if_stack->type = type;
  23842.     if (skip != 0) {
  23843.       skip_if_group(ip);
  23844.       return;
  23845. ***************
  23846. *** 1724,1730 ****
  23847.    * without changing  if_stack ;  this is so that the error message
  23848.    * for missing #endif's etc. will point to the original #if.  It
  23849.    * is possible that something different would be better.
  23850. !  */ 
  23851.   do_else(buf, limit, op, keyword)
  23852.        U_CHAR *buf, *limit;
  23853.        FILE_BUF *op;
  23854. --- 1793,1799 ----
  23855.    * without changing  if_stack ;  this is so that the error message
  23856.    * for missing #endif's etc. will point to the original #if.  It
  23857.    * is possible that something different would be better.
  23858. !  */
  23859.   do_else(buf, limit, op, keyword)
  23860.        U_CHAR *buf, *limit;
  23861.        FILE_BUF *op;
  23862. ***************
  23863. *** 1915,1921 ****
  23864.         int totlen;        /* total amount of exp buffer filled so far */
  23865.   
  23866.         register struct reflist *ap;
  23867. !       struct argptrs { 
  23868.                  U_CHAR *argstart;
  23869.                  int length;
  23870.                } *args;
  23871. --- 1984,1990 ----
  23872.         int totlen;        /* total amount of exp buffer filled so far */
  23873.   
  23874.         register struct reflist *ap;
  23875. !       struct argptrs {
  23876.                  U_CHAR *argstart;
  23877.                  int length;
  23878.                } *args;
  23879. ***************
  23880. *** 1999,2005 ****
  23881.         ip2->buf = ip2->bufp = defn->expansion;
  23882.         ip2->length = defn->length;
  23883.       }
  23884. !   
  23885.     rescan (ip2, op);
  23886.     --indepth;
  23887.     *excess_newlines_ptr += newlines_found;
  23888. --- 2068,2074 ----
  23889.         ip2->buf = ip2->bufp = defn->expansion;
  23890.         ip2->length = defn->length;
  23891.       }
  23892.     rescan (ip2, op);
  23893.     --indepth;
  23894.     *excess_newlines_ptr += newlines_found;
  23895. ***************
  23896. *** 2024,2030 ****
  23897.   {
  23898.     int paren = 0;
  23899.     int quotec = 0;
  23900. !   
  23901.     while (bp < ip->buf + ip->length) {
  23902.       switch (*bp) {
  23903.       case '(':
  23904. --- 2093,2099 ----
  23905.   {
  23906.     int paren = 0;
  23907.     int quotec = 0;
  23908.     while (bp < ip->buf + ip->length) {
  23909.       switch (*bp) {
  23910.       case '(':
  23911. ***************
  23912. *** 2084,2092 ****
  23913.       }
  23914.   
  23915.     if (ip != NULL)
  23916. !     fprintf(stdout, "file %s, offset %d (line %d): ",
  23917.           ip->fname, ip->bufp - ip->buf, ip->lineno);
  23918. !   fprintf(stdout, "%s\n", msg);
  23919.     return 0;
  23920.   }
  23921.   
  23922. --- 2153,2161 ----
  23923.       }
  23924.   
  23925.     if (ip != NULL)
  23926. !     fprintf(stderr, "file %s, offset %d (line %d): ",
  23927.           ip->fname, ip->bufp - ip->buf, ip->lineno);
  23928. !   fprintf(stderr, "%s\n", msg);
  23929.     return 0;
  23930.   }
  23931.   
  23932. ***************
  23933. *** 2109,2115 ****
  23934.   {
  23935.     register int i;
  23936.     register U_CHAR *p;
  23937. !   
  23938.     if (obuf->length - (obuf->bufp - obuf->buf) > needed)
  23939.       return obuf->buf;
  23940.   
  23941. --- 2178,2184 ----
  23942.   {
  23943.     register int i;
  23944.     register U_CHAR *p;
  23945.     if (obuf->length - (obuf->bufp - obuf->buf) > needed)
  23946.       return obuf->buf;
  23947.   
  23948. ***************
  23949. *** 2125,2131 ****
  23950.   
  23951.     return p;
  23952.   }
  23953. !   
  23954.   /*
  23955.    * install a name in the main hash table, even if it is already there.
  23956.    *   name stops with first non alphanumeric, except leading '#'.
  23957. --- 2194,2200 ----
  23958.   
  23959.     return p;
  23960.   }
  23961.   /*
  23962.    * install a name in the main hash table, even if it is already there.
  23963.    *   name stops with first non alphanumeric, except leading '#'.
  23964. ***************
  23965. *** 2198,2204 ****
  23966.   delete(hp)
  23967.        HASHNODE *hp;
  23968.   {
  23969. !   
  23970.     if (hp->prev != NULL)
  23971.       hp->prev->next = hp->next;
  23972.     if (hp->next != NULL)
  23973. --- 2267,2273 ----
  23974.   delete(hp)
  23975.        HASHNODE *hp;
  23976.   {
  23977.     if (hp->prev != NULL)
  23978.       hp->prev->next = hp->next;
  23979.     if (hp->next != NULL)
  23980. ***************
  23981. *** 2232,2241 ****
  23982.        int hashsize;
  23983.   {
  23984.     register int r = 0;
  23985. !   
  23986.     while (len--)
  23987.       r = HASHSTEP(r, *name++);
  23988. !   
  23989.     return MAKE_POS(r) % hashsize;
  23990.   }
  23991.   
  23992. --- 2301,2310 ----
  23993.        int hashsize;
  23994.   {
  23995.     register int r = 0;
  23996.     while (len--)
  23997.       r = HASHSTEP(r, *name++);
  23998.     return MAKE_POS(r) % hashsize;
  23999.   }
  24000.   
  24001. ***************
  24002. *** 2282,2288 ****
  24003.   #endif
  24004.   
  24005.     /* is there more? */
  24006. !   
  24007.   }
  24008.   
  24009.   /*
  24010. --- 2351,2357 ----
  24011.   #endif
  24012.   
  24013.     /* is there more? */
  24014.   }
  24015.   
  24016.   /*
  24017. ***************
  24018. *** 2357,2363 ****
  24019.   #endif /* not VMS */
  24020.   }
  24021.   
  24022. ! void 
  24023.   bcopy (b1, b2, length)
  24024.        register char *b1;
  24025.        register char *b2;
  24026. --- 2426,2432 ----
  24027.   #endif /* not VMS */
  24028.   }
  24029.   
  24030. ! void
  24031.   bcopy (b1, b2, length)
  24032.        register char *b1;
  24033.        register char *b2;
  24034. ***************
  24035. *** 2379,2385 ****
  24036.       *b2++ = *b1++;
  24037.   #endif /* not VMS */
  24038.   }
  24039. !  
  24040.   int
  24041.   bcmp (b1, b2, length)    /* This could be a macro! */
  24042.        register char *b1;
  24043. --- 2448,2454 ----
  24044.       *b2++ = *b1++;
  24045.   #endif /* not VMS */
  24046.   }
  24047.   int
  24048.   bcmp (b1, b2, length)    /* This could be a macro! */
  24049.        register char *b1;
  24050. diff -rc --new-file /src/baseline/emacs-18.59/cpp/smakefile emacs-18.59/cpp/smakefile
  24051. *** /src/baseline/emacs-18.59/cpp/smakefile    Thu Jan  1 00:00:00 1970
  24052. --- emacs-18.59/cpp/smakefile    Sat Oct  2 15:30:13 1993
  24053. ***************
  24054. *** 0 ****
  24055. --- 1,23 ----
  24056. + # Makefile for cccp in the Emacs distribution only.
  24057. + # Here we assume that you are using SASC
  24058. + # (since cccp is used by Emacs only to deal with long strings in macros.
  24059. + CFLAGS=DEF EMACS idir //unix/include/ def STACK_DIRECTION=-1 def OUTPUT_LINE_COMMANDS nowvret debug sf
  24060. + cpp: cccp
  24061. +     -delete cpp
  24062. +     makelink cpp cccp
  24063. + cccp: cccp.o cexp.tab.o alloca.o
  24064. +     sc link cccp.o alloca.o cexp.tab.o to cccp lib //unix/src/unix.lib
  24065. + testexp: y.tab.c
  24066. +     cc -g -DTEST_EXP_READER y.tab.c -o testexp
  24067. + cexp.tab.c: cexp.y
  24068. +     echo "expect 40 shift/reduce conflicts"
  24069. +     bin:bison cexp.y >bison.debug
  24070. + cccp.o: cccp.c
  24071. + cexp.tab.o: cexp.tab.c
  24072. + alloca.o: /src/alloca.c
  24073. +     $(CC) $(CFLAGS) objname alloca.o /src/alloca.c
  24074. diff -rc --new-file /src/baseline/emacs-18.59/etc/SCOPTIONS emacs-18.59/etc/SCOPTIONS
  24075. *** /src/baseline/emacs-18.59/etc/SCOPTIONS    Thu Jan  1 00:00:00 1970
  24076. --- emacs-18.59/etc/SCOPTIONS    Sat Dec  5 18:07:36 1992
  24077. ***************
  24078. *** 0 ****
  24079. --- 1,15 ----
  24080. + STRINGMERGE
  24081. + STRUCTUREEQUIVALENCE
  24082. + NOWARNVOIDRETURN
  24083. + NOVERSION
  24084. + MEMORYSIZE=HUGE
  24085. + INCLUDEDIR=src:unix/include
  24086. + IGNORE=147
  24087. + IGNORE=62
  24088. + IGNORE=132
  24089. + IGNORE=154
  24090. + IGNORE=104
  24091. + IGNORE=100
  24092. + IGNORE=161
  24093. + IGNORE=84
  24094. + IGNORE=93
  24095. diff -rc --new-file /src/baseline/emacs-18.59/etc/amiga-env.c emacs-18.59/etc/amiga-env.c
  24096. *** /src/baseline/emacs-18.59/etc/amiga-env.c    Thu Jan  1 00:00:00 1970
  24097. --- emacs-18.59/etc/amiga-env.c    Sat Jun  5 16:55:12 1993
  24098. ***************
  24099. *** 0 ****
  24100. --- 1,439 ----
  24101. + /* env.c - manipulate environment and execute a program
  24102. +    in that environment
  24103. +    Mly 861126
  24104. +    Copyright (C) 1986 Free Software Foundation, Inc.
  24105. +     This program is free software; you can redistribute it and/or modify
  24106. +     it under the terms of the GNU General Public License as published by
  24107. +     the Free Software Foundation; either version 1, or (at your option)
  24108. +     any later version.
  24109. +     This program is distributed in the hope that it will be useful,
  24110. +     but WITHOUT ANY WARRANTY; without even the implied warranty of
  24111. +     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  24112. +     GNU General Public License for more details.
  24113. +     You should have received a copy of the GNU General Public License
  24114. +     along with this program; if not, write to the Free Software
  24115. +     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  24116. +  In other words, you are welcome to use, share and improve this program.
  24117. +  You are forbidden to forbid anyone else to use, share and improve
  24118. +  what you give them.   Help stamp out software-hoarding!  */
  24119. + /* 
  24120. +    If first argument is "-", then a new environment is constructed
  24121. +    from scratch; otherwise the environment is inherited from the parent
  24122. +    process, except as modified by other options.
  24123. +    
  24124. +    So, "env - foo" will invoke the "foo" program in a null environment,
  24125. +    whereas "env foo" would invoke "foo" in the same environment as that
  24126. +    passed to "env" itself.
  24127. +    Subsequent arguments are interpreted as follows:
  24128. +    
  24129. +    * "variable=value" (ie an arg containing a "=" character)
  24130. +      means to set the specified environment variable to that value.
  24131. +      `value' may be of zero length ("variable=").  Note that setting
  24132. +      a variable to a zero-length value is different from unsetting it.
  24133. +    * "-u variable" or "-unset variable"
  24134. +      means to unset that variable
  24135. +      If that variable isn't set, does nothing.
  24136. +    * "-s variable value" or "-set variable value"
  24137. +      same as "variable=value"
  24138. +    * "-" or "--"
  24139. +      are used to indicate that the following argument is the program
  24140. +      to invoke.  This is only necessary when the program's name
  24141. +      begins with "-" or contains a "="
  24142. +    * anything else
  24143. +      The first remaining argument specifies a program to invoke
  24144. +      (it is searched for according to the specification of the PATH
  24145. +      environment variable) and any arguments following that are
  24146. +      passed as arguments to that program
  24147. +      If no program-name is specified following the environment
  24148. +      specifications the the resulting environment is printed
  24149. +      (The is like specifying a program-name of "printenv")
  24150. +    Examples:
  24151. +      If the environment passed to "env" is
  24152. +      { USER=rms EDITOR=emacs PATH=.:/gnubin:/hacks }
  24153. +      * "env DISPLAY=gnu:0 nemacs"
  24154. +         calls "nemacs" in the envionment
  24155. +     { EDITOR=emacs USER=rms DISPLAY=gnu }
  24156. +      * "env - USER=foo /hacks/hack bar baz"
  24157. +        will call the "hack" program on arguments "bar" and "baz"
  24158. +        in an environment in which the only variable is "USER"
  24159. +        Note that the "-" option will clear out the PATH variable,
  24160. +        so one should be careful to specify in which directory
  24161. +        to find the program to call
  24162. +        
  24163. +      * "env -u EDITOR USER=foo PATH=/energy -- e=mc2 bar baz"
  24164. +        The program "/energy/e=mc2" is called with environment
  24165. +        { USER=foo PATH=/energy }
  24166. + */
  24167. + #include <exec/types.h>
  24168. + #include <dos/dostags.h>
  24169. + #include <dos/var.h>
  24170. + #include <proto/dos.h>
  24171. + #include <proto/exec.h>
  24172. + #ifdef EMACS
  24173. + #define NO_SHORTNAMES
  24174. + #include "../src/config.h"
  24175. + #endif /* EMACS */
  24176. + #include <stdio.h>
  24177. + #include <errno.h>
  24178. + #include <setjmp.h>
  24179. + extern int execvp ();
  24180. + extern char *index ();
  24181. + char *xmalloc (), *xrealloc ();
  24182. + char *concat ();
  24183. + char *progname;
  24184. + void setenv ();
  24185. + void fatal ();
  24186. + #define index strchr
  24187. + struct MsgPort *end_port;
  24188. + struct {
  24189. +   struct Message msg;
  24190. +   int rc;
  24191. + } end_msg;
  24192. + int gargc;
  24193. + char **gargv;
  24194. + jmp_buf unixexit_buf;
  24195. + void __saveds unix_start(void)
  24196. + {
  24197. +   int rc;
  24198. +   if (!(rc = setjmp(unixexit_buf)))
  24199. +     {
  24200. +       unixmain(gargc, gargv);
  24201. +       rc = 1;
  24202. +     }
  24203. +   end_msg.rc = rc - 1;
  24204. +   end_msg.msg.mn_Length = sizeof(end_msg);
  24205. +   end_msg.msg.mn_Node.ln_Type = NT_MESSAGE;
  24206. +   PutMsg(end_port, &end_msg);
  24207. + }
  24208. + void unixexit(int rc)
  24209. + {
  24210. +   longjmp(unixexit_buf, rc + 1);
  24211. + }
  24212. + main(int argc, char **argv)
  24213. + {
  24214. +   int rc = 1;
  24215. +   long stacksize;
  24216. +   struct Process *us = (struct Process *)FindTask(0);
  24217. +   if (us->pr_CLI) stacksize = ((struct CommandLineInterface *)BADDR(us->pr_CLI))->cli_DefaultStack << 2;
  24218. +   else stacksize = us->pr_StackSize;
  24219. +   gargc = argc;
  24220. +   gargv = argv;
  24221. +   
  24222. +   end_port = CreateMsgPort();
  24223. +   if (end_port && CreateNewProcTags(NP_Entry, unix_start,
  24224. +                     NP_Input, Input(), NP_CloseInput, 0UL,
  24225. +                     NP_Output, Output(), NP_CloseOutput, 0UL,
  24226. +                     NP_StackSize, stacksize,
  24227. +                     NP_Cli, TRUE, TAG_END))
  24228. +     {
  24229. +       while (!GetMsg(end_port)) WaitPort(end_port);
  24230. +       rc = end_msg.rc;
  24231. +     }
  24232. +   if (end_port) DeleteMsgPort(end_port);
  24233. +   Delay(1);
  24234. +   exit(rc);
  24235. + }
  24236. + #define exit unixexit
  24237. + unixmain (argc, argv)
  24238. +      register int argc;
  24239. +      register char **argv;
  24240. + {
  24241. +   register char *tem;
  24242. +   progname = argv[0];
  24243. +   argc--;
  24244. +   argv++;
  24245. +   /* "-" flag means to not inherit parent's environment */
  24246. +   /* This is ignored on the amiga */
  24247. +   if (argc && !strcmp (*argv, "-"))
  24248. +     {
  24249. +       argc--;
  24250. +       argv++;
  24251. +     }
  24252. +   while (argc > 0)
  24253. +     {
  24254. +       tem = index (*argv, '=');
  24255. +       if (tem)
  24256. +     /* If arg contains a "=" it specifies to set a variable */
  24257. +     {
  24258. +       *tem = '\000';
  24259. +       setenv (*argv, tem + 1);
  24260. +       argc--; argv++;
  24261. +       continue;
  24262. +     }
  24263. +       
  24264. +       if (**argv != '-')
  24265. +     /* Remaining args are program name and args to pass it */
  24266. +     break;
  24267. +       if (argc < 2)
  24268. +     fatal ("No argument following \"%s\" switch", *argv);
  24269. +        if (!strcmp (*argv, "-u") ||
  24270. +            !strcmp (*argv, "-unset"))
  24271. +     /* Unset a variable */
  24272. +     {
  24273. +       argc--; argv++;
  24274. +       setenv (*argv, 0);
  24275. +       argc--; argv++;
  24276. +     }
  24277. +       else if (!strcmp (*argv, "-s") ||
  24278. +            !strcmp (*argv, "-set"))
  24279. +     /* Set a variable */
  24280. +     {
  24281. +       argc--; argv++;
  24282. +       tem = *argv;
  24283. +       if (argc < 2)
  24284. +         fatal ("No value specified for variable \"%s\"",
  24285. +            tem);
  24286. +       argc--; argv++;
  24287. +       setenv (tem, *argv);
  24288. +       argc--; argv++;
  24289. +     }
  24290. +       else if (!strcmp (*argv, "-") || !strcmp (*argv, "--"))
  24291. +     {
  24292. +       argc--; argv++;
  24293. +       break;
  24294. +     }
  24295. +       else
  24296. +     {
  24297. +       fatal ("unknown switch \"%s\"", *argv);
  24298. +     }
  24299. +     }
  24300. +   /* If no program specified print the environment and exit */
  24301. +   if (argc <= 0)
  24302. +     {
  24303. +       printenv();
  24304. +       exit (0);
  24305. +     }
  24306. +   else
  24307. +     {
  24308. +       extern int errno, sys_nerr;
  24309. +       extern char *sys_errlist[];
  24310. +       (void) execvp (*argv, argv);
  24311. +       fprintf (stderr, "%s: Cannot execute \"%s\"",
  24312. +            progname, *argv);
  24313. +       if (errno < sys_nerr)
  24314. +     fprintf (stderr, ": %s\n" , sys_errlist[errno]);
  24315. +       else
  24316. +     putc ('\n', stderr);
  24317. +       exit (errno != 0 ? errno : 1);
  24318. +     }
  24319. + }
  24320. + int execvp(program, argv)
  24321. + char *program, **argv;
  24322. + {
  24323. +   int index, comsize;
  24324. +   char *combuf, *bp;
  24325. +   long err, rc;
  24326. +   
  24327. +   combuf = xmalloc(256);
  24328. +   comsize = 256;
  24329. +   bp = combuf;
  24330. +   for (index = 0; argv[index] != 0; index++)
  24331. +     {
  24332. +       char *s = argv[index];
  24333. +       int len;
  24334. +       len = 3;
  24335. +       while (*s) len += 1 + 2 * (*s++ == '"');
  24336. +       if (bp + len + 1 >= combuf + comsize)
  24337. +     {
  24338. +       char *newbuf;
  24339. +       int new_comsize;
  24340. +       new_comsize = 2 * comsize + len;
  24341. +       newbuf = xmalloc(new_comsize);
  24342. +       memcpy(newbuf, combuf, comsize);
  24343. +       bp = newbuf + (bp - combuf);
  24344. +       combuf = newbuf;
  24345. +       comsize = new_comsize;
  24346. +     }
  24347. +       *bp++ = ' ';
  24348. +       *bp++ = '"';
  24349. +       s = argv[index];
  24350. +       while (*s)
  24351. +     {
  24352. +       if (*s == '"' || *s == '*') *bp++ = '*';
  24353. +       *bp++ = *s++;
  24354. +     }
  24355. +       *bp++ = '"';
  24356. +     }
  24357. +   *bp = '\0';
  24358. +   rc = SystemTags(combuf,
  24359. +           SYS_UserShell, 1UL,
  24360. +           TAG_END);
  24361. +   err = IoErr();
  24362. +   free(combuf);
  24363. +   if (rc != -1) exit(rc);
  24364. +   
  24365. +   errno = convert_oserr(err);
  24366. +   return -1;
  24367. + }
  24368. + int convert_oserr(int ioerr)
  24369. + {
  24370. +   extern int _OSERR;
  24371. +   _OSERR = ioerr;
  24372. +   switch (ioerr)
  24373. +     {
  24374. +     case 0: return 0;
  24375. +     case ERROR_NO_FREE_STORE: return ENOMEM;
  24376. +     case ERROR_TASK_TABLE_FULL: return EAGAIN;
  24377. +     case ERROR_BAD_TEMPLATE: case ERROR_REQUIRED_ARG_MISSING:
  24378. +     case ERROR_KEY_NEEDS_ARG: case ERROR_TOO_MANY_ARGS:
  24379. +     case ERROR_UNMATCHED_QUOTES: case ERROR_LINE_TOO_LONG: return EINVAL;
  24380. +     case ERROR_OBJECT_IN_USE: return EBUSY;
  24381. +     case ERROR_OBJECT_EXISTS: return EEXIST;
  24382. +     case ERROR_DIR_NOT_FOUND: return ENOENT;
  24383. +     case ERROR_OBJECT_NOT_FOUND: return ENOENT;
  24384. +     case ERROR_BAD_STREAM_NAME: return EINVAL;
  24385. +     case ERROR_OBJECT_TOO_LARGE: return E2BIG;
  24386. +     case ERROR_ACTION_NOT_KNOWN: return EINVAL;
  24387. +     case ERROR_INVALID_COMPONENT_NAME: return EINVAL;
  24388. +     case ERROR_INVALID_LOCK: return EINVAL;
  24389. +     case ERROR_OBJECT_WRONG_TYPE: return EINVAL;
  24390. +     case ERROR_DISK_WRITE_PROTECTED: return EACCES;
  24391. +     case ERROR_SEEK_ERROR: return EIO;
  24392. +     case ERROR_DISK_FULL: return ENOSPC;
  24393. +     case ERROR_DELETE_PROTECTED: return EACCES;
  24394. +     case ERROR_WRITE_PROTECTED: return EACCES;
  24395. +     case ERROR_READ_PROTECTED: return EACCES;
  24396. +     case ERROR_RENAME_ACROSS_DEVICES: return EXDEV;
  24397. +     default: return EOSERR;
  24398. +     }
  24399. + }
  24400. + printenv(void)
  24401. + /* Effect: Prints a UNIX style environment from the AmigaDOS environment.
  24402. + */
  24403. + {
  24404. +   struct LocalVar *scan_env;
  24405. +   struct Process *us = (struct Process *)FindTask(0);
  24406. +   for (scan_env = (struct LocalVar *)us->pr_LocalVars.mlh_Head;
  24407. +        scan_env->lv_Node.ln_Succ;
  24408. +        scan_env = (struct LocalVar *)scan_env->lv_Node.ln_Succ)
  24409. +     if (scan_env->lv_Node.ln_Type == LV_VAR &&
  24410. +     !(scan_env->lv_Flags & (GVF_GLOBAL_ONLY | GVF_BINARY_VAR)))
  24411. +       {
  24412. +     /* We only handle local text variables */
  24413. +     printf("%s=", scan_env->lv_Node.ln_Name);
  24414. +     fwrite(scan_env->lv_Value, 1, scan_env->lv_Len, stdout);
  24415. +     putchar('\n');
  24416. +       }
  24417. + }
  24418. + void
  24419. + setenv (var, val)
  24420. +   register char *var, *val;
  24421. + {
  24422. +   if (val) SetVar(var, val, -1, LV_VAR | GVF_LOCAL_ONLY);
  24423. +   else DeleteVar(var, LV_VAR | GVF_LOCAL_ONLY);
  24424. + }
  24425. + void
  24426. + fatal (msg, arg1, arg2)
  24427. +      char *msg, *arg1, *arg2;
  24428. + {
  24429. +   fprintf (stderr, "%s: ", progname);
  24430. +   fprintf (stderr, msg, arg1, arg2);
  24431. +   putc ('\n', stderr);
  24432. +   exit (1);
  24433. + }
  24434. + extern char *malloc (), *realloc ();
  24435. + void
  24436. + memory_fatal ()
  24437. + {
  24438. +   fatal ("Out of memory");
  24439. + }
  24440. + char *
  24441. + xmalloc (size)
  24442. +      int size;
  24443. + {
  24444. +   register char *value;
  24445. +   value = (char *) malloc (size);
  24446. +   if (!value) memory_fatal ();
  24447. +   return (value);
  24448. + }
  24449. + char *
  24450. + xrealloc (ptr, size)
  24451. +      char *ptr;
  24452. +      int size;
  24453. + {
  24454. +   register char *value;
  24455. +   value = (char *) realloc (ptr, size);
  24456. +   if (!value) memory_fatal ();
  24457. +   return (value);
  24458. + }
  24459. + /* Return a newly-allocated string whose contents concatenate those of s1, s2, s3.  */
  24460. + char *
  24461. + concat (s1, s2, s3)
  24462. +      char *s1, *s2, *s3;
  24463. + {
  24464. +   int len1 = strlen (s1), len2 = strlen (s2), len3 = strlen (s3);
  24465. +   char *result = (char *) xmalloc (len1 + len2 + len3 + 1);
  24466. +   strcpy (result, s1);
  24467. +   strcpy (result + len1, s2);
  24468. +   strcpy (result + len1 + len2, s3);
  24469. +   *(result + len1 + len2 + len3) = 0;
  24470. +   return result;
  24471. + }
  24472. + /*
  24473. +  * Local variables:
  24474. +  * compile-command: "lc -L -v amiga-env.c"
  24475. +  * end:
  24476. +  */
  24477. diff -rc --new-file /src/baseline/emacs-18.59/etc/etags.c emacs-18.59/etc/etags.c
  24478. *** /src/baseline/emacs-18.59/etc/etags.c    Thu Aug 20 01:11:01 1992
  24479. --- emacs-18.59/etc/etags.c    Sun May  9 18:35:40 1993
  24480. ***************
  24481. *** 338,347 ****
  24482. --- 338,354 ----
  24483.       {
  24484.         for (i=1; i<ac; i++)
  24485.       {
  24486. + #ifdef AMIGA
  24487. +       rename(outfile, "OTAGS");
  24488. +       sprintf(cmd, "egrep >%s -v '\t%s\t' OTAGS", outfile, av[i]);
  24489. +       system(cmd);
  24490. +       unlink("OTAGS");
  24491. + #else
  24492.         sprintf(cmd,
  24493.             "mv %s OTAGS;fgrep -v '\t%s\t' OTAGS >%s;rm OTAGS",
  24494.             outfile, av[i], outfile);
  24495.         system(cmd);
  24496. + #endif
  24497.       }
  24498.         aflag++;
  24499.       }
  24500. ***************
  24501. *** 357,363 ****
  24502. --- 364,374 ----
  24503.   #ifndef VMS
  24504.     if (uflag)
  24505.       {
  24506. + #ifdef AMIGA
  24507. +       sprintf(cmd, "c:sort from %s to %s", outfile, outfile);
  24508. + #else
  24509.         sprintf(cmd, "sort %s -o %s", outfile, outfile);
  24510. + #endif
  24511.         system(cmd);
  24512.       }
  24513.   #endif
  24514. diff -rc --new-file /src/baseline/emacs-18.59/etc/make-docfile.c emacs-18.59/etc/make-docfile.c
  24515. *** /src/baseline/emacs-18.59/etc/make-docfile.c    Fri Oct 25 14:43:28 1991
  24516. --- emacs-18.59/etc/make-docfile.c    Sun May  9 18:35:46 1993
  24517. ***************
  24518. *** 57,64 ****
  24519. --- 57,86 ----
  24520.         i += 2;
  24521.       }
  24522.   
  24523. + #ifdef AMIGA
  24524. +   {
  24525. +     char fn[512], *fpos;
  24526. +     int c;
  24527. +     c = getchar();
  24528. +     do
  24529. +       {
  24530. +     while (c == ' ' || c == '\n' || c == '\t') c = getchar();
  24531. +     if (c == EOF) break;
  24532. +     fpos = fn;
  24533. +     do *fpos++ = c;
  24534. +     while ((c = getchar()) != EOF && c != ' ' && c != '\t' && c != '\n');
  24535. +     *fpos = 0;
  24536. +     fprintf(stderr, "doc file %s\n", fn);
  24537. +     err_count += scan_file (fn); /* err_count seems to be {mis,un}used */
  24538. +       }
  24539. +     while (1);
  24540. +   }
  24541. + #else
  24542.     for (; i < argc; i++)
  24543.       err_count += scan_file (argv[i]);    /* err_count seems to be {mis,un}used */
  24544. + #endif
  24545.   #ifndef VMS
  24546.     exit (err_count);            /* see below - shane */
  24547.   #endif /* VMS */
  24548. diff -rc --new-file /src/baseline/emacs-18.59/etc/sh.c emacs-18.59/etc/sh.c
  24549. *** /src/baseline/emacs-18.59/etc/sh.c    Thu Jan  1 00:00:00 1970
  24550. --- emacs-18.59/etc/sh.c    Sat Jun  5 11:44:06 1993
  24551. ***************
  24552. *** 0 ****
  24553. --- 1,145 ----
  24554. + ;/*
  24555. + SC LINK NOSTKCHK DEF SASC=1 sh.c
  24556. + QUIT
  24557. + */
  24558. + /*
  24559. +  * original version: David Gay
  24560. +  *
  24561. +  * 05/18/93 ch added SAS support, external verbose flag and primitive_parse
  24562. +  */
  24563. + #include <exec/types.h>
  24564. + #include <dos/dostags.h>
  24565. + #include <stdio.h>
  24566. + #ifdef SASC
  24567. + #include <string.h>
  24568. + #include <stdlib.h>
  24569. + #endif
  24570. + #include <proto/dos.h>
  24571. + /*
  24572. +   translates:
  24573. +  
  24574. +   echo "string1;string2" ; cd xx:c ; copy xx yy
  24575. +  
  24576. +       into
  24577. +  
  24578. +   echo "string1;string2" \n cd xx:c \n copy xx yy
  24579. +   note:
  24580. +     this is a really primitive function ;-) , it may be 
  24581. +     changed if necessary
  24582. + */
  24583. + #define QUOTE    '"'
  24584. + void primitive_parse(char *s)
  24585. + {
  24586. +     int c;
  24587. +     while(c = *s++)
  24588. +     {
  24589. +     if(c == QUOTE)
  24590. +     {
  24591. +         while((c = *s++) && (c != QUOTE))
  24592. +         ;
  24593. +         if(!c)
  24594. +         break;
  24595. +     }
  24596. +     else if(c == ';')
  24597. +         *(s-1) = '\n';
  24598. +     }
  24599. + }
  24600. + int execute(char *cmd, int debug)
  24601. + {
  24602. +     long rc;
  24603. +     char *s;
  24604. +     while (*cmd == ' ') cmd++;
  24605. +     if (strncmp(cmd, "exec", 4) == 0 && (cmd[4] == ' ' || cmd[4] == '\t')) 
  24606. +     cmd += 4;
  24607. +     
  24608. +     s = cmd;
  24609. +     primitive_parse(s);
  24610. +     if(debug)
  24611. +     fprintf(stderr,"/etc/sh: preparsed line:\n%s\n", cmd);
  24612. +     if ((rc = SystemTags(cmd, SYS_UserShell, TRUE, TAG_END)) == -1)
  24613. +     {
  24614. +     fprintf(stderr, "Failed to execute command %s\n", cmd);
  24615. +     return 20;
  24616. +     }
  24617. +     return rc;
  24618. + }
  24619. + void main(int argc, char **argv)
  24620. + {
  24621. +   int command;
  24622. +   char *command_string;
  24623. +   char *program_name = argv[0];
  24624. +   struct RDArgs *args;
  24625. +   long opts[1];
  24626. +   static char options[] = "";
  24627. +   long debug = 0;
  24628. +   char *shenv;
  24629. +   /* Throw out AmigaDOS args so that Input() is clean */
  24630. +   if (args = ReadArgs(options, opts, NULL)) FreeArgs(args);
  24631. +   shenv = getenv("EMACS_SH_DEBUG");
  24632. +   if(shenv)
  24633. +       if(strstr(shenv, "-v")) /* external verbose flag */
  24634. +       debug = 1;
  24635. +   
  24636. +   command = 0;
  24637. +   /* Simplistic argument parsing */
  24638. +   argv++;
  24639. +   argc--;
  24640. +   while (argc > 0 && argv[0][0] == '-')
  24641. +     {
  24642. +       switch (argv[0][1])
  24643. +     {
  24644. +     case 'c':
  24645. +       if (argc == 1) goto usage;
  24646. +       command = 1;
  24647. +       command_string = argv[1];
  24648. +       argv++;
  24649. +       argc--;
  24650. +       break;
  24651. +     case 'v':
  24652. +       debug = 1;
  24653. +       break;
  24654. +     case 'i':
  24655. +       /* ignored for now */
  24656. +       break;
  24657. +     default: goto usage;
  24658. +     }
  24659. +       argc--;
  24660. +       argv++;
  24661. +     }
  24662. +   if (argc != 0) goto usage;
  24663. +   if (command) 
  24664. +   {
  24665. +       if(debug)
  24666. +       fprintf(stderr,"%s: command_string = %s\n", argv[0], command_string);
  24667. +       exit(execute(command_string, debug));
  24668. +   }
  24669. +   else exit(Execute("", Input(), NULL) ? 0 : 1);
  24670. +  usage:
  24671. +   fprintf(stderr, "%s [-i] [-v] [-c command]\n", program_name);
  24672. +   exit(1);
  24673. + }
  24674. + /*
  24675. +  * Local variables:
  24676. +  * compile-command: "sc link nostkchk def SASC=1 sh.c"
  24677. +  * end:
  24678. +  */
  24679. diff -rc --new-file /src/baseline/emacs-18.59/etc/smakefile emacs-18.59/etc/smakefile
  24680. *** /src/baseline/emacs-18.59/etc/smakefile    Thu Jan  1 00:00:00 1970
  24681. --- emacs-18.59/etc/smakefile    Sat Oct  2 15:30:23 1993
  24682. ***************
  24683. *** 0 ****
  24684. --- 1,17 ----
  24685. + all: etags sh wakeup make-docfile # env
  24686. + env: amiga-env.c
  24687. +     echo "'sc link to env nostkchk amiga-env.c' should work (but doesn't)."
  24688. +     echo "You're welcome to try ..."
  24689. + make-docfile: make-docfile.c
  24690. +     sc link make-docfile.c
  24691. + sh: sh.c
  24692. +     sc link sh.c
  24693. + wakeup: wakeup.c
  24694. +     sc link wakeup.c
  24695. + etags: etags.c
  24696. +     sc link idir //unix/include def ETAGS etags.c lib //unix/src/unix.lib
  24697. diff -rc --new-file /src/baseline/emacs-18.59/etc/termcap.amiga emacs-18.59/etc/termcap.amiga
  24698. *** /src/baseline/emacs-18.59/etc/termcap.amiga    Thu Jan  1 00:00:00 1970
  24699. --- emacs-18.59/etc/termcap.amiga    Sun May  9 18:35:58 1993
  24700. ***************
  24701. *** 0 ****
  24702. --- 1,12 ----
  24703. +  Amiga termcap by Kent Polk and David Gay
  24704. + AA|amiga|Amiga ANSI:\
  24705. +    :co#80:li#23:am:bs:bw:MT:\
  24706. +    :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\
  24707. +    :LE=\E[%dD:RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:\
  24708. +    :ae=\017:al=\E[L:as=\016:bl=\007:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[J:\
  24709. +    :cm=\E[%i%d;%dH:dc=\E[P:dl=\E[M:do=\E[B:ho=\E[H:ic=\E[@:is=\E[20l:\
  24710. +    :k1=\E0~:k2=\E1~:k3=\E2~:k4=\E3~:k5=\E4~:k6=\E5~:k7=\E6~:k8=\E7~:k9=\E8~:\
  24711. +    :k0=\E9~:kb=^H:kd=\EB:kl=\ED:kr=\EC:ku=\EA:le=\E[D:\
  24712. +    :mb=\E[7;2m:md=\E[1m:me=\E[0m:mh=\E[2m:mk=\E[8m:mr=\E[7m:nd=\E[C:nl=\E[B:\
  24713. +    :rs=\Ec:se=\E[0m:sf=\E[S:so=\E[7m:sr=\E[T:ue=\E[0m:up=\E[A:us=\E[4m:\
  24714. +    :ve=\E[\040p:vi=\E[\060\040p:xn:
  24715. diff -rc --new-file /src/baseline/emacs-18.59/etc/wakeup.c emacs-18.59/etc/wakeup.c
  24716. *** /src/baseline/emacs-18.59/etc/wakeup.c    Tue Jul 30 17:03:39 1991
  24717. --- emacs-18.59/etc/wakeup.c    Sun May  9 18:36:20 1993
  24718. ***************
  24719. *** 18,28 ****
  24720. --- 18,34 ----
  24721.   
  24722.     while (1)
  24723.       {
  24724. + #ifdef AMIGA
  24725. +       if (Write(Output(), "Wake up!\n", 9) != 9) exit(0);
  24726. +       chkabort();
  24727. + #define sleep(n) Delay(50 * (n))
  24728. + #else
  24729.         /* Make sure wakeup stops when Emacs goes away.  */
  24730.         if (getppid () == 1)
  24731.       exit (0);
  24732.         printf ("Wake up!\n");
  24733.         fflush (stdout);
  24734. + #endif
  24735.         /* If using a period of 60, produce the output when the minute
  24736.        changes. */
  24737.         if (period == 60)
  24738. diff -rc --new-file /src/baseline/emacs-18.59/lisp/amiga-init.el emacs-18.59/lisp/amiga-init.el
  24739. *** /src/baseline/emacs-18.59/lisp/amiga-init.el    Thu Jan  1 00:00:00 1970
  24740. --- emacs-18.59/lisp/amiga-init.el    Sat Jun  5 11:35:42 1993
  24741. ***************
  24742. *** 0 ****
  24743. --- 1,206 ----
  24744. + (global-set-key "\C-z" 'amiga-iconify)
  24745. + (setq amiga-map (make-keymap))
  24746. + (global-set-key "\C-x\C-^" amiga-map)
  24747. + (load "amiga-mouse")
  24748. + (load "amiga-menu")
  24749. + (define-key amiga-map "A" 'previous-line)
  24750. + (define-key amiga-map "B" 'next-line)
  24751. + (define-key amiga-map "D" 'backward-char)
  24752. + (define-key amiga-map "C" 'forward-char)
  24753. + (define-key amiga-map "?~" 'info)
  24754. + (define-key amiga-map "T" 'scroll-down)
  24755. + (define-key amiga-map "S" 'scroll-up)
  24756. + (define-key amiga-map " @" 'forward-word)
  24757. + (define-key amiga-map " A" 'backward-word)
  24758. + (define-key amiga-map "\M-A" 'beginning-of-buffer)
  24759. + (define-key amiga-map "\M-B" 'end-of-buffer)
  24760. + (define-key amiga-map "\M-D" 'beginning-of-line)
  24761. + (define-key amiga-map "\M-C" 'end-of-line)
  24762. + (define-key amiga-map "\M- \M-@" 'forward-sexp)
  24763. + (define-key amiga-map "\M- \M-A" 'backward-sexp)
  24764. + (define-key amiga-map "\M-T" 'scroll-down-1)
  24765. + (define-key amiga-map "\M-S" 'scroll-up-1)
  24766. + ; Keypad sequences are handled like normal ones
  24767. + (define-key amiga-map "K" 'do-nothing)
  24768. + (defun do-nothing () (interactive))
  24769. + (defun scroll-down-1 ()
  24770. +   "Move up one line on screen"
  24771. +   (interactive)
  24772. +   (scroll-down 1))
  24773. + (defun scroll-up-1 ()
  24774. +   "Move down one line on screen"
  24775. +   (interactive)
  24776. +   (scroll-up 1))
  24777. + ;; ARexx stuff
  24778. + ;;; This function needs to be re-written to handle rexx returned results.
  24779. + ;;;
  24780. + (setq amiga-arexx-processing nil)
  24781. + (setq amiga-arexx-errors nil)
  24782. + (defvar amiga-arexx-failat 5
  24783. +   "Return level from which arexx commands returns cause errors")
  24784. + ;;
  24785. + ;; process incoming rexx messages
  24786. + ;;
  24787. + (defun amiga-arexx-process ()
  24788. +   (interactive)
  24789. +   (if (not amiga-arexx-processing)
  24790. +       (progn
  24791. +     (setq amiga-arexx-processing t)
  24792. +     (condition-case nil ; Avoid blocking of processing in case of bugs
  24793. +         (let (arexxcmd)
  24794. +           (while (setq arexxcmd (amiga-arexx-get-next-msg))
  24795. +         (let ((rc 0) result)
  24796. +           (condition-case err ; detect errors in arexx command
  24797. +               (let ((expr (car (read-from-string arexxcmd))))
  24798. +             (setq result (prin1-to-string (eval expr))))
  24799. +             (error (progn
  24800. +                  (setq rc 20)
  24801. +                  (setq result (prin1-to-string err)))))
  24802. +           (amiga-arexx-reply rc result))))
  24803. +       (error nil))
  24804. +     (setq amiga-arexx-processing nil))))
  24805. + (defun amiga-arexx-wait-command (id)
  24806. +   "Waits for a pending ARexx commands (MSGID) to complete.
  24807. + Also processes any pending ARexx requests during this interval.
  24808. + returns the result list associated with this id, which takes the
  24809. + form: (msgid result-code error-or-string)
  24810. + ``error-or-string'' depends on ``result-code''.
  24811. + if ``result-code'' is 0 the command finished successfully and
  24812. + ``error-or-string'' will be a string or nil, otherwise the command
  24813. + returned with an error and ``error-or-string'' will be an interger
  24814. + that is the secondary error code of the arexx command."
  24815. +   (amiga-arexx-process)
  24816. +   (while (not (amiga-arexx-check-command id))
  24817. +     (amiga-arexx-wait)
  24818. +     (amiga-arexx-process))
  24819. +   (amiga-arexx-get-msg-results id))
  24820. + (defconst amiga-arexx-error-messages
  24821. + ["No cause"
  24822. + "Program not found"
  24823. + "Execution halted"
  24824. + "Insufficient memory"
  24825. + "Invalid character"
  24826. + "Unmatched quote"
  24827. + "Unterminated comment"
  24828. + "Clause too long"
  24829. + "Invalid token"
  24830. + "Symbol or string too long"
  24831. + "Invalid message packet"
  24832. + "Command string error"
  24833. + "Error return from function"
  24834. + "Host environment not found"
  24835. + "Requested library not found"
  24836. + "Function not found"
  24837. + "Function did not return value"
  24838. + "Wrong number of arguments"
  24839. + "Invalid argument to function"
  24840. + "Invalid PROCEDURE"
  24841. + "Unexpected THEN or WHEN"
  24842. + "Unexpected ELSE or OTHERWISE"
  24843. + "Unexpected BREAK, LEAVE or ITERATE"
  24844. + "Invalid statement in SELECT"
  24845. + "Missing or multiple THEN"
  24846. + "Missing OTHERWISE"
  24847. + "Missing or unexpected END"
  24848. + "Symbol mismatch"
  24849. + "Invalid DO syntax"
  24850. + "Incomplete IF or SELECT"
  24851. + "Label not found"
  24852. + "Symbol expected"
  24853. + "Symbol or string expected"
  24854. + "Invalid keyword"
  24855. + "Required keyword missing"
  24856. + "Extraneous characters"
  24857. + "Keyword conflict"
  24858. + "Invalid template"
  24859. + "Invalid TRACE request"
  24860. + "Unitialized variable"
  24861. + "Invalid variable name"
  24862. + "Invalid expression"
  24863. + "Unbalanced parentheses"
  24864. + "Nesting limit exceeded"
  24865. + "Invalid expression result"
  24866. + "Expression required"
  24867. + "Boolean value not 0 or 1"
  24868. + "Arithmetic conversion error"
  24869. + "Invalid operand"
  24870. + ]
  24871. + "The arexx error messages, sorted by number")
  24872. + (defun amiga-arexx-do-command (str as-file)
  24873. +   "Sends ARexx command STR (like amiga-arexx-send-command).
  24874. + If AS-FILE is true, STR is an arexx command, otherwise it is a file name.
  24875. + Waits for the command to return.  If the arexx command fails an error will
  24876. + be caused.
  24877. + If you would like to get result strings and errors (ie. not cause
  24878. + a lisp error) use: (amiga-arexx-do-command-with-results)"
  24879. +   (interactive "sARexx command:
  24880. + P")
  24881. +   (let ((id (amiga-arexx-send-command str as-file)))
  24882. +     (if (not id)
  24883. +     (error "Failed to send arexx command.")
  24884. +       (let ((reslist (amiga-arexx-wait-command id)))
  24885. +     (let ((rc (nth 1 reslist)) (second (nth 2 reslist)))
  24886. +       (if (> rc 0)
  24887. +           (progn            ; error
  24888. +         (let ((error-message
  24889. +                (if (< second (length amiga-arexx-error-messages))
  24890. +              (aref amiga-arexx-error-messages second)
  24891. +              (format nil "Unknown error %d" second))))
  24892. +           (error "Arexx command failed, level %d, cause %s" rc error-message))
  24893. +         reslist)
  24894. +       second))))))
  24895. + (defun amiga-arexx-do-command-with-results (str as-file)
  24896. +   "Sends ARexx command STR (like amiga-arexx-do-command).
  24897. + If AS-FILE is true, STR is an arexx command, otherwise it is a file name.
  24898. + Waits for the command to return.
  24899. + The return value is one of three things:
  24900. +  - the command executed succesfully: nil or a result string.
  24901. +  - the command failed: a list of the form (RC ERROR-CODE)
  24902. +    where RC is the severity and ERROR-CODE is the secondary error."
  24903. +   (interactive "sARexx command:
  24904. + P")
  24905. +   (let ((id (amiga-arexx-send-command str as-file)))
  24906. +     (if (not id)
  24907. +     (error "Failed to send arexx command.")
  24908. +       (let ((reslist (amiga-arexx-wait-command id)))
  24909. +     (let ((rc (nth 1 reslist)) (second (nth 2 reslist)))
  24910. +       (if (and rc (> rc 0))
  24911. +           (list rc second)
  24912. +         second))))))
  24913. + (define-key amiga-map "X" 'amiga-arexx-process)
  24914. + (setq amiga-arexx-initialized t) ;; ARexx commands can now be processed.
  24915. + (defun amiga-wb-process ()
  24916. +   "Process all pending workbench events, ie load all files requested"
  24917. +   (interactive)
  24918. +   (let (file)
  24919. +     (condition-case nil
  24920. +     (while (setq file (amiga-get-wb-event t))
  24921. +       (condition-case nil
  24922. +           (find-file file)
  24923. +         (error nil)))
  24924. +       (error nil))))
  24925. + (define-key amiga-map "W" 'amiga-wb-process)
  24926. + (setq amiga-wb-initialized t) ;; WB events can now be processed.
  24927. + (setq completion-ignore-case t)
  24928. + ;; Default is no numbered versions on Amiga, because directory searches are too
  24929. + ;; slow.
  24930. + (setq version-control 'never)
  24931. Binary files /src/baseline/emacs-18.59/lisp/amiga-init.elc and emacs-18.59/lisp/amiga-init.elc differ
  24932. diff -rc --new-file /src/baseline/emacs-18.59/lisp/amiga-menu.el emacs-18.59/lisp/amiga-menu.el
  24933. *** /src/baseline/emacs-18.59/lisp/amiga-menu.el    Thu Jan  1 00:00:00 1970
  24934. --- emacs-18.59/lisp/amiga-menu.el    Sat Nov 21 16:13:18 1992
  24935. ***************
  24936. *** 0 ****
  24937. --- 1,135 ----
  24938. + ;(provide 'amiga-menu)
  24939. + (defconst amiga-menu-pick (char-to-string 3))
  24940. + (defconst amiga-menu-help (char-to-string 7))
  24941. + (defvar amiga-menus-description nil
  24942. +   "Variable containing the menus setup for Emacs")
  24943. + (defun amiga-menus-set (menus)
  24944. +   "Setup menus for emacs (parameter as for amiga-menus)"
  24945. +   (define-key mouse-map amiga-menu-pick 'amiga-menus-dispatch)
  24946. +   (define-key mouse-map amiga-menu-help 'amiga-menus-help)
  24947. +   (setq amiga-menus-description menus)
  24948. +   (amiga-menus menus))
  24949. + (defun amiga-menus-dispatch (selection)
  24950. +   (let* ((menu (car selection))
  24951. +      (item (cadr selection))
  24952. +      (code (cadr (nth item (cadr (nth menu amiga-menus-description))))))
  24953. +     (if (and (listp code) (eq (car code) 'call-interactively)
  24954. +          (listp (cadr code)) (eq (car (cadr code)) 'quote))
  24955. +     (setq this-command (cadr (cadr code))))
  24956. +     (eval code)))
  24957. + (defun amiga-menus-help (selection)
  24958. +   (let* ((menu (car selection))
  24959. +      (item (cadr selection))
  24960. +      (cmd (cadr (nth item (cadr (nth menu amiga-menus-description))))))
  24961. +     (if (and (listp cmd) (eq (car cmd) 'call-interactively)
  24962. +          (listp (car (cdr cmd))) (eq (car (car (cdr cmd))) 'quote))
  24963. +     (describe-function (car (cdr (car (cdr cmd)))))
  24964. +     (error "Don't know how to describe %s" cmd))))
  24965. + (defun make-explicit-string (str)
  24966. +   (if (and (>= (length str) 2) (= (elt str 0) 27) (< (elt str 1) 128))
  24967. +       (key-description (concat (char-to-string (+ 128 (elt str 1)))
  24968. +                    (substring str 2)))
  24969. +       (key-description str)))
  24970. + (defun make-command-name (command str width)
  24971. +   (let ((keys (where-is-internal command nil t))
  24972. +     (string (if str str (symbol-name command))))
  24973. +     (if keys
  24974. +     (format (if width (format "%%-%ds%%s" (+ width 2)) "%s (%s)")
  24975. +         string (make-explicit-string keys))
  24976. +     string)))
  24977. + (defun menu-items (commands proportional)
  24978. +   (let* ((width (if proportional nil 0))
  24979. +      (names (mapcar
  24980. +          (function (lambda (cmd)
  24981. +                  (if cmd
  24982. +                  (let* ((name (if (symbolp cmd)
  24983. +                           (symbol-name cmd)
  24984. +                           (car cmd)))
  24985. +                     (len (length name)))
  24986. +                    (if (and (not proportional) (> len width))
  24987. +                        (setq width len))
  24988. +                    name))))
  24989. +          commands)))
  24990. +     (mapcar
  24991. +      (function (lambda (cmd)
  24992. +          (let ((name (car names)))
  24993. +            (setq names (cdr names))
  24994. +            (if cmd
  24995. +                (let ((command (if (symbolp cmd) cmd (cadr cmd))))
  24996. +              (list (make-command-name command name width)
  24997. +                    (list 'call-interactively (list 'quote command))
  24998. +                    (caddr cmd)))))))
  24999. +      commands)))
  25000. + (defun convert-menu-buffer (proportional)
  25001. +   "Convert the current buffer into a loadable menu file for emacs.\n\
  25002. + If PROPORTIONAL is true (or if a prefix arg is given), assume menu is in a \n\
  25003. + proportional font & present it differently."
  25004. +   (interactive "P")
  25005. +   (save-buffer)
  25006. +   (widen)
  25007. +   (goto-char 1)
  25008. +   (let ((menu-spec (reverse (read (current-buffer))))
  25009. +     menu-code)
  25010. +     (while menu-spec
  25011. +       (let ((menu-item (car menu-spec)))
  25012. +     (setq menu-code
  25013. +           (cons (list (car menu-item)
  25014. +               (menu-items (cdr menu-item) proportional))
  25015. +             menu-code))
  25016. +     (setq menu-spec (cdr menu-spec))))
  25017. +     (let ((new-buf
  25018. +        (find-file (concat
  25019. +                (substring (buffer-file-name) 0
  25020. +                   (string-match "\\.menu$" (buffer-file-name)))
  25021. +                ".el"))))
  25022. +       (erase-buffer)
  25023. +       (prin1 (list 'amiga-menus-set (list 'quote menu-code)) (current-buffer))
  25024. +       (beginning-of-buffer))))
  25025. + (defvar menu-mode-syntax-table nil
  25026. +   "Syntax table used while in menu mode.")
  25027. + (defvar menu-mode-abbrev-table nil
  25028. +   "Abbrev table used while in menu mode.")
  25029. + (define-abbrev-table 'menu-mode-abbrev-table ())
  25030. + (if menu-mode-syntax-table
  25031. +     ()
  25032. +   (setq menu-mode-syntax-table (make-syntax-table))
  25033. +   (modify-syntax-entry ?' "w   " menu-mode-syntax-table))
  25034. + (defvar menu-mode-map ())
  25035. + (if menu-mode-map
  25036. +     ()
  25037. +   (setq menu-mode-map (make-sparse-keymap))
  25038. +   (define-key menu-mode-map "\t" 'indent-relative)
  25039. +   (define-key menu-mode-map "\C-c\C-c" 'convert-menu-buffer))
  25040. + (defun menu-mode ()
  25041. +   "Major mode for editing menus intended for humans to read.
  25042. + Indentation works like in indented-text-mode. This could be improved.\\{menu-mode-map}
  25043. + Turning on menu-mode calls the value of the variable menu-mode-hook,
  25044. + if that value is non-nil."
  25045. +   (interactive)
  25046. +   (kill-all-local-variables)
  25047. +   (use-local-map menu-mode-map)
  25048. +   (define-abbrev-table 'menu-mode-abbrev-table ())
  25049. +   (setq local-abbrev-table menu-mode-abbrev-table)
  25050. +   (set-syntax-table menu-mode-syntax-table)
  25051. +   (make-local-variable 'indent-line-function)
  25052. +   (setq indent-line-function 'indent-relative-maybe)
  25053. +   (use-local-map menu-mode-map)
  25054. +   (setq mode-name "Menu")
  25055. +   (setq major-mode 'menu-mode)
  25056. +   (run-hooks 'menu-mode-hook))
  25057. + (setq auto-mode-alist (cons '("\\.menu$" . menu-mode) auto-mode-alist))
  25058. Binary files /src/baseline/emacs-18.59/lisp/amiga-menu.elc and emacs-18.59/lisp/amiga-menu.elc differ
  25059. diff -rc --new-file /src/baseline/emacs-18.59/lisp/amiga-mouse.el emacs-18.59/lisp/amiga-mouse.el
  25060. *** /src/baseline/emacs-18.59/lisp/amiga-mouse.el    Thu Jan  1 00:00:00 1970
  25061. --- emacs-18.59/lisp/amiga-mouse.el    Sat Nov 21 16:13:20 1992
  25062. ***************
  25063. *** 0 ****
  25064. --- 1,276 ----
  25065. + ;; Mouse support for Amiga Intuition window system.
  25066. + ;; Copyright (C) 1985, 1987 Free Software Foundation, Inc.
  25067. + ;; This file is part of GNU Emacs.
  25068. + ;; GNU Emacs is distributed in the hope that it will be useful,
  25069. + ;; but WITHOUT ANY WARRANTY.  No author or distributor
  25070. + ;; accepts responsibility to anyone for the consequences of using it
  25071. + ;; or for whether it serves any particular purpose or works at all,
  25072. + ;; unless he says so in writing.  Refer to the GNU Emacs General Public
  25073. + ;; License for full details.
  25074. + ;; Everyone is granted permission to copy, modify and redistribute
  25075. + ;; GNU Emacs, but only under the conditions described in the
  25076. + ;; GNU Emacs General Public License.   A copy of this license is
  25077. + ;; supposed to have been given to you along with GNU Emacs so you
  25078. + ;; can know your rights and responsibilities.  It should be in a
  25079. + ;; file named COPYING.  Among other things, the copyright notice
  25080. + ;; and this notice must be preserved on all copies.
  25081. + (provide 'amiga-mouse)
  25082. + (defconst amiga-button-right (char-to-string 0))
  25083. + (defconst amiga-button-middle (char-to-string 1))
  25084. + (defconst amiga-button-left (char-to-string 2))
  25085. + (defconst amiga-button-right-up (char-to-string 4))
  25086. + (defconst amiga-button-middle-up (char-to-string 5))
  25087. + (defconst amiga-button-left-up (char-to-string 6))
  25088. + (defconst amiga-button-s-right (char-to-string 16))
  25089. + (defconst amiga-button-s-middle (char-to-string 17))
  25090. + (defconst amiga-button-s-left (char-to-string 18))
  25091. + (defconst amiga-button-s-right-up (char-to-string 20))
  25092. + (defconst amiga-button-s-middle-up (char-to-string 21))
  25093. + (defconst amiga-button-s-left-up (char-to-string 22))
  25094. + (defconst amiga-button-m-right (char-to-string 32))
  25095. + (defconst amiga-button-m-middle (char-to-string 33))
  25096. + (defconst amiga-button-m-left (char-to-string 34))
  25097. + (defconst amiga-button-m-right-up (char-to-string 36))
  25098. + (defconst amiga-button-m-middle-up (char-to-string 37))
  25099. + (defconst amiga-button-m-left-up (char-to-string 38))
  25100. + (defconst amiga-button-c-right (char-to-string 64))
  25101. + (defconst amiga-button-c-middle (char-to-string 65))
  25102. + (defconst amiga-button-c-left (char-to-string 66))
  25103. + (defconst amiga-button-c-right-up (char-to-string 68))
  25104. + (defconst amiga-button-c-middle-up (char-to-string 69))
  25105. + (defconst amiga-button-c-left-up (char-to-string 70))
  25106. + (defconst amiga-button-m-s-right (char-to-string 48))
  25107. + (defconst amiga-button-m-s-middle (char-to-string 49))
  25108. + (defconst amiga-button-m-s-left (char-to-string 50))
  25109. + (defconst amiga-button-m-s-right-up (char-to-string 52))
  25110. + (defconst amiga-button-m-s-middle-up (char-to-string 53))
  25111. + (defconst amiga-button-m-s-left-up (char-to-string 54))
  25112. + (defconst amiga-button-c-s-right (char-to-string 80))
  25113. + (defconst amiga-button-c-s-middle (char-to-string 81))
  25114. + (defconst amiga-button-c-s-left (char-to-string 82))
  25115. + (defconst amiga-button-c-s-right-up (char-to-string 84))
  25116. + (defconst amiga-button-c-s-middle-up (char-to-string 85))
  25117. + (defconst amiga-button-c-s-left-up (char-to-string 86))
  25118. + (defconst amiga-button-c-m-right (char-to-string 96))
  25119. + (defconst amiga-button-c-m-middle (char-to-string 97))
  25120. + (defconst amiga-button-c-m-left (char-to-string 98))
  25121. + (defconst amiga-button-c-m-right-up (char-to-string 100))
  25122. + (defconst amiga-button-c-m-middle-up (char-to-string 101))
  25123. + (defconst amiga-button-c-m-left-up (char-to-string 102))
  25124. + (defconst amiga-button-c-m-s-right (char-to-string 112))
  25125. + (defconst amiga-button-c-m-s-middle (char-to-string 113))
  25126. + (defconst amiga-button-c-m-s-left (char-to-string 114))
  25127. + (defconst amiga-button-c-m-s-right-up (char-to-string 116))
  25128. + (defconst amiga-button-c-m-s-middle-up (char-to-string 117))
  25129. + (defconst amiga-button-c-m-s-left-up (char-to-string 118))
  25130. + (defmacro cadr (x) (list 'car (list 'cdr x)))
  25131. + (defmacro caddr (x) (list 'car (list 'cdr (list 'cdr x))))
  25132. + (defmacro cadddr (x) (list 'car (list 'cdr (list 'cdr (list 'cdr x)))))
  25133. + (defun coordinates-in-window-p (arg w)
  25134. +   (let ((x (car arg))
  25135. +     (y (cadr arg))
  25136. +     (edges (window-edges w)))
  25137. +     (and (>= x (car edges)) (< x (caddr edges))
  25138. +      (>= y (cadr edges)) (< y (cadddr edges))
  25139. +      (list (- x (car edges)) (- y (cadr edges))))))
  25140. + (defvar amiga-process-mouse-hook nil
  25141. +   "Hook to run after each mouse event is processed.  Should take two
  25142. + arguments; the first being a list (XPOS YPOS) corresponding to character
  25143. + offset from top left of screen and the second being a specifier for the
  25144. + buttons/keys.
  25145. + This will normally be set on a per-buffer basis.")
  25146. + (defun amiga-flush-mouse-queue () 
  25147. +   "Process all queued mouse events."
  25148. +   ;; A mouse event causes a special character sequence to be given
  25149. +   ;; as keyboard input.  That runs this function, which process all
  25150. +   ;; queued mouse events and returns.
  25151. +   (interactive)
  25152. +   (while (> (amiga-mouse-events) 0)
  25153. +     (amiga-proc-mouse-event)
  25154. +     (and (boundp 'amiga-process-mouse-hook)
  25155. +      (symbol-value 'amiga-process-mouse-hook)
  25156. +      (funcall amiga-process-mouse-hook amiga-mouse-pos amiga-mouse-item))))
  25157. + (defun amiga-mouse-select (arg)
  25158. +   "Select Emacs window the mouse is on."
  25159. +   (let ((start-w (selected-window))
  25160. +     (done nil)
  25161. +     (w (selected-window))
  25162. +     (rel-coordinate nil))
  25163. +     (if (eq start-w (minibuffer-window))
  25164. +     (setq rel-coordinate (coordinates-in-window-p arg w))
  25165. +     (while (and (not done)
  25166. +             (null (setq rel-coordinate
  25167. +                 (coordinates-in-window-p arg w))))
  25168. +       (setq w (next-window w))
  25169. +       (if (eq w start-w)
  25170. +           (setq done t))))
  25171. +     (select-window w)
  25172. +     rel-coordinate))
  25173. + (defun amiga-mouse-keep-one-window (arg)
  25174. +   "Select Emacs window mouse is on, then kill all other Emacs windows."
  25175. +   (if (amiga-mouse-select arg)
  25176. +       (delete-other-windows)))
  25177. + (defun amiga-mouse-select-and-split (arg)
  25178. +   "Select Emacs window mouse is on, then split it vertically in half."
  25179. +   (if (amiga-mouse-select arg)
  25180. +       (split-window-vertically nil)))
  25181. + (defun amiga-mouse-set-point (arg)
  25182. +   "Select Emacs window mouse is on, and move point to mouse position."
  25183. +   (let* ((relative-coordinate (amiga-mouse-select arg))
  25184. +      margin-column
  25185. +      (rel-x (car relative-coordinate))
  25186. +      (rel-y (car (cdr relative-coordinate))))
  25187. +     (if relative-coordinate
  25188. +     (let ((prompt-width (if (eq (selected-window) (minibuffer-window))
  25189. +                 minibuffer-prompt-width 0)))
  25190. +       (move-to-window-line rel-y)
  25191. +       (setq margin-column
  25192. +         (if (or truncate-lines (> (window-hscroll) 0))
  25193. +             (current-column)
  25194. +           ;; If we are using line continuation,
  25195. +           ;; compensate if first character on a continuation line
  25196. +           ;; does not start precisely at the margin.
  25197. +           (- (current-column)
  25198. +              (% (current-column) (1- (window-width))))))
  25199. +       (move-to-column (+ rel-x (1- (max 1 (window-hscroll)))
  25200. +                  (if (= (point) 1)
  25201. +                  (- prompt-width) 0)
  25202. +                  margin-column))))))
  25203. + (defun amiga-mouse-set-mark (arg)
  25204. +   "Select Emacs window mouse is on, and set mark at mouse position.
  25205. + Display cursor at that position for a second."
  25206. +   (if (amiga-mouse-select arg)
  25207. +       (let ((point-save (point)))
  25208. +     (unwind-protect
  25209. +         (progn (amiga-mouse-set-point arg)
  25210. +            (push-mark nil t)
  25211. +            (sit-for 1))
  25212. +       (goto-char point-save)))))
  25213. + (defun amiga-mouse-cut (arg)
  25214. +   "Select Emacs window mouse is on, and set mark at mouse position. 
  25215. + Display cursor at that position for a second. Then cut."
  25216. +   (if (amiga-mouse-select arg)
  25217. +       (let ((point-save (point)))
  25218. +     (unwind-protect
  25219. +         (progn (amiga-mouse-set-point arg)
  25220. +            (push-mark nil t)
  25221. +            (kill-region point-save (point))
  25222. +            (sit-for 1))
  25223. +       (goto-char point-save)))))
  25224. + (defun amiga-mouse-copy (arg)
  25225. +   "Select Emacs window mouse is on, and set mark at mouse position. 
  25226. + Display cursor at that position for a second. Then copy."
  25227. +   (if (amiga-mouse-select arg)
  25228. +       (let ((point-save (point)))
  25229. +     (unwind-protect
  25230. +         (progn (amiga-mouse-set-point arg)
  25231. +            (push-mark nil t)
  25232. +            (copy-region-as-kill point-save (point))
  25233. +            (sit-for 1))
  25234. +       (goto-char point-save)))))
  25235. + (defun amiga-mouse-paste (arg)
  25236. +   "Move point to mouse position (and select window), then paste."
  25237. +   (if (amiga-mouse-select arg)
  25238. +       (progn
  25239. +     (amiga-mouse-set-point arg)
  25240. +     (yank))))
  25241. + (defun amiga-mouse-iconify (arg) (amiga-iconify))
  25242. + (defun amiga-mouse-ignore (arg)
  25243. +   "Don't do anything.")
  25244. + ; Prevent beeps. on button-up.  If the button isn't bound to anything, it
  25245. + (define-key mouse-map amiga-button-right 'amiga-mouse-ignore)
  25246. + (define-key mouse-map amiga-button-middle 'amiga-mouse-ignore)
  25247. + (define-key mouse-map amiga-button-left 'amiga-mouse-ignore)
  25248. + (define-key mouse-map amiga-button-right-up 'amiga-mouse-ignore)
  25249. + (define-key mouse-map amiga-button-middle-up 'amiga-mouse-ignore)
  25250. + (define-key mouse-map amiga-button-left-up 'amiga-mouse-ignore)
  25251. + (define-key mouse-map amiga-button-s-right 'amiga-mouse-ignore)
  25252. + (define-key mouse-map amiga-button-s-middle 'amiga-mouse-ignore)
  25253. + (define-key mouse-map amiga-button-s-left 'amiga-mouse-ignore)
  25254. + (define-key mouse-map amiga-button-s-right-up 'amiga-mouse-ignore)
  25255. + (define-key mouse-map amiga-button-s-middle-up 'amiga-mouse-ignore)
  25256. + (define-key mouse-map amiga-button-s-left-up 'amiga-mouse-ignore)
  25257. + (define-key mouse-map amiga-button-m-right 'amiga-mouse-ignore)
  25258. + (define-key mouse-map amiga-button-m-middle 'amiga-mouse-ignore)
  25259. + (define-key mouse-map amiga-button-m-left 'amiga-mouse-ignore)
  25260. + (define-key mouse-map amiga-button-m-right-up 'amiga-mouse-ignore)
  25261. + (define-key mouse-map amiga-button-m-middle-up 'amiga-mouse-ignore)
  25262. + (define-key mouse-map amiga-button-m-left-up 'amiga-mouse-ignore)
  25263. + (define-key mouse-map amiga-button-c-right 'amiga-mouse-ignore)
  25264. + (define-key mouse-map amiga-button-c-middle 'amiga-mouse-ignore)
  25265. + (define-key mouse-map amiga-button-c-left 'amiga-mouse-ignore)
  25266. + (define-key mouse-map amiga-button-c-right-up 'amiga-mouse-ignore)
  25267. + (define-key mouse-map amiga-button-c-middle-up 'amiga-mouse-ignore)
  25268. + (define-key mouse-map amiga-button-c-left-up 'amiga-mouse-ignore)
  25269. + (define-key mouse-map amiga-button-m-s-right 'amiga-mouse-ignore)
  25270. + (define-key mouse-map amiga-button-m-s-middle 'amiga-mouse-ignore)
  25271. + (define-key mouse-map amiga-button-m-s-left 'amiga-mouse-ignore)
  25272. + (define-key mouse-map amiga-button-m-s-right-up 'amiga-mouse-ignore)
  25273. + (define-key mouse-map amiga-button-m-s-middle-up 'amiga-mouse-ignore)
  25274. + (define-key mouse-map amiga-button-m-s-left-up 'amiga-mouse-ignore)
  25275. + (define-key mouse-map amiga-button-c-s-right 'amiga-mouse-ignore)
  25276. + (define-key mouse-map amiga-button-c-s-middle 'amiga-mouse-ignore)
  25277. + (define-key mouse-map amiga-button-c-s-left 'amiga-mouse-ignore)
  25278. + (define-key mouse-map amiga-button-c-s-right-up 'amiga-mouse-ignore)
  25279. + (define-key mouse-map amiga-button-c-s-middle-up 'amiga-mouse-ignore)
  25280. + (define-key mouse-map amiga-button-c-s-left-up 'amiga-mouse-ignore)
  25281. + (define-key mouse-map amiga-button-c-m-right 'amiga-mouse-ignore)
  25282. + (define-key mouse-map amiga-button-c-m-middle 'amiga-mouse-ignore)
  25283. + (define-key mouse-map amiga-button-c-m-left 'amiga-mouse-ignore)
  25284. + (define-key mouse-map amiga-button-c-m-right-up 'amiga-mouse-ignore)
  25285. + (define-key mouse-map amiga-button-c-m-middle-up 'amiga-mouse-ignore)
  25286. + (define-key mouse-map amiga-button-c-m-left-up 'amiga-mouse-ignore)
  25287. + (define-key mouse-map amiga-button-c-m-s-right 'amiga-mouse-ignore)
  25288. + (define-key mouse-map amiga-button-c-m-s-middle 'amiga-mouse-ignore)
  25289. + (define-key mouse-map amiga-button-c-m-s-left 'amiga-mouse-ignore)
  25290. + (define-key mouse-map amiga-button-c-m-s-right-up 'amiga-mouse-ignore)
  25291. + (define-key mouse-map amiga-button-c-m-s-middle-up 'amiga-mouse-ignore)
  25292. + (define-key mouse-map amiga-button-c-m-s-left-up 'amiga-mouse-ignore)
  25293. + ; Define a few events
  25294. + (define-key mouse-map amiga-button-left 'amiga-mouse-set-point)
  25295. + (define-key mouse-map amiga-button-s-left 'amiga-mouse-set-mark)
  25296. + (define-key mouse-map amiga-button-c-left 'amiga-mouse-cut)
  25297. + (define-key mouse-map amiga-button-m-left 'amiga-mouse-copy)
  25298. + (define-key mouse-map amiga-button-middle 'amiga-mouse-paste)
  25299. + (define-key mouse-map amiga-button-s-middle 'amiga-mouse-iconify)
  25300. + (define-key amiga-map "M" 'amiga-flush-mouse-queue)
  25301. + (setq amiga-mouse-initialized t)  ;; Mouse commands can now be processed.
  25302. Binary files /src/baseline/emacs-18.59/lisp/amiga-mouse.elc and emacs-18.59/lisp/amiga-mouse.elc differ
  25303. diff -rc --new-file /src/baseline/emacs-18.59/lisp/compile.el emacs-18.59/lisp/compile.el
  25304. *** /src/baseline/emacs-18.59/lisp/compile.el    Fri Aug 14 18:53:00 1992
  25305. --- emacs-18.59/lisp/compile.el    Thu Dec 24 17:06:50 1992
  25306. ***************
  25307. *** 43,49 ****
  25308.   ;; The filename excludes colons to avoid confusion when error message
  25309.   ;; starts with digits.
  25310.   (defvar compilation-error-regexp
  25311. !   "\\([^ :\n]+\\(: *\\|, line \\|(\\)[0-9]+\\)\\|\\([0-9]+ *of *[^ \n]+\\)"
  25312.     "Regular expression for filename/linenumber in error in compilation log.")
  25313.   
  25314.   (defun compile (command)
  25315. --- 43,49 ----
  25316.   ;; The filename excludes colons to avoid confusion when error message
  25317.   ;; starts with digits.
  25318.   (defvar compilation-error-regexp
  25319. !   "^\\([^ :\e]+\\([ :] *\\|, line \\|(\\)[0-9]+\\)\\|\\([0-9]+ *of *[^ \n]+\\)"
  25320.     "Regular expression for filename/linenumber in error in compilation log.")
  25321.   
  25322.   (defun compile (command)
  25323. ***************
  25324. *** 61,67 ****
  25325.   While grep runs asynchronously, you can use the \\[next-error] command
  25326.   to find the text that grep hits refer to."
  25327.     (interactive "sRun grep (with args): ")
  25328. !   (compile1 (concat "grep -n " command " /dev/null")
  25329.           "No more grep hits" "grep"))
  25330.   
  25331.   (defun compile1 (command error-message &optional name-of-mode)
  25332. --- 61,68 ----
  25333.   While grep runs asynchronously, you can use the \\[next-error] command
  25334.   to find the text that grep hits refer to."
  25335.     (interactive "sRun grep (with args): ")
  25336. !   (compile1 (concat "grep -n " command (if (eq system-type 'amigados) " nil:"
  25337. !                      " /dev/null"))
  25338.           "No more grep hits" "grep"))
  25339.   
  25340.   (defun compile1 (command error-message &optional name-of-mode)
  25341. ***************
  25342. *** 195,201 ****
  25343.       (let* ((pop-up-windows t)
  25344.          (w (display-buffer (marker-buffer (car next-error)))))
  25345.         (set-window-point w (car next-error))
  25346. !       (set-window-start w (car next-error)))
  25347.       (set-marker (car next-error) nil)))
  25348.   
  25349.   ;; Set compilation-error-list to nil, and
  25350. --- 196,208 ----
  25351.       (let* ((pop-up-windows t)
  25352.          (w (display-buffer (marker-buffer (car next-error)))))
  25353.         (set-window-point w (car next-error))
  25354. !       (if compilation-parse-sasc
  25355. !       (let ((thiswin (selected-window)))
  25356. !         (select-window w)
  25357. !         (vertical-motion -1)
  25358. !         (set-window-start w (point))
  25359. !         (select-window thiswin))
  25360. !     (set-window-start w (car next-error))))
  25361.       (set-marker (car next-error) nil)))
  25362.   
  25363.   ;; Set compilation-error-list to nil, and
  25364. ***************
  25365. *** 222,227 ****
  25366. --- 229,236 ----
  25367.   and visits its location."
  25368.     (setq compilation-error-list nil)
  25369.     (message "Parsing error messages...")
  25370. +   (goto-char (point-min))
  25371. +   (setq compilation-parse-sasc (search-forward "SAS/C" nil t))
  25372.     (let (text-buffer
  25373.       last-filename last-linenum)
  25374.       ;; Don't reparse messages already seen at last parse.
  25375. Binary files /src/baseline/emacs-18.59/lisp/compile.elc and emacs-18.59/lisp/compile.elc differ
  25376. diff -rc --new-file /src/baseline/emacs-18.59/lisp/files.el emacs-18.59/lisp/files.el
  25377. *** /src/baseline/emacs-18.59/lisp/files.el    Sun Oct 11 18:27:38 1992
  25378. --- emacs-18.59/lisp/files.el    Sat Nov 21 16:14:10 1992
  25379. ***************
  25380. *** 141,146 ****
  25381. --- 141,156 ----
  25382.   after you find a file.  If you explicitly request such a scan with
  25383.   \\[normal-mode], there is no query, regardless of this variable.")
  25384.   
  25385. + (defconst backup-char (if (eq system-type 'amigados) "!" "~")
  25386. +   "Character to add to file names to make backup names.")
  25387. + (defconst autosave-char (if (eq system-type 'amigados) "@" "#")
  25388. +   "Character to add to file names to make autosave names.")
  25389. + (defconst bufferfile-char (if (eq system-type 'amigados) "^" "%")
  25390. +   "Character to add to buffer names to make file names.")
  25391.   ;; Avoid losing in versions where CLASH_DETECTION is disabled.
  25392.   (or (fboundp 'lock-buffer)
  25393.       (fset 'lock-buffer 'ignore))
  25394. ***************
  25395. *** 380,386 ****
  25396.         (funcall (intern (concat (downcase mode) "-mode")))
  25397.       (let ((alist auto-mode-alist)
  25398.             (name buffer-file-name))
  25399. !       (let ((case-fold-search (eq system-type 'vax-vms)))
  25400.           ;; Remove backup-suffixes from file name.
  25401.           (setq name (file-name-sans-versions name))
  25402.           ;; Find first matching alist entry.
  25403. --- 390,397 ----
  25404.         (funcall (intern (concat (downcase mode) "-mode")))
  25405.       (let ((alist auto-mode-alist)
  25406.             (name buffer-file-name))
  25407. !       (let ((case-fold-search (or (eq system-type 'amigados)
  25408. !                       (eq system-type 'vax-vms))))
  25409.           ;; Remove backup-suffixes from file name.
  25410.           (setq name (file-name-sans-versions name))
  25411.           ;; Find first matching alist entry.
  25412. ***************
  25413. *** 559,566 ****
  25414.           (setq setmodes (file-modes backupname)))
  25415.           (file-error
  25416.            ;; If trouble writing the backup, write it in ~.
  25417. !          (setq backupname (expand-file-name "~/%backup%~"))
  25418. !          (message "Cannot write backup file; backing up in ~/%%backup%%~")
  25419.            (sleep-for 1)
  25420.            (condition-case ()
  25421.            (delete-file backupname)
  25422. --- 570,580 ----
  25423.           (setq setmodes (file-modes backupname)))
  25424.           (file-error
  25425.            ;; If trouble writing the backup, write it in ~.
  25426. !          (setq backupname
  25427. !            (expand-file-name (concat "~/" bufferfile-char "backup"
  25428. !                          bufferfile-char backup-char)))
  25429. !          (message "Cannot write backup file; backing up in ~/%sbackup%s%s"
  25430. !               bufferfile-char bufferfile-char backup-char)
  25431.            (sleep-for 1)
  25432.            (condition-case ()
  25433.            (delete-file backupname)
  25434. ***************
  25435. *** 588,605 ****
  25436.            (or (string-match ";[0-9]*\\'" name)
  25437.                (and (string-match "\\." name (string-match "[]>]" name))
  25438.                 (string-match "\\.[0-9]*\\'" name (match-end 0))))
  25439. !            (string-match "\\(\\.~[0-9]+\\)?~\\'" name))))
  25440.   
  25441.   (defun make-backup-file-name (file)
  25442.     "Create the non-numeric backup file name for FILE.
  25443.   This is a separate function so you can redefine it for customization."
  25444. !   (concat file "~"))
  25445.   
  25446.   (defun backup-file-name-p (file)
  25447.     "Return non-nil if FILE is a backup file name (numeric or not).
  25448.   This is a separate function so you can redefine it for customization.
  25449.   You may need to redefine file-name-sans-versions as well."
  25450. !   (string-match "~$" file))
  25451.   
  25452.   ;; I believe there is no need to alter this behavior for VMS;
  25453.   ;; since backup files are not made on VMS, it should not get called.
  25454. --- 602,620 ----
  25455.            (or (string-match ";[0-9]*\\'" name)
  25456.                (and (string-match "\\." name (string-match "[]>]" name))
  25457.                 (string-match "\\.[0-9]*\\'" name (match-end 0))))
  25458. !            (string-match (concat "\\(\\." backup-char "[0-9]+\\)?"
  25459. !                      backup-char "\\'") name))))
  25460.   
  25461.   (defun make-backup-file-name (file)
  25462.     "Create the non-numeric backup file name for FILE.
  25463.   This is a separate function so you can redefine it for customization."
  25464. !   (concat file backup-char))
  25465.   
  25466.   (defun backup-file-name-p (file)
  25467.     "Return non-nil if FILE is a backup file name (numeric or not).
  25468.   This is a separate function so you can redefine it for customization.
  25469.   You may need to redefine file-name-sans-versions as well."
  25470. !   (string-match (concat backup-char "$") file))
  25471.   
  25472.   ;; I believe there is no need to alter this behavior for VMS;
  25473.   ;; since backup files are not made on VMS, it should not get called.
  25474. ***************
  25475. *** 609,615 ****
  25476.    and whose cdr is a list of old versions to consider deleting now."
  25477.     (if (eq version-control 'never)
  25478.         (list (make-backup-file-name fn))
  25479. !     (let* ((base-versions (concat (file-name-nondirectory fn) ".~"))
  25480.          (bv-length (length base-versions))
  25481.          (possibilities (file-name-all-completions
  25482.                  base-versions
  25483. --- 624,630 ----
  25484.    and whose cdr is a list of old versions to consider deleting now."
  25485.     (if (eq version-control 'never)
  25486.         (list (make-backup-file-name fn))
  25487. !     (let* ((base-versions (concat (file-name-nondirectory fn) "." backup-char))
  25488.          (bv-length (length base-versions))
  25489.          (possibilities (file-name-all-completions
  25490.                  base-versions
  25491. ***************
  25492. *** 626,645 ****
  25493.                   kept-old-versions kept-new-versions -1)))
  25494.         (if (not deserve-versions-p)
  25495.         (list (make-backup-file-name fn))
  25496. !     (cons (concat fn ".~" (int-to-string (1+ high-water-mark)) "~")
  25497.             (if (and (> number-to-delete 0)
  25498.                  ;; Delete nothing if there is overflow
  25499.                  ;; in the number of versions to keep.
  25500.                  (>= (+ kept-new-versions kept-old-versions -1) 0))
  25501.             (mapcar (function (lambda (n)
  25502. !                       (concat fn ".~"
  25503. !                           (int-to-string n) "~")))
  25504.                 (let ((v (nthcdr kept-old-versions versions)))
  25505.                   (rplacd (nthcdr (1- number-to-delete) v) ())
  25506.                   v))))))))
  25507.   
  25508.   (defun backup-extract-version (fn)
  25509. !   (if (and (string-match "[0-9]+~$" fn bv-length)
  25510.          (= (match-beginning 0) bv-length))
  25511.         (string-to-int (substring fn bv-length -1))
  25512.         0))
  25513. --- 641,661 ----
  25514.                   kept-old-versions kept-new-versions -1)))
  25515.         (if (not deserve-versions-p)
  25516.         (list (make-backup-file-name fn))
  25517. !     (cons (concat fn "." backup-char (int-to-string (1+ high-water-mark))
  25518. !               backup-char)
  25519.             (if (and (> number-to-delete 0)
  25520.                  ;; Delete nothing if there is overflow
  25521.                  ;; in the number of versions to keep.
  25522.                  (>= (+ kept-new-versions kept-old-versions -1) 0))
  25523.             (mapcar (function (lambda (n)
  25524. !                       (concat fn "." backup-char
  25525. !                           (int-to-string n) backup-char)))
  25526.                 (let ((v (nthcdr kept-old-versions versions)))
  25527.                   (rplacd (nthcdr (1- number-to-delete) v) ())
  25528.                   v))))))))
  25529.   
  25530.   (defun backup-extract-version (fn)
  25531. !   (if (and (string-match (concat "[0-9]+" backup-char "$") fn bv-length)
  25532.          (= (match-beginning 0) bv-length))
  25533.         (string-to-int (substring fn bv-length -1))
  25534.         0))
  25535. ***************
  25536. *** 741,747 ****
  25537.                  ;; If file is precious, rename it away before
  25538.                  ;; overwriting it.
  25539.                  (let ((rename t) nodelete
  25540. !                  (file (concat buffer-file-name "#")))
  25541.                (condition-case ()
  25542.                    (progn (rename-file buffer-file-name file t)
  25543.                       (setq setmodes (file-modes file)))
  25544. --- 757,763 ----
  25545.                  ;; If file is precious, rename it away before
  25546.                  ;; overwriting it.
  25547.                  (let ((rename t) nodelete
  25548. !                  (file (concat buffer-file-name autosave-char)))
  25549.                (condition-case ()
  25550.                    (progn (rename-file buffer-file-name file t)
  25551.                       (setq setmodes (file-modes file)))
  25552. ***************
  25553. *** 774,779 ****
  25554. --- 790,798 ----
  25555.                   ;; Change the mode back, after writing.
  25556.                   (setq setmodes (file-modes buffer-file-name))
  25557.                   (set-file-modes buffer-file-name 511)))
  25558. +              (if (eq system-type 'amigados)
  25559. +              (if amiga-create-icons
  25560. +                  (amiga-put-icon buffer-file-name nil)))
  25561.                (write-region (point-min) (point-max) 
  25562.                      buffer-file-name nil t)))))
  25563.         (if setmodes
  25564. ***************
  25565. *** 983,998 ****
  25566.   See also auto-save-file-name-p."
  25567.     (if buffer-file-name
  25568.         (concat (file-name-directory buffer-file-name)
  25569. !           "#"
  25570.             (file-name-nondirectory buffer-file-name)
  25571. !           "#")
  25572. !     (expand-file-name (concat "#%" (buffer-name) "#"))))
  25573.   
  25574.   (defun auto-save-file-name-p (filename)
  25575.     "Return non-nil if FILENAME can be yielded by make-auto-save-file-name.
  25576.   FILENAME should lack slashes.
  25577.   You can redefine this for customization."
  25578. !   (string-match "^#.*#$" filename))
  25579.   
  25580.   (defconst list-directory-brief-switches "-CF"
  25581.     "*Switches for list-directory to pass to `ls' for brief listing,")
  25582. --- 1002,1018 ----
  25583.   See also auto-save-file-name-p."
  25584.     (if buffer-file-name
  25585.         (concat (file-name-directory buffer-file-name)
  25586. !           autosave-char
  25587.             (file-name-nondirectory buffer-file-name)
  25588. !           autosave-char)
  25589. !     (expand-file-name (concat autosave-char bufferfile-char (buffer-name)
  25590. !                   autosave-char))))
  25591.   
  25592.   (defun auto-save-file-name-p (filename)
  25593.     "Return non-nil if FILENAME can be yielded by make-auto-save-file-name.
  25594.   FILENAME should lack slashes.
  25595.   You can redefine this for customization."
  25596. !   (string-match (concat "^" autosave-char ".*" autosave-char "$") filename))
  25597.   
  25598.   (defconst list-directory-brief-switches "-CF"
  25599.     "*Switches for list-directory to pass to `ls' for brief listing,")
  25600. Binary files /src/baseline/emacs-18.59/lisp/files.elc and emacs-18.59/lisp/files.elc differ
  25601. diff -rc --new-file /src/baseline/emacs-18.59/lisp/loadup.el emacs-18.59/lisp/loadup.el
  25602. *** /src/baseline/emacs-18.59/lisp/loadup.el    Wed May 13 15:42:48 1992
  25603. --- emacs-18.59/lisp/loadup.el    Sat Nov 21 16:14:52 1992
  25604. ***************
  25605. *** 28,34 ****
  25606.   (load "simple")
  25607.   (garbage-collect)
  25608.   (load "help")
  25609. - (garbage-collect)
  25610.   (load "files")
  25611.   (garbage-collect)
  25612.   (load "indent")
  25613. --- 28,33 ----
  25614. ***************
  25615. *** 64,69 ****
  25616. --- 63,72 ----
  25617.       (progn
  25618.         (garbage-collect)
  25619.         (load "vms-patch")))
  25620. + (if (eq system-type 'amigados)
  25621. +     (progn
  25622. +       (garbage-collect)
  25623. +       (load "amiga-init")))
  25624.   
  25625.   ;If you want additional libraries to be preloaded and their
  25626.   ;doc strings kept in the DOC file rather than in core,
  25627. diff -rc --new-file /src/baseline/emacs-18.59/lisp/simple.el emacs-18.59/lisp/simple.el
  25628. *** /src/baseline/emacs-18.59/lisp/simple.el    Wed Apr 15 04:13:32 1992
  25629. --- emacs-18.59/lisp/simple.el    Sat Nov 21 16:16:00 1992
  25630. ***************
  25631. *** 539,549 ****
  25632.   (defvar kill-ring-yank-pointer nil
  25633.     "The tail of the kill ring whose car is the last thing yanked.")
  25634.   
  25635.   (defun kill-append (string before-p)
  25636.     (setcar kill-ring
  25637.         (if before-p
  25638.             (concat string (car kill-ring))
  25639. !           (concat (car kill-ring) string))))
  25640.   
  25641.   (defun kill-region (beg end)
  25642.     "Kill between point and mark.
  25643. --- 539,585 ----
  25644.   (defvar kill-ring-yank-pointer nil
  25645.     "The tail of the kill ring whose car is the last thing yanked.")
  25646.   
  25647. + (if (eq system-type 'amigados)
  25648. +     (progn
  25649. +       (defun safe-amiga-paste ()
  25650. +     "Paste from the amiga clipboard, trapping any errors."
  25651. +     (condition-case nil
  25652. +         (amiga-paste)
  25653. +       (error nil)))
  25654. +       (defun check-clipboard ()
  25655. +     "If there is anything new in the clipboard, add it to the emacs kill ring.
  25656. + Returns t if there was something added, nil otherwise."
  25657. +     (let (added)
  25658. +       (if amiga-new-clip
  25659. +           (let ((str (safe-amiga-paste)))
  25660. +         (setq amiga-new-clip nil)
  25661. +         (if str
  25662. +             (progn
  25663. +               (kill-add str)
  25664. +               (setq added t)
  25665. +               (setq kill-ring-yank-pointer kill-ring)))))
  25666. +       added))
  25667. +       (defun update-clipboard (str)
  25668. +     (amiga-cut str)
  25669. +     (setq amiga-new-clip nil)))
  25670. +     (progn ; These could be defined for X-Windows.
  25671. +       (defun check-clipboard () nil)
  25672. +       (defun update-clipboard () nil)))
  25673.   (defun kill-append (string before-p)
  25674.     (setcar kill-ring
  25675.         (if before-p
  25676.             (concat string (car kill-ring))
  25677. !           (concat (car kill-ring) string)))
  25678. !   (update-clipboard (car kill-ring)))
  25679. ! (defun kill-add (string)
  25680. !   (check-clipboard)
  25681. !   (setq kill-ring (cons string kill-ring))
  25682. !   (update-clipboard string)
  25683. !   (if (> (length kill-ring) kill-ring-max)
  25684. !       (setcdr (nthcdr (1- kill-ring-max) kill-ring) nil)))
  25685.   
  25686.   (defun kill-region (beg end)
  25687.     "Kill between point and mark.
  25688. ***************
  25689. *** 571,579 ****
  25690.       (delete-region beg end)
  25691.       ;; Take the same string recorded for undo
  25692.       ;; and put it in the kill-ring.
  25693. !     (setq kill-ring (cons (car (car buffer-undo-list)) kill-ring))
  25694. !     (if (> (length kill-ring) kill-ring-max)
  25695. !         (setcdr (nthcdr (1- kill-ring-max) kill-ring) nil))
  25696.       (setq this-command 'kill-region)
  25697.       (setq kill-ring-yank-pointer kill-ring))
  25698.       (copy-region-as-kill beg end)
  25699. --- 607,613 ----
  25700.       (delete-region beg end)
  25701.       ;; Take the same string recorded for undo
  25702.       ;; and put it in the kill-ring.
  25703. !     (kill-add (car (car buffer-undo-list)))
  25704.       (setq this-command 'kill-region)
  25705.       (setq kill-ring-yank-pointer kill-ring))
  25706.       (copy-region-as-kill beg end)
  25707. ***************
  25708. *** 584,594 ****
  25709.   (defun copy-region-as-kill (beg end)
  25710.     "Save the region as if killed, but don't kill it."
  25711.     (interactive "r")
  25712. !   (if (eq last-command 'kill-region)
  25713.         (kill-append (buffer-substring beg end) (< end beg))
  25714. !     (setq kill-ring (cons (buffer-substring beg end) kill-ring))
  25715. !     (if (> (length kill-ring) kill-ring-max)
  25716. !     (setcdr (nthcdr (1- kill-ring-max) kill-ring) nil)))
  25717.     (setq this-command 'kill-region)
  25718.     (setq kill-ring-yank-pointer kill-ring))
  25719.   
  25720. --- 618,626 ----
  25721.   (defun copy-region-as-kill (beg end)
  25722.     "Save the region as if killed, but don't kill it."
  25723.     (interactive "r")
  25724. !   (if (and (eq last-command 'kill-region) (not (check-clipboard)))
  25725.         (kill-append (buffer-substring beg end) (< end beg))
  25726. !     (kill-add (buffer-substring beg end)))
  25727.     (setq this-command 'kill-region)
  25728.     (setq kill-ring-yank-pointer kill-ring))
  25729.   
  25730. ***************
  25731. *** 643,648 ****
  25732. --- 675,681 ----
  25733.   text.
  25734.   See also the command \\[yank-pop]."
  25735.     (interactive "*P")
  25736. +   (check-clipboard)
  25737.     (rotate-yank-pointer (if (listp arg) 0
  25738.                (if (eq arg '-) -1
  25739.                  (1- arg))))
  25740. Binary files /src/baseline/emacs-18.59/lisp/simple.elc and emacs-18.59/lisp/simple.elc differ
  25741. diff -rc --new-file /src/baseline/emacs-18.59/lisp/startup.el emacs-18.59/lisp/startup.el
  25742. *** /src/baseline/emacs-18.59/lisp/startup.el    Sun Apr 19 01:20:08 1992
  25743. --- emacs-18.59/lisp/startup.el    Sat Nov 21 16:16:08 1992
  25744. ***************
  25745. *** 113,121 ****
  25746.       ;; Load user's init file, or load default one.
  25747.       (condition-case error
  25748.       (if init
  25749. !         (progn (load (if (eq system-type 'vax-vms)
  25750. !                  "sys$login:.emacs"
  25751. !                  (concat "~" init "/.emacs"))
  25752.                t t t)
  25753.              (or inhibit-default-init
  25754.                  (let ((inhibit-startup-message nil))
  25755. --- 113,121 ----
  25756.       ;; Load user's init file, or load default one.
  25757.       (condition-case error
  25758.       (if init
  25759. !         (progn (load (cond ((eq system-type 'vax-vms) "sys$login:.emacs")
  25760. !                    ((eq system-type 'amigados) "s:.emacs")
  25761. !                    (t (concat "~" init "/.emacs")))
  25762.                t t t)
  25763.              (or inhibit-default-init
  25764.                  (let ((inhibit-startup-message nil))
  25765. ***************
  25766. *** 129,134 ****
  25767. --- 129,138 ----
  25768.       (save-excursion
  25769.         (set-buffer "*scratch*")
  25770.         (funcall initial-major-mode)))
  25771. +     ;; On Amiga, initialise clipboard
  25772. +     (if (eq system-type 'amigados)
  25773. +     (let ((clip (safe-amiga-paste)))
  25774. +       (if clip (kill-add clip))))
  25775.       ;; Load library for our terminal type.
  25776.       ;; User init file can set term-file-prefix to nil to prevent this.
  25777.       (and term-file-prefix (not noninteractive)
  25778. Binary files /src/baseline/emacs-18.59/lisp/startup.elc and emacs-18.59/lisp/startup.elc differ
  25779. diff -rc --new-file /src/baseline/emacs-18.59/lisp/term/intuition-win.el emacs-18.59/lisp/term/intuition-win.el
  25780. *** /src/baseline/emacs-18.59/lisp/term/intuition-win.el    Thu Jan  1 00:00:00 1970
  25781. --- emacs-18.59/lisp/term/intuition-win.el    Sat Nov 21 16:08:08 1992
  25782. ***************
  25783. *** 0 ****
  25784. --- 1,47 ----
  25785. + (load "s:.emacs-menu" t t)
  25786. + (setq command-switch-alist (append '(("-fn" . amiga-handle-set-font)
  25787. +                      ("-fg" . amiga-handle-set-foreground)
  25788. +                      ("-bg" . amiga-handle-set-background)
  25789. +                      ("-geometry" . amiga-handle-set-geometry)
  25790. +                      ("-screen" . amiga-handle-set-screen))
  25791. +                    command-switch-alist))
  25792. + (defun amiga-handle-set-font (switch)
  25793. +   (condition-case err
  25794. +       (let ((wfont (car command-line-args-left))
  25795. +         (height (car (read-from-string (car (cdr command-line-args-left))))))
  25796. +     (setq command-line-args-left (cdr (cdr command-line-args-left)))
  25797. +     (amiga-set-font wfont height))
  25798. +     (error (message "Failed to load font"))))
  25799. + (defun amiga-handle-set-foreground (switch)
  25800. +   (condition-case err
  25801. +       (let ((pen (car (read-from-string (car command-line-args-left)))))
  25802. +     (setq command-line-args-left (cdr command-line-args-left))
  25803. +     (amiga-set-foreground-color pen))
  25804. +     (error (message "Failed to set foreground colour"))))
  25805. + (defun amiga-handle-set-background (switch)
  25806. +   (condition-case err
  25807. +       (let ((pen (car (read-from-string (car command-line-args-left)))))
  25808. +     (setq command-line-args-left (cdr command-line-args-left))
  25809. +     (amiga-set-background-color pen))
  25810. +     (error (message "Failed to set background colour"))))
  25811. + (defun amiga-handle-set-screen (switch)
  25812. +   (condition-case err
  25813. +       (let ((name (car command-line-args-left)))
  25814. +     (setq command-line-args-left (cdr command-line-args-left))
  25815. +     (amiga-set-geometry nil nil nil nil name))
  25816. +     (error (message "Couldn't open on public screen"))))
  25817. + (defun amiga-handle-set-geometry (switch)
  25818. +   (condition-case err
  25819. +       (let ((x (car (read-from-string (car command-line-args-left))))
  25820. +         (y (car (read-from-string (car (cdr command-line-args-left)))))
  25821. +         (w (car (read-from-string (car (cdr (cdr command-line-args-left))))))
  25822. +         (h (car (read-from-string (car (cdr (cdr (cdr command-line-args-left)))))))
  25823. + )
  25824. +     (setq command-line-args-left (cdr (cdr (cdr (cdr command-line-args-left)))))
  25825. +     (amiga-set-geometry x y w h nil))
  25826. +     (error (message "Couldn't set window size"))))
  25827. diff -rc --new-file /src/baseline/emacs-18.59/lisp/term/intuition-win.elc emacs-18.59/lisp/term/intuition-win.elc
  25828. *** /src/baseline/emacs-18.59/lisp/term/intuition-win.elc    Thu Jan  1 00:00:00 1970
  25829. --- emacs-18.59/lisp/term/intuition-win.elc    Sun May 16 10:57:14 1993
  25830. ***************
  25831. *** 0 ****
  25832. --- 1,16 ----
  25833. + (load "s:.emacs-menu" t t)
  25834. + (setq command-switch-alist (append (quote (("-fn" . amiga-handle-set-font) ("-fg" . amiga-handle-set-foreground) ("-bg" . amiga-handle-set-background) ("-geometry" . amiga-handle-set-geometry) ("-screen" . amiga-handle-set-screen))) command-switch-alist))
  25835. + (defun amiga-handle-set-font (switch) (byte-code "ÀÁ‡" [err (byte-code "    @à   A@!@    AA‰ˆÄ
  25836. + \"*‡" [wfont command-line-args-left height read-from-string amiga-set-font] 4) ((error (byte-code "ÀÁ!‡" [message "Failed to load font"] 2)))] 3))
  25837. + (defun amiga-handle-set-foreground (switch) (byte-code "ÀÁ‡" [err (byte-code "    @!@    A‰ˆÃ!)‡" [pen command-line-args-left read-from-string amiga-set-foreground-color] 3) ((error (byte-code "ÀÁ!‡" [message "Failed to set foreground colour"] 2)))] 3))
  25838. + (defun amiga-handle-set-background (switch) (byte-code "ÀÁ‡" [err (byte-code "    @!@    A‰ˆÃ!)‡" [pen command-line-args-left read-from-string amiga-set-background-color] 3) ((error (byte-code "ÀÁ!‡" [message "Failed to set background colour"] 2)))] 3))
  25839. + (defun amiga-handle-set-screen (switch) (byte-code "ÀÁ‡" [err (byte-code "    @    A‰ˆÃÂÂÂÂ%)‡" [name command-line-args-left nil amiga-set-geometry] 6) ((error (byte-code "ÀÁ!‡" [message "Couldn't open on public screen"] 2)))] 3))
  25840. + (defun amiga-handle-set-geometry (switch) (byte-code "ÀÁ‡" [err (byte-code "Æ    @!@Æ    A@!@Æ    AA@!@Æ    AAA@!@    AAAA‰ˆÇ
  25841. +  Å%,‡" [x command-line-args-left y w h nil read-from-string amiga-set-geometry] 10) ((error (byte-code "ÀÁ!‡" [message "Couldn't set window size"] 2)))] 3))
  25842. diff -rc --new-file /src/baseline/emacs-18.59/lisp/texinfmt.el emacs-18.59/lisp/texinfmt.el
  25843. *** /src/baseline/emacs-18.59/lisp/texinfmt.el    Sun Dec  8 01:28:09 1991
  25844. --- emacs-18.59/lisp/texinfmt.el    Sat Nov 21 16:16:32 1992
  25845. ***************
  25846. *** 874,880 ****
  25847.       (insert "\n* Menu:\n\n")
  25848.       (setq opoint (point))
  25849.       (texinfo-print-index nil indexelts)
  25850. !     (if (eq system-type 'vax-vms) 
  25851.       (texinfo-sort-region opoint (point))
  25852.         (shell-command-on-region opoint (point) "sort -fd" 1))))
  25853.   
  25854. --- 874,880 ----
  25855.       (insert "\n* Menu:\n\n")
  25856.       (setq opoint (point))
  25857.       (texinfo-print-index nil indexelts)
  25858. !     (if (or (eq system-type 'amigados) (eq system-type 'vax-vms)) 
  25859.       (texinfo-sort-region opoint (point))
  25860.         (shell-command-on-region opoint (point) "sort -fd" 1))))
  25861.   
  25862. Binary files /src/baseline/emacs-18.59/lisp/texinfmt.elc and emacs-18.59/lisp/texinfmt.elc differ
  25863. diff -rc --new-file /src/baseline/emacs-18.59/src/SCOPTIONS emacs-18.59/src/SCOPTIONS
  25864. *** /src/baseline/emacs-18.59/src/SCOPTIONS    Thu Jan  1 00:00:00 1970
  25865. --- emacs-18.59/src/SCOPTIONS    Sat Oct  2 15:31:56 1993
  25866. ***************
  25867. *** 0 ****
  25868. --- 1,15 ----
  25869. + STRINGMERGE
  25870. + STRUCTUREEQUIVALENCE
  25871. + NOWARNVOIDRETURN
  25872. + NOVERSION
  25873. + MEMORYSIZE=HUGE
  25874. + INCLUDEDIR=//unix/include
  25875. + IGNORE=147
  25876. + IGNORE=62
  25877. + IGNORE=132
  25878. + IGNORE=154
  25879. + IGNORE=104
  25880. + IGNORE=100
  25881. + IGNORE=161
  25882. + IGNORE=84
  25883. + IGNORE=93
  25884. diff -rc --new-file /src/baseline/emacs-18.59/src/alloc.c emacs-18.59/src/alloc.c
  25885. *** /src/baseline/emacs-18.59/src/alloc.c    Mon Sep 21 01:45:30 1992
  25886. --- emacs-18.59/src/alloc.c    Sun Dec  6 12:42:02 1992
  25887. ***************
  25888. *** 76,81 ****
  25889. --- 76,86 ----
  25890.      Preallocated since perhaps we can't allocate it when memory is full.  */
  25891.   Lisp_Object memory_exhausted_message;
  25892.   
  25893. + #ifdef AMIGA_DUMP
  25894. + int *pure;   /* pure array is allocated at run-time */
  25895. + int puresize = DEF_PURESIZE; /* and has a variable size */
  25896. + #define PUREBEG (char *) pure
  25897. + #else /* not AMIGA_DUMP */
  25898.   #ifndef HAVE_SHM
  25899.   #ifdef VMS
  25900.   int pure[PURESIZE / sizeof (int)];    /*no need to initialize - wasted space*/
  25901. ***************
  25902. *** 87,92 ****
  25903. --- 92,98 ----
  25904.   #define pure PURE_SEG_BITS   /* Use shared memory segment */
  25905.   #define PUREBEG (char *)PURE_SEG_BITS
  25906.   #endif /* not HAVE_SHM */
  25907. + #endif /* not AMIGA_DUMP */
  25908.   
  25909.   /* Index in pure at which next pure object will be allocated. */
  25910.   int pureptr;
  25911. ***************
  25912. *** 608,614 ****
  25913.         XSET (val, Lisp_String,
  25914.           (struct Lisp_String *) current_string_block->chars);
  25915.       }
  25916. !     
  25917.     XSTRING (val)->size = length;
  25918.     XSTRING (val)->data[length] = 0;
  25919.   
  25920. --- 614,620 ----
  25921.         XSET (val, Lisp_String,
  25922.           (struct Lisp_String *) current_string_block->chars);
  25923.       }
  25924.     XSTRING (val)->size = length;
  25925.     XSTRING (val)->data[length] = 0;
  25926.   
  25927. ***************
  25928. *** 727,735 ****
  25929. --- 733,745 ----
  25930.   #ifdef __GNUC__
  25931.   Lisp_Object *staticvec[NSTATICS] = {0};
  25932.   #else
  25933. + #ifdef AMIGA_DUMP
  25934. + Lisp_Object *staticvec[NSTATICS]; /* Doesn't need to be pure */
  25935. + #else
  25936.   char staticvec1[NSTATICS * sizeof (Lisp_Object *)] = {0};
  25937.   #define staticvec ((Lisp_Object **) staticvec1)
  25938.   #endif
  25939. + #endif
  25940.   
  25941.   /* Put an entry in staticvec, pointing at the variable whose address is given */
  25942.   
  25943. ***************
  25944. *** 859,870 ****
  25945.       {
  25946.         mark_object (&catch->tag);
  25947.         mark_object (&catch->val);
  25948. !     }  
  25949.     for (handler = handlerlist; handler; handler = handler->next)
  25950.       {
  25951.         mark_object (&handler->handler);
  25952.         mark_object (&handler->var);
  25953. !     }  
  25954.     for (backlist = backtrace_list; backlist; backlist = backlist->next)
  25955.       {
  25956.         if (!XMARKBIT (*backlist->function))
  25957. --- 869,880 ----
  25958.       {
  25959.         mark_object (&catch->tag);
  25960.         mark_object (&catch->val);
  25961. !     }
  25962.     for (handler = handlerlist; handler; handler = handler->next)
  25963.       {
  25964.         mark_object (&handler->handler);
  25965.         mark_object (&handler->var);
  25966. !     }
  25967.     for (backlist = backtrace_list; backlist; backlist = backlist->next)
  25968.       {
  25969.         if (!XMARKBIT (*backlist->function))
  25970. ***************
  25971. *** 882,888 ****
  25972.           mark_object (&backlist->args[i]);
  25973.           XMARK (backlist->args[i]);
  25974.         }
  25975. !     }  
  25976.   
  25977.     gc_sweep ();
  25978.   
  25979. --- 892,898 ----
  25980.           mark_object (&backlist->args[i]);
  25981.           XMARK (backlist->args[i]);
  25982.         }
  25983. !     }
  25984.   
  25985.     gc_sweep ();
  25986.   
  25987. ***************
  25988. *** 900,906 ****
  25989.       i = backlist->nargs - 1;
  25990.         for (; i >= 0; i--)
  25991.       XUNMARK (backlist->args[i]);
  25992. !     }  
  25993.     XUNMARK (buffer_defaults.name);
  25994.     XUNMARK (buffer_local_symbols.name);
  25995.   
  25996. --- 910,916 ----
  25997.       i = backlist->nargs - 1;
  25998.         for (; i >= 0; i--)
  25999.       XUNMARK (backlist->args[i]);
  26000. !     }
  26001.     XUNMARK (buffer_defaults.name);
  26002.     XUNMARK (buffer_local_symbols.name);
  26003.   
  26004. ***************
  26005. *** 936,942 ****
  26006.     {
  26007.       register struct cons_block *cblk;
  26008.       register int lim = cons_block_index;
  26009. !   
  26010.       for (cblk = cons_block; cblk; cblk = cblk->next)
  26011.         {
  26012.       register int i;
  26013. --- 946,952 ----
  26014.     {
  26015.       register struct cons_block *cblk;
  26016.       register int lim = cons_block_index;
  26017.       for (cblk = cons_block; cblk; cblk = cblk->next)
  26018.         {
  26019.       register int i;
  26020. ***************
  26021. *** 949,955 ****
  26022.     {
  26023.       register struct symbol_block *sblk;
  26024.       register int lim = symbol_block_index;
  26025. !   
  26026.       for (sblk = symbol_block; sblk; sblk = sblk->next)
  26027.         {
  26028.       register int i;
  26029. --- 959,965 ----
  26030.     {
  26031.       register struct symbol_block *sblk;
  26032.       register int lim = symbol_block_index;
  26033.       for (sblk = symbol_block; sblk; sblk = sblk->next)
  26034.         {
  26035.       register int i;
  26036. ***************
  26037. *** 964,970 ****
  26038.     {
  26039.       register struct marker_block *sblk;
  26040.       register int lim = marker_block_index;
  26041. !   
  26042.       for (sblk = marker_block; sblk; sblk = sblk->next)
  26043.         {
  26044.       register int i;
  26045. --- 974,980 ----
  26046.     {
  26047.       register struct marker_block *sblk;
  26048.       register int lim = marker_block_index;
  26049.       for (sblk = marker_block; sblk; sblk = sblk->next)
  26050.         {
  26051.       register int i;
  26052. ***************
  26053. *** 1197,1203 ****
  26054.       register int num_free = 0, num_used = 0;
  26055.   
  26056.       cons_free_list = 0;
  26057. !   
  26058.       for (cblk = cons_block; cblk; cblk = cblk->next)
  26059.         {
  26060.       register int i;
  26061. --- 1207,1213 ----
  26062.       register int num_free = 0, num_used = 0;
  26063.   
  26064.       cons_free_list = 0;
  26065.       for (cblk = cons_block; cblk; cblk = cblk->next)
  26066.         {
  26067.       register int i;
  26068. ***************
  26069. *** 1226,1232 ****
  26070.       register int num_free = 0, num_used = 0;
  26071.   
  26072.       symbol_free_list = 0;
  26073. !   
  26074.       for (sblk = symbol_block; sblk; sblk = sblk->next)
  26075.         {
  26076.       register int i;
  26077. --- 1236,1242 ----
  26078.       register int num_free = 0, num_used = 0;
  26079.   
  26080.       symbol_free_list = 0;
  26081.       for (sblk = symbol_block; sblk; sblk = sblk->next)
  26082.         {
  26083.       register int i;
  26084. ***************
  26085. *** 1260,1266 ****
  26086.       register int num_free = 0, num_used = 0;
  26087.   
  26088.       marker_free_list = 0;
  26089. !   
  26090.       for (mblk = marker_block; mblk; mblk = mblk->next)
  26091.         {
  26092.       register int i;
  26093. --- 1270,1276 ----
  26094.       register int num_free = 0, num_used = 0;
  26095.   
  26096.       marker_free_list = 0;
  26097.       for (mblk = marker_block; mblk; mblk = mblk->next)
  26098.         {
  26099.       register int i;
  26100. ***************
  26101. *** 1400,1406 ****
  26102.             while ((unsigned) size > STRING_BLOCK_SIZE)
  26103.           {
  26104.             if (size & 1) size ^= MARKBIT | 1;
  26105. !           size = *(int *)size & ~MARKBIT;
  26106.           }
  26107.   
  26108.             total_string_size += size;
  26109. --- 1410,1417 ----
  26110.             while ((unsigned) size > STRING_BLOCK_SIZE)
  26111.           {
  26112.             if (size & 1) size ^= MARKBIT | 1;
  26113. !           size = *(int *)size;
  26114. !                   size &= ~MARKBIT;
  26115.           }
  26116.   
  26117.             total_string_size += size;
  26118. ***************
  26119. *** 1438,1444 ****
  26120.             if (size & 1) size ^= MARKBIT | 1;
  26121.             objptr = (Lisp_Object *)size;
  26122.   
  26123. !           size = XFASTINT (*objptr) & ~MARKBIT;
  26124.             if (XMARKBIT (*objptr))
  26125.               {
  26126.                 XSET (*objptr, Lisp_String, newaddr);
  26127. --- 1449,1456 ----
  26128.             if (size & 1) size ^= MARKBIT | 1;
  26129.             objptr = (Lisp_Object *)size;
  26130.   
  26131. !           size = XFASTINT (*objptr);
  26132. !                   size &= ~MARKBIT;
  26133.             if (XMARKBIT (*objptr))
  26134.               {
  26135.                 XSET (*objptr, Lisp_String, newaddr);
  26136. ***************
  26137. *** 1498,1504 ****
  26138.        Qt tends to return NULL, which effectively turns undo back on.
  26139.        So don't call truncate_undo_list if undo_list is Qt.  */
  26140.         if (! EQ (nextb->undo_list, Qt))
  26141. !     nextb->undo_list 
  26142.         = truncate_undo_list (nextb->undo_list, undo_threshold,
  26143.                   undo_high_threshold);
  26144.         nextb = nextb->next;
  26145. --- 1510,1516 ----
  26146.        Qt tends to return NULL, which effectively turns undo back on.
  26147.        So don't call truncate_undo_list if undo_list is Qt.  */
  26148.         if (! EQ (nextb->undo_list, Qt))
  26149. !     nextb->undo_list
  26150.         = truncate_undo_list (nextb->undo_list, undo_threshold,
  26151.                   undo_high_threshold);
  26152.         nextb = nextb->next;
  26153. diff -rc --new-file /src/baseline/emacs-18.59/src/alloca.c emacs-18.59/src/alloca.c
  26154. *** /src/baseline/emacs-18.59/src/alloca.c    Sat Jul 25 17:40:32 1992
  26155. --- emacs-18.59/src/alloca.c    Sun Nov 22 10:12:50 1992
  26156. ***************
  26157. *** 72,78 ****
  26158.   #define    STACK_DIRECTION    0        /* direction unknown */
  26159.   #endif
  26160.   
  26161. ! #if STACK_DIRECTION != 0
  26162.   
  26163.   #define    STACK_DIR    STACK_DIRECTION    /* known at compile-time */
  26164.   
  26165. --- 72,78 ----
  26166.   #define    STACK_DIRECTION    0        /* direction unknown */
  26167.   #endif
  26168.   
  26169. ! #if (STACK_DIRECTION) != 0
  26170.   
  26171.   #define    STACK_DIR    STACK_DIRECTION    /* known at compile-time */
  26172.   
  26173. ***************
  26174. *** 137,142 ****
  26175. --- 137,144 ----
  26176.   
  26177.   static header *last_alloca_header = NULL; /* -> last alloca header */
  26178.   
  26179. + int alloca_calling;
  26180.   pointer
  26181.   alloca (size)            /* returns pointer to storage */
  26182.        unsigned    size;        /* # bytes to allocate */
  26183. ***************
  26184. *** 176,185 ****
  26185. --- 178,189 ----
  26186.   
  26187.     /* Allocate combined header + user data storage. */
  26188.   
  26189. +   alloca_calling = 1;
  26190.     {
  26191.       register pointer    new = xmalloc (sizeof (header) + size);
  26192.       /* address of header */
  26193.   
  26194. +     alloca_calling = 0;
  26195.       ((header *)new)->h.next = last_alloca_header;
  26196.       ((header *)new)->h.deep = depth;
  26197.   
  26198. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga.h emacs-18.59/src/amiga.h
  26199. *** /src/baseline/emacs-18.59/src/amiga.h    Thu Jan  1 00:00:00 1970
  26200. --- emacs-18.59/src/amiga.h    Sat Dec  5 18:07:10 1992
  26201. ***************
  26202. *** 0 ****
  26203. --- 1,145 ----
  26204. + /* Prototypes for functions defined in amiga_clipboard.c */
  26205. + void syms_of_amiga_clipboard(void);
  26206. + void early_clipboard(void);
  26207. + void init_clipboard(void);
  26208. + void cleanup_clipboard(void);
  26209. + /* Prototypes for functions defined in amiga_dump.c */
  26210. + void map_out_data(char *fn);
  26211. + void map_in_data(int load);
  26212. + extern void *far first_fn, *far last_fn;
  26213. + /* Prototypes for functions defined in amiga_menu.c */
  26214. + void suspend_menus(void);
  26215. + int resume_menus(void);
  26216. + void syms_of_amiga_menu(void);
  26217. + void init_amiga_menu(void);
  26218. + void cleanup_amiga_menu(void);
  26219. + /* Prototypes for functions defined in amiga_processes.c */
  26220. + /* Simulation of unix processes & signals */
  26221. + int wait_for_termination(int pid);
  26222. + int wait_without_blocking(void);
  26223. + char *amiga_path(void);
  26224. + void init_amiga_processes(void);
  26225. + void cleanup_amiga_processes(void);
  26226. + /* Prototypes for functions defined in amiga_rexx.c */
  26227. + int check_arexx(int force, int kbd);
  26228. + void init_amiga_rexx(void);
  26229. + void cleanup_amiga_rexx(void);
  26230. + void syms_of_amiga_rexx(void);
  26231. + /* Prototypes for functions defined in amiga_screen.c */
  26232. + extern struct Window *emacs_win;
  26233. + void get_window_size(int *widthp, int *heightp);
  26234. + void reset_window(void);
  26235. + void force_window(void);
  26236. + void add_wbevent(struct WBArg *wbarg);
  26237. + void check_window(int force);
  26238. + void setup_intchar(char intchar);
  26239. + void start_count(int n);
  26240. + void stop_count(int n);
  26241. + void suspend_count(int n);
  26242. + void resume_count(int n);
  26243. + int disp_counts(void);
  26244. + void screen_puts(char *str, unsigned int len);
  26245. + void syms_of_amiga_screen(void);
  26246. + void init_amiga_screen(void);
  26247. + void cleanup_amiga_screen(void);
  26248. + /* Prototypes for functions defined in amiga_serial.c */
  26249. + void init_amiga_serial(void);
  26250. + void cleanup_amiga_serial(void);
  26251. + void check_serial(int force);
  26252. + void serial_puts(char *str, int len);
  26253. + unsigned long serial_baud_rate(void);
  26254. + /* Prototypes for functions defined in amiga_sysdep.c */
  26255. + extern int selecting;
  26256. + int set_exclusive_use(int fd);
  26257. + int sys_suspend(void);
  26258. + char *get_system_name(void);
  26259. + char *expand_path(char *path, char *buf, int len);
  26260. + int syms_of_amiga(void);
  26261. + void cleanup_amiga(void);
  26262. + void amiga_undump_reinit(void);
  26263. + void *early_xmalloc(long size);
  26264. + void *early_xrealloc(void *old, long size);
  26265. + /* Failure stuff */
  26266. + void wbmessage(char *msg);
  26267. + void fail(char *cause);
  26268. + void fail_nomem(void);
  26269. + void _fail_internal(char *file, int line);
  26270. + #define fail_internal() _fail_internal(__FILE__, __LINE__);
  26271. + enum exit_method { use_exit, use_xcexit, use_safe };
  26272. + extern enum exit_method amiga_fail_exit;
  26273. + #define MALLOC_HUNK_SIZE 92000 /* Default malloc hunk size */
  26274. + extern long malloc_hunk_size; /* Amount of memory malloc'ed by a to-be-dumped emacs */
  26275. + extern long malloc_bytes_used;    /* Amount of this hunk actually used */
  26276. + extern long far pre_alloc;    /* amount of memory to reserve for emacs */
  26277. + extern int puresize;        /* Size of pure hunk */
  26278. + /* Various special values used to find the beginning & end of the text, data,
  26279. +    bss and malloc segments. */
  26280. + extern int first_data, last_data, first_bss, last_bss;
  26281. + extern void first_function(), last_function();
  26282. + extern char *malloc_hunk;
  26283. + extern int amiga_initialized;    /* True once Emacs has been undumped or initialised */
  26284. + struct mem_header        /* sizeof() must be multiple of 4 ! */
  26285. + {
  26286. +     struct mem_header *next, *prev;
  26287. +     long size;
  26288. +     /* Data follows */
  26289. + };
  26290. + extern struct mem_header *free_list;
  26291. + /* Prototypes for functions defined in amiga_term.c */
  26292. + int amiga_term_init(void);
  26293. + /* Prototypes for functions defined in amiga_tty.c */
  26294. + extern struct timeinfo *far odd_timer;
  26295. + extern unsigned long odd_sig;
  26296. + int setpgrp_of_tty(int pid);
  26297. + int init_sigio(void);
  26298. + int reset_sigio(void);
  26299. + int request_sigio(void);
  26300. + int unrequest_sigio(void);
  26301. + int tabs_safe_p(void);
  26302. + int get_screen_size(int *widthp, int *heightp);
  26303. + int init_baud_rate(void);
  26304. + void check_intuition(void);
  26305. + #define AMIGASEQ 256 /* When passed to enque, insert the Amiga sequence introducer
  26306. +                 C-x C-^ */
  26307. + void enque(unsigned int c, int meta);
  26308. + int init_sys_modes(void);
  26309. + int reset_sys_modes(void);
  26310. + void amiga_consume_input(void);
  26311. + int discard_tty_input(void);
  26312. + int emacs_fflush(struct __iobuf *f);
  26313. + void emacs_putchar(int c);
  26314. + void emacs_output(char *str, int size);
  26315. + void emacs_fwrite(char *str, unsigned int nblocks, unsigned int len, FILE *f);
  26316. + void syms_of_amiga_tty(void);
  26317. + void init_amiga_tty(void);
  26318. + void cleanup_amiga_tty(void);
  26319. + void early_amiga_tty(void);
  26320. + void amiga_term_open(void);
  26321. + /* Signal mask used to detect available keyboard input.
  26322. +    Must be set by amiga_serial or amiga_screen */
  26323. + extern unsigned long inputsig;
  26324. + /* Prototypes for functions defined in amiga_unix.c */
  26325. + void MemCleanup(void);
  26326. + char *malloc(int size);
  26327. + int free(void *p);
  26328. + char *calloc(long n, long size);
  26329. + char *realloc(char *p, long size);
  26330. + void emacs_malloc_init(void);
  26331. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_clipboard.c emacs-18.59/src/amiga_clipboard.c
  26332. *** /src/baseline/emacs-18.59/src/amiga_clipboard.c    Thu Jan  1 00:00:00 1970
  26333. --- emacs-18.59/src/amiga_clipboard.c    Tue Mar 23 09:41:50 1993
  26334. ***************
  26335. *** 0 ****
  26336. --- 1,225 ----
  26337. + #include "config.h"
  26338. + #undef NULL
  26339. + #include "lisp.h"
  26340. + #include "termchar.h"
  26341. + #include "amiga.h"
  26342. + #include <stdio.h>
  26343. + #include <internal/devices.h>
  26344. + #undef LONGBITS
  26345. + #include <exec/types.h>
  26346. + #include <exec/io.h>
  26347. + #include <devices/clipboard.h>
  26348. + #include <libraries/iffparse.h>
  26349. + #include <utility/hooks.h>
  26350. + #include <proto/exec.h>
  26351. + #include <proto/iffparse.h>
  26352. + #define  ID_FTXT    MAKE_ID('F','T','X','T')
  26353. + #define  ID_CHRS    MAKE_ID('C','H','R','S')
  26354. + /*
  26355. +  * Text error messages for possible IFFERR_#? returns from various
  26356. +  * IFF routines.  To get the index into this array, take your IFFERR code,
  26357. +  * negate it, and subtract one.
  26358. +  *  idx = -error - 1;
  26359. +  */
  26360. + static char *far ifferrormsgs[] = {
  26361. +     "End of file (not an error).",
  26362. +     "End of context (not an error).",
  26363. +     "No lexical scope.",
  26364. +     "Insufficient memory.",
  26365. +     "Stream read error.",
  26366. +     "Stream write error.",
  26367. +     "Stream seek error.",
  26368. +     "File is corrupt.",
  26369. +     "IFF syntax error.",
  26370. +     "Not an IFF file.",
  26371. +     "Required call-back hook missing.",
  26372. +     "Return to client.  You should never see this."
  26373. + };
  26374. + Lisp_Object amiga_new_clip;
  26375. + static struct IFFHandle *far iff;
  26376. + struct Library *IFFParseBase;
  26377. + static struct IOClipReq *far ClipRequest;
  26378. + static struct Hook cliphook;
  26379. + /* added __interrupt flag this disables stack checking for this function
  26380. +  * so we can compile with stack checking on.  -ch3/19/93. */
  26381. + static ULONG __saveds __asm __interrupt
  26382. + clip_change(    register __a0 struct Hook    *hook,
  26383. +         register __a2 VOID        *object,
  26384. +         register __a1 ULONG        *message )
  26385. + {
  26386. +     amiga_new_clip = 1;
  26387. +     return 0;
  26388. + }
  26389. + static Lisp_Object clip_unwind(Lisp_Object dummy)
  26390. + {
  26391. +     CloseIFF (iff);
  26392. +     CloseClipboard ((struct ClipboardHandle *) iff->iff_Stream);
  26393. +     return Qnil;
  26394. + }
  26395. + static int clip_protect(void)
  26396. + {
  26397. +     int count = specpdl_ptr - specpdl;
  26398. +     record_unwind_protect(clip_unwind, Qnil);
  26399. +     return count;
  26400. + }
  26401. + static long clip_check(long err)
  26402. + {
  26403. +     if(err) error ("Clipboard IO failed, error %ld: %s\n",
  26404. +            err, ifferrormsgs[-err - 1]);
  26405. +     return err;
  26406. + }
  26407. + static void cut(char *str, int size)
  26408. + {
  26409. +     int count;
  26410. +     if (!(iff->iff_Stream = (ULONG) OpenClipboard (0)))
  26411. +     error ("Clipboard open failed.");
  26412. +     count = clip_protect();
  26413. +     /* Open clipbaord */
  26414. +     InitIFFasClip (iff);
  26415. +     clip_check(OpenIFF (iff, IFFF_WRITE));
  26416. +     /* Write data */
  26417. +     clip_check(PushChunk(iff, ID_FTXT, ID_FORM, IFFSIZE_UNKNOWN));
  26418. +     clip_check(PushChunk(iff, 0, ID_CHRS, IFFSIZE_UNKNOWN));
  26419. +     if (WriteChunkBytes(iff, str, size) != size) clip_check(IFFERR_WRITE);
  26420. +     clip_check(PopChunk(iff));
  26421. +     clip_check(PopChunk(iff));
  26422. +     /* & close */
  26423. +     unbind_to (count);
  26424. + }
  26425. + DEFUN ("amiga-cut", Famiga_cut, Samiga_cut,
  26426. +   1, 1, 0,
  26427. +   "Copy string into Amiga clipboard.")
  26428. +   (arg)
  26429. +      Lisp_Object arg;
  26430. + {
  26431. +     struct Lisp_String *p;
  26432. +     CHECK_STRING (arg, 0);
  26433. +     p = XSTRING (arg);
  26434. +     cut(p->data, p->size);
  26435. +     return Qnil;
  26436. + }
  26437. + DEFUN ("amiga-paste", Famiga_paste, Samiga_paste,
  26438. +   0, 0, 0,
  26439. +   "Returns text currently in the Amiga clipboard, or NIL if there is none.")
  26440. +   ()
  26441. + {
  26442. +     long err = 0;
  26443. +     Lisp_Object result = Qnil;
  26444. +     struct ContextNode  *cn;
  26445. +     int count;
  26446. +     if (!(iff->iff_Stream = (ULONG) OpenClipboard (0)))
  26447. +     error ("Clipboard open failed.");
  26448. +     count = clip_protect();
  26449. +     /* Open clipbaord */
  26450. +     InitIFFasClip (iff);
  26451. +     clip_check(OpenIFF (iff, IFFF_READ));
  26452. +     clip_check(StopChunk(iff, ID_FTXT, ID_CHRS));
  26453. +     /* Find the first FTXT CHRS chunks */
  26454. +     while (result == Qnil)
  26455. +     {
  26456. +     long err = ParseIFF(iff, IFFPARSE_SCAN);
  26457. +     if (err == IFFERR_EOC) continue; /* enter next context */
  26458. +     else if (err == IFFERR_EOF) break;
  26459. +     else clip_check(err);
  26460. +     /* We only asked to stop at FTXT CHRS chunks
  26461. +      * If no error we've hit a stop chunk
  26462. +      * Read the CHRS chunk data
  26463. +      */
  26464. +     cn = CurrentChunk(iff);
  26465. +     if ((cn) && (cn->cn_Type == ID_FTXT) && (cn->cn_ID == ID_CHRS))
  26466. +     {
  26467. +         int size = cn->cn_Size, rlen;
  26468. +         result = make_string("", size);
  26469. +         if ((rlen = ReadChunkBytes(iff, XSTRING (result)->data, size)) != size)
  26470. +         if (rlen < 0) clip_check(rlen);
  26471. +         else clip_check(IFFERR_EOC);
  26472. +     }
  26473. +     }
  26474. +     unbind_to (count);
  26475. +     return result;
  26476. + }
  26477. + void syms_of_amiga_clipboard(void)
  26478. + {
  26479. +     DEFVAR_BOOL ("amiga-new-clip", &amiga_new_clip,
  26480. +          "Set to t every time a new clip is put in the Amiga clipboard");
  26481. +     amiga_new_clip = 0;
  26482. +     defsubr (&Samiga_cut);
  26483. +     defsubr (&Samiga_paste);
  26484. + }
  26485. + void early_clipboard(void)
  26486. + {
  26487. +     IFFParseBase = 0;
  26488. + }
  26489. + void init_clipboard(void)
  26490. + {
  26491. +     /* Initialise IFF for clipboard */
  26492. +     if (!(IFFParseBase = OpenLibrary("iffparse.library", 0)))
  26493. +       _fail("iffparse.library is required");
  26494. +     if (!(iff = AllocIFF())) no_memory();
  26495. +     ClipRequest = (struct IOClipReq *)
  26496. +     _device_open("clipboard.device", 0L, 0L, 0L, 0, sizeof(struct IOClipReq));
  26497. +     if (!ClipRequest) _fail("clipboard.device missing !?");
  26498. +     cliphook.h_Entry = (ULONG (*)())clip_change;
  26499. +     ClipRequest->io_Command = CBD_CHANGEHOOK;
  26500. +     ClipRequest->io_Length = 1; /* install */
  26501. +     ClipRequest->io_Data = (APTR)&cliphook;
  26502. +     DoIO((struct IORequest *)ClipRequest);
  26503. + }
  26504. + void cleanup_clipboard(void)
  26505. + {
  26506. +     if (ClipRequest)
  26507. +     {
  26508. +     cliphook.h_Entry = (ULONG (*)())clip_change;
  26509. +     ClipRequest->io_Command = CBD_CHANGEHOOK;
  26510. +     ClipRequest->io_Length = 0; /* remove */
  26511. +     ClipRequest->io_Data = (APTR)&cliphook;
  26512. +     DoIO((struct IORequest *)ClipRequest);
  26513. +     }
  26514. +     if (iff) FreeIFF(iff);
  26515. +     if (IFFParseBase) CloseLibrary(IFFParseBase);
  26516. +     _device_close((struct IORequest *)ClipRequest);
  26517. + }
  26518. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_data.c emacs-18.59/src/amiga_data.c
  26519. *** /src/baseline/emacs-18.59/src/amiga_data.c    Thu Jan  1 00:00:00 1970
  26520. --- emacs-18.59/src/amiga_data.c    Sun Nov 22 10:12:54 1992
  26521. ***************
  26522. *** 0 ****
  26523. --- 1 ----
  26524. + /* Declarations of data that should not be squashed by the dump routine */
  26525. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_dump.c emacs-18.59/src/amiga_dump.c
  26526. *** /src/baseline/emacs-18.59/src/amiga_dump.c    Thu Jan  1 00:00:00 1970
  26527. --- emacs-18.59/src/amiga_dump.c    Sun Nov 22 10:13:00 1992
  26528. ***************
  26529. *** 0 ****
  26530. --- 1,721 ----
  26531. + #include <exec/types.h>
  26532. + #include <fcntl.h>
  26533. + #include <stdio.h>
  26534. + #include <assert.h>
  26535. + #include <proto/dos.h>
  26536. + #include <internal/messages.h>
  26537. + #include "config.h"
  26538. + #include "lisp.h"
  26539. + #include "buffer.h"
  26540. + #include "regex.h"
  26541. + #include "amiga.h"
  26542. + #include "dispextern.h"
  26543. + #include "termchar.h"
  26544. + #define RANGE(ptr, s, e) ((char *)ptr >= (char *)s && (char *)ptr < (char *)e)
  26545. + #define HUNK_POS (VALBITS - 3)
  26546. + #define HUNK_MASK (7 << HUNK_POS)
  26547. + #define HUNK_CODE (0 << HUNK_POS)
  26548. + #define HUNK_DATA (1 << HUNK_POS)
  26549. + #define HUNK_BSS (2 << HUNK_POS)
  26550. + #define HUNK_MALLOC (3 << HUNK_POS)
  26551. + #define HUNK_PURE (4 << HUNK_POS)
  26552. + #define ARRAY_MARK_FLAG ((MARKBIT >> 1) & ~MARKBIT)
  26553. + void *far first_fn = first_function, *far last_fn = last_function;
  26554. + extern int *pure, puresize;
  26555. + extern struct gcpro *gcprolist;
  26556. + extern Lisp_Object *staticvec[];
  26557. + extern int staticidx;
  26558. + extern struct cons_block *cons_block;
  26559. + extern struct Lisp_Cons *cons_free_list;
  26560. + extern struct Lisp_Vector *all_vectors;
  26561. + extern struct symbol_block *symbol_block;
  26562. + extern struct Lisp_Symbol *symbol_free_list;
  26563. + extern struct marker_block *marker_block;
  26564. + extern struct Lisp_Marker *marker_free_list;
  26565. + struct string_block_head
  26566. +   {
  26567. +     struct string_block_head *next, *prev;
  26568. +     int pos;
  26569. +   };
  26570. + extern struct string_block_head *current_string_block;
  26571. + extern struct string_block_head *first_string_block;
  26572. + extern struct string_block_head *large_string_blocks;
  26573. + extern char *kbd_macro_buffer, *read_buffer, *chars_wasted, *copybuf;
  26574. + extern struct minibuf_save_data *minibuf_save_vector;
  26575. + extern struct re_pattern_buffer searchbuf;
  26576. + extern int *ILcost, *DLcost, *ILncost, *DLncost;
  26577. + extern Lisp_Object MouseMap, global_map, Vglobal_map, Vesc_map, Vctl_x_map;
  26578. + extern Lisp_Object Qvariable_documentation, selected_window;
  26579. + extern char *callint_argfuns[];
  26580. + static void *dump_malloc(int size)
  26581. + {
  26582. +   void *new = malloc(size);
  26583. +   if (!new) no_memory();
  26584. +   return new;
  26585. + }
  26586. + static void bailout(char *fn)
  26587. + {
  26588. +   if (fn) _message("%s isn't a dump file for this version of Emacs, aborting", fn);
  26589. +   else _message("Dump file isn't for this version of Emacs, aborting");
  26590. +   /* We are in deep trouble, as all our variables are potentially corrupt */
  26591. +   /* Therefore, no cleanup is possible */
  26592. +   /* Remove cleanup routines */
  26593. +   onexit(0);
  26594. +   /* However, the library & the memory allocation should be ok, so
  26595. +      we can exit reasonably */
  26596. +   _fail("Some system resources may have been lost");
  26597. + }
  26598. + static void *hunk_pointer(void *ptr)
  26599. + {
  26600. +     if (!ptr) return ptr;
  26601. +     if (RANGE(ptr, first_fn, last_fn))
  26602. +     return (void *)(HUNK_CODE | (char *)ptr - (char *)first_fn);
  26603. +     else if (RANGE(ptr, &first_data, &last_data))
  26604. +     return (void *)(HUNK_DATA | (char *)ptr - (char *)&first_data);
  26605. +     else if (RANGE(ptr, &first_bss, &last_bss))
  26606. +     return (void *)(HUNK_BSS | (char *)ptr - (char *)&first_bss);
  26607. +     else if (RANGE(ptr, malloc_hunk, malloc_hunk + malloc_hunk_size))
  26608. +     return (void *)(HUNK_MALLOC | (char *)ptr - malloc_hunk);
  26609. +     else if (RANGE(ptr, pure, (char *)pure + puresize))
  26610. +     return (void *)(HUNK_PURE | (char *)ptr - (char *)pure);
  26611. +     else bailout(0);
  26612. + }
  26613. + static Lisp_Object hunk_lispptr(Lisp_Object *objptr, Lisp_Object val)
  26614. + {
  26615. +     int type = val & ~VALMASK;
  26616. +     void *ptr = (void *)XPNTR(val);
  26617. +     if (RANGE(ptr, first_fn, last_fn))
  26618. +     return type | HUNK_CODE | (char *)ptr - (char *)first_fn;
  26619. +     else if (RANGE(ptr, &first_data, &last_data))
  26620. +     return type | HUNK_DATA | (char *)ptr - (char *)&first_data;
  26621. +     else if (RANGE(ptr, &first_bss, &last_bss))
  26622. +     return type | HUNK_BSS | (char *)ptr - (char *)&first_bss;
  26623. +     else if (RANGE(ptr, pure, (char *)pure + puresize))
  26624. +     return type | HUNK_PURE | (char *)ptr - (char *)pure;
  26625. +     else if (RANGE(ptr, malloc_hunk, malloc_hunk + malloc_hunk_size))
  26626. +     return type | HUNK_MALLOC | (char *)ptr - malloc_hunk;
  26627. +     else bailout(0);
  26628. + }
  26629. + static void patch_pointers ();
  26630. + static void patch_buffer (buf)
  26631. +      Lisp_Object buf;
  26632. + {
  26633. +   Lisp_Object tem;
  26634. +   register struct buffer *buffer = XBUFFER (buf);
  26635. +   register Lisp_Object *ptr;
  26636. +   buffer->text.beg = hunk_pointer (buffer->text.beg);
  26637. +   patch_pointers (&buffer->markers);
  26638. +   /* This is the buffer's markbit */
  26639. +   patch_pointers (&buffer->name);
  26640. +   XMARK (buffer->name);
  26641. +   for (ptr = &buffer->name + 1;
  26642. +        (char *)ptr < (char *)buffer + sizeof (struct buffer);
  26643. +        ptr++)
  26644. +     patch_pointers (ptr);
  26645. + }
  26646. + static void patch_pointers (objptr)
  26647. +      Lisp_Object *objptr;
  26648. + {
  26649. +   register Lisp_Object obj;
  26650. +   obj = *objptr;
  26651. +   XUNMARK (obj);
  26652. +  loop:
  26653. +   switch (XGCTYPE (obj))
  26654. +     {
  26655. +     case Lisp_String:
  26656. +       *objptr = hunk_lispptr(objptr, *objptr);
  26657. +       break;
  26658. +     case Lisp_Vector:
  26659. +     case Lisp_Window:
  26660. +     case Lisp_Process:
  26661. +     case Lisp_Window_Configuration:
  26662. +       *objptr = hunk_lispptr(objptr, *objptr);
  26663. +       {
  26664. +     register struct Lisp_Vector *ptr = XVECTOR (obj);
  26665. +     register int size = ptr->size;
  26666. +     register int i;
  26667. +     if (size & ARRAY_MARK_FLAG) break;   /* Already marked */
  26668. +     ptr->size |= ARRAY_MARK_FLAG; /* Else mark it */
  26669. +     for (i = 0; i < size; i++)     /* and then mark its elements */
  26670. +       patch_pointers (&ptr->contents[i]);
  26671. +       }
  26672. +       break;
  26673. +     case Lisp_Symbol:
  26674. +       *objptr = hunk_lispptr(objptr, *objptr);
  26675. +       {
  26676. +     register struct Lisp_Symbol *ptr = XSYMBOL (obj);
  26677. +     struct Lisp_Symbol *ptrx;
  26678. +     if (XMARKBIT (ptr->plist)) break;
  26679. +     XMARK (ptr->plist);
  26680. +     XSETTYPE (*(Lisp_Object *) &ptr->name, Lisp_String);
  26681. +     patch_pointers (&ptr->name);
  26682. +     patch_pointers ((Lisp_Object *) &ptr->value);
  26683. +     patch_pointers (&ptr->function);
  26684. +     patch_pointers (&ptr->plist);
  26685. +     objptr = (Lisp_Object *)&ptr->next;
  26686. +     ptr = ptr->next;
  26687. +     if (ptr)
  26688. +       {
  26689. +         ptrx = ptr;        /* Use pf ptrx avoids compiler bug on Sun */
  26690. +         XSETSYMBOL (obj, ptrx);
  26691. +         goto loop;
  26692. +       }
  26693. +       }
  26694. +       break;
  26695. +     case Lisp_Marker: {
  26696. +     struct Lisp_Marker *ptr = XMARKER (obj);
  26697. +     *objptr = hunk_lispptr(objptr, *objptr);
  26698. +     if (XMARKBIT (ptr->chain)) break;
  26699. +     XMARK (ptr->chain);
  26700. +     ptr->buffer = hunk_pointer (ptr->buffer);
  26701. +     patch_pointers (&ptr->chain);
  26702. +     break;
  26703. +     }
  26704. +     case Lisp_Cons:
  26705. +     case Lisp_Buffer_Local_Value:
  26706. +     case Lisp_Some_Buffer_Local_Value:
  26707. +       *objptr = hunk_lispptr(objptr, *objptr);
  26708. +       {
  26709. +     register struct Lisp_Cons *ptr = XCONS (obj);
  26710. +     if (XMARKBIT (ptr->car)) break;
  26711. +     XMARK (ptr->car);
  26712. +     patch_pointers (&ptr->car);
  26713. +     objptr = &ptr->cdr;
  26714. +     obj = ptr->cdr;
  26715. +     goto loop;
  26716. +       }
  26717. +     case Lisp_Buffer:
  26718. +       *objptr = hunk_lispptr(objptr, *objptr);
  26719. +       if (!XMARKBIT (XBUFFER (obj)->name))
  26720. +     patch_buffer (obj);
  26721. +       break;
  26722. +     case Lisp_Subr: {
  26723. +     struct Lisp_Subr *subr = XSUBR(obj);
  26724. +     *objptr = hunk_lispptr(objptr, *objptr);
  26725. +     if (subr->min_args & 0x8000) break;
  26726. +     subr->min_args |= 0x8000;
  26727. +     subr->function = hunk_pointer(subr->function);
  26728. +     subr->symbol_name = hunk_pointer(subr->symbol_name);
  26729. +     subr->prompt = hunk_pointer(subr->prompt);
  26730. +     if ((long)subr->doc >= 0) /* Make sure that not a doc offset */
  26731. +         subr->doc = hunk_pointer(subr->doc);
  26732. +     break;
  26733. +     }
  26734. +     case Lisp_Int:
  26735. +     case Lisp_Void:
  26736. +     case Lisp_Buffer_Objfwd: break;
  26737. +     case Lisp_Intfwd:
  26738. +     case Lisp_Boolfwd:
  26739. +     case Lisp_Objfwd:
  26740. +     case Lisp_Internal_Stream:
  26741. +       *objptr = hunk_lispptr(objptr, *objptr);
  26742. +     /* Don't bother with Lisp_Buffer_Objfwd,
  26743. +        since all markable slots in current buffer marked anyway.  */
  26744. +     /* Don't need to do Lisp_Objfwd, since the places they point
  26745. +        are protected with staticpro.  */
  26746. +       break;
  26747. +     default:
  26748. +       abort ();
  26749. +     }
  26750. + }
  26751. + static void patch_chain(void **ptr, int offset)
  26752. + {
  26753. +     while (*ptr)
  26754. +     {
  26755. +     void **next = (void **)((char *)*ptr + offset);
  26756. +     *ptr = hunk_pointer(*ptr);
  26757. +     ptr = next;
  26758. +     }
  26759. + }
  26760. + static void patch(void)
  26761. + {
  26762. +     int i;
  26763. +     struct string_block_head *sptr;
  26764. +     struct buffer *bptr;
  26765. +     struct mem_header *mem;
  26766. +     for (i = 0; i < staticidx; i++)
  26767. +     {
  26768. +     if (!XMARKBIT(*staticvec[i]))
  26769. +     {
  26770. +         patch_pointers(staticvec[i]);
  26771. +         XMARK(*staticvec[i]);
  26772. +     }
  26773. +     staticvec[i] = hunk_pointer(staticvec[i]);
  26774. +     }
  26775. +     /* Patch all the pointers normally used before a dump ! */
  26776. +     patch_chain((void **)&cons_block, 0);
  26777. +     patch_chain((void **)&cons_free_list, 0);
  26778. +     patch_chain((void **)&all_vectors, 4);
  26779. +     patch_chain((void **)&symbol_block, 0);
  26780. +     patch_chain((void **)&symbol_free_list, 4);
  26781. +     patch_chain((void **)&marker_block, 0);
  26782. +     patch_chain((void **)&marker_free_list, 4);
  26783. +     /* Strings are lots of fun */
  26784. +     patch_chain((void **)&large_string_blocks, 0);
  26785. +     sptr = first_string_block;
  26786. +     while (sptr)
  26787. +     {
  26788. +     struct string_block *next = sptr->next;
  26789. +     if (sptr->next) sptr->next = hunk_pointer(sptr->next);
  26790. +     if (sptr->prev) sptr->prev = hunk_pointer(sptr->prev);
  26791. +     sptr = next;
  26792. +     }
  26793. +     first_string_block = hunk_pointer(first_string_block);
  26794. +     current_string_block = hunk_pointer(current_string_block);
  26795. +     /* More fun with buffers */
  26796. +     bptr = all_buffers;
  26797. +     if (bptr)
  26798. +     {
  26799. +     while (bptr->next)
  26800. +     {
  26801. +         struct buffer *next = bptr->next;
  26802. +         bptr->next = hunk_pointer(bptr->next);
  26803. +         bptr = next;
  26804. +     }
  26805. +     }
  26806. +     all_buffers = hunk_pointer(all_buffers);
  26807. +     current_buffer = hunk_pointer(current_buffer);
  26808. +     kbd_macro_buffer = hunk_pointer(kbd_macro_buffer);
  26809. +     minibuf_save_vector = hunk_pointer(minibuf_save_vector);
  26810. +     searchbuf.buffer = hunk_pointer(searchbuf.buffer);
  26811. +     searchbuf.fastmap = hunk_pointer(searchbuf.fastmap);
  26812. +     specpdl = hunk_pointer(specpdl);
  26813. +     read_buffer = hunk_pointer(read_buffer);
  26814. +     MouseMap = hunk_lispptr(&MouseMap, MouseMap);
  26815. +     global_map = hunk_lispptr(&global_map, global_map);
  26816. +     Vglobal_map = hunk_lispptr(&Vglobal_map, Vglobal_map);
  26817. +     Vesc_map = hunk_lispptr(&Vesc_map, Vesc_map);
  26818. +     Vctl_x_map = hunk_lispptr(&Vctl_x_map, Vctl_x_map);
  26819. +     Qvariable_documentation = hunk_lispptr(&Qvariable_documentation, Qvariable_documentation);
  26820. +     selected_window = hunk_lispptr(&selected_window, selected_window);
  26821. +     mem = free_list;
  26822. +     free_list = hunk_pointer(free_list);
  26823. +     while (mem)
  26824. +     {
  26825. +     struct mem_header *next = mem->next;
  26826. +     mem->prev = hunk_pointer(mem->prev);
  26827. +     mem->next = hunk_pointer(mem->next);
  26828. +     mem = next;
  26829. +     }
  26830. +     for (i = 0; i <= 4; i++)
  26831. +       callint_argfuns[i] = hunk_pointer(callint_argfuns[i]);
  26832. + }
  26833. + static dump(char *fn)
  26834. + {
  26835. +     BPTR fd;
  26836. +     long size;
  26837. +     fd = Open(fn, MODE_NEWFILE);
  26838. +     if (!fd)
  26839. +       {
  26840. +         static void unpatch();
  26841. +         unpatch();
  26842. +         _fail("emacs hasn't been dumped (%s missing)", fn);
  26843. +       }
  26844. +     Write(fd, (char *)&puresize, sizeof puresize);
  26845. +     Write(fd, (char *)&malloc_hunk_size, sizeof malloc_hunk_size);
  26846. +     Write(fd, (char *)&first_data, (char *)&last_data - (char *)&first_data);
  26847. +     Write(fd, (char *)&first_bss, (char *)&last_bss - (char *)&first_bss);
  26848. +     Write(fd, (char *)pure, puresize);
  26849. +     Write(fd, (char *)malloc_hunk, malloc_hunk_size);
  26850. +     Write(fd, (char *)&staticidx, sizeof staticidx);
  26851. +     Write(fd, (char *)staticvec, staticidx * sizeof(Lisp_Object *));
  26852. +     size = (char *)last_fn - (char *)first_fn;
  26853. +     Write(fd, (char *)&size, sizeof size);
  26854. +     Close(fd);
  26855. + }
  26856. + static void *make_pointer(void *ptr)
  26857. + {
  26858. +     int hunk = (long)ptr & HUNK_MASK;
  26859. +     int offset = (long)ptr & (VALMASK & ~HUNK_MASK);
  26860. +     if (!ptr) return 0;
  26861. +     if (hunk == HUNK_CODE) return (char *)first_fn + offset;
  26862. +     if (hunk == HUNK_DATA) return (char *)&first_data + offset;
  26863. +     if (hunk == HUNK_BSS) return (char *)&first_bss + offset;
  26864. +     if (hunk == HUNK_PURE) return (char *)pure + offset;
  26865. +     if (hunk == HUNK_MALLOC) return malloc_hunk + offset;
  26866. +     assert(0);
  26867. + }
  26868. + static Lisp_Object make_lispptr(Lisp_Object *objptr, Lisp_Object obj)
  26869. + {
  26870. +     long val = XUINT(obj);
  26871. +     int hunk = val & HUNK_MASK;
  26872. +     int offset = val & ~HUNK_MASK;
  26873. +     char *ptr;
  26874. +     if (hunk == HUNK_CODE) ptr = (char *)first_fn + offset;
  26875. +     else if (hunk == HUNK_DATA) ptr = (char *)&first_data + offset;
  26876. +     else if (hunk == HUNK_BSS) ptr = (char *)&first_bss + offset;
  26877. +     else if (hunk == HUNK_PURE) ptr = (char *)pure + offset;
  26878. +     else if (hunk == HUNK_MALLOC) ptr = malloc_hunk + offset;
  26879. +     else assert(0);
  26880. +     XSETPNTR(obj, (long)ptr);
  26881. +     return obj;
  26882. + }
  26883. + static void unpatch_pointers ();
  26884. + static void unpatch_buffer (buf)
  26885. +      Lisp_Object buf;
  26886. + {
  26887. +   Lisp_Object tem;
  26888. +   register struct buffer *buffer = XBUFFER (buf);
  26889. +   register Lisp_Object *ptr;
  26890. +   buffer->text.beg = make_pointer (buffer->text.beg);
  26891. +   unpatch_pointers (&buffer->markers);
  26892. +   /* This is the buffer's markbit */
  26893. +   XUNMARK (buffer->name);
  26894. +   unpatch_pointers (&buffer->name);
  26895. +   for (ptr = &buffer->name + 1;
  26896. +        (char *)ptr < (char *)buffer + sizeof (struct buffer);
  26897. +        ptr++)
  26898. +     unpatch_pointers (ptr);
  26899. + }
  26900. + static void unpatch_pointers (objptr)
  26901. +      Lisp_Object *objptr;
  26902. + {
  26903. +   register Lisp_Object obj;
  26904. +   obj = *objptr;
  26905. +   XUNMARK (obj);
  26906. +  loop:
  26907. +   switch (XGCTYPE (obj))
  26908. +     {
  26909. +     case Lisp_String:
  26910. +       *objptr = make_lispptr(objptr, *objptr);
  26911. +       break;
  26912. +     case Lisp_Vector:
  26913. +     case Lisp_Window:
  26914. +     case Lisp_Process:
  26915. +     case Lisp_Window_Configuration:
  26916. +       obj = *objptr = make_lispptr(objptr, *objptr);
  26917. +       {
  26918. +     register struct Lisp_Vector *ptr = XVECTOR (obj);
  26919. +     register int size;
  26920. +     register int i;
  26921. +     if (!(ptr->size & ARRAY_MARK_FLAG)) break;   /* Already unmarked */
  26922. +     size = ptr->size &= ~ARRAY_MARK_FLAG; /* Else unmark it */
  26923. +     for (i = 0; i < size; i++)     /* and then unmark its elements */
  26924. +       unpatch_pointers (&ptr->contents[i]);
  26925. +       }
  26926. +       break;
  26927. +     case Lisp_Symbol:
  26928. +       obj = *objptr = make_lispptr(objptr, *objptr);
  26929. +       {
  26930. +     register struct Lisp_Symbol *ptr = XSYMBOL (obj);
  26931. +     struct Lisp_Symbol *ptrx;
  26932. +     if (!XMARKBIT (ptr->plist)) break;
  26933. +     XUNMARK (ptr->plist);
  26934. +     unpatch_pointers (&ptr->name);
  26935. +     ptr->name = XSTRING (*(Lisp_Object *)&ptr->name);
  26936. +     unpatch_pointers ((Lisp_Object *) &ptr->value);
  26937. +     unpatch_pointers (&ptr->function);
  26938. +     unpatch_pointers (&ptr->plist);
  26939. +     objptr = (Lisp_Object *)&ptr->next;
  26940. +     ptr = ptr->next;
  26941. +     if (ptr)
  26942. +       {
  26943. +         ptrx = ptr;        /* Use pf ptrx avoids compiler bug on Sun */
  26944. +         XSET (obj, Lisp_Symbol, ptrx);
  26945. +         goto loop;
  26946. +       }
  26947. +       }
  26948. +       break;
  26949. +     case Lisp_Marker: {
  26950. +     struct Lisp_Marker *ptr;
  26951. +     obj = *objptr = make_lispptr(objptr, *objptr);
  26952. +     ptr = XMARKER (obj);
  26953. +     if (!XMARKBIT (ptr->chain)) break;
  26954. +     XUNMARK (ptr->chain);
  26955. +     ptr->buffer = make_pointer (ptr->buffer);
  26956. +     unpatch_pointers (&ptr->chain);
  26957. +     break;
  26958. +     }
  26959. +     case Lisp_Cons:
  26960. +     case Lisp_Buffer_Local_Value:
  26961. +     case Lisp_Some_Buffer_Local_Value:
  26962. +       obj = *objptr = make_lispptr(objptr, *objptr);
  26963. +       {
  26964. +     register struct Lisp_Cons *ptr = XCONS (obj);
  26965. +     if (!XMARKBIT (ptr->car)) break;
  26966. +     XUNMARK (ptr->car);
  26967. +     unpatch_pointers (&ptr->car);
  26968. +     objptr = &ptr->cdr;
  26969. +     obj = ptr->cdr;
  26970. +     goto loop;
  26971. +       }
  26972. +     case Lisp_Buffer:
  26973. +       obj = *objptr = make_lispptr(objptr, *objptr);
  26974. +       if (XMARKBIT (XBUFFER (obj)->name))
  26975. +     unpatch_buffer (obj);
  26976. +       break;
  26977. +     case Lisp_Subr: {
  26978. +     struct Lisp_Subr *subr;
  26979. +     obj = *objptr = make_lispptr(objptr, *objptr);
  26980. +     subr = XSUBR(obj);
  26981. +     if (!(subr->min_args & 0x8000)) break;
  26982. +     subr->min_args &= ~0x8000;
  26983. +     subr->function = make_pointer(subr->function);
  26984. +     subr->symbol_name = make_pointer(subr->symbol_name);
  26985. +     subr->prompt = make_pointer(subr->prompt);
  26986. +     if ((long)subr->doc >= 0) /* Make sure that not a doc offset */
  26987. +         subr->doc = make_pointer(subr->doc);
  26988. +     break;
  26989. +     }
  26990. +     case Lisp_Int:
  26991. +     case Lisp_Void:
  26992. +     case Lisp_Buffer_Objfwd: break;
  26993. +     case Lisp_Intfwd:
  26994. +     case Lisp_Boolfwd:
  26995. +     case Lisp_Objfwd:
  26996. +     case Lisp_Internal_Stream:
  26997. +       *objptr = make_lispptr(objptr, *objptr);
  26998. +     /* Don't bother with Lisp_Buffer_Objfwd,
  26999. +        since all markable slots in current buffer marked anyway.  */
  27000. +     /* Don't need to do Lisp_Objfwd, since the places they point
  27001. +        are protected with staticpro.  */
  27002. +       break;
  27003. +     default:
  27004. +       abort ();
  27005. +     }
  27006. + }
  27007. + static void unpatch_chain(void **ptr, int offset)
  27008. + {
  27009. +     while (*ptr)
  27010. +     {
  27011. +     *ptr = make_pointer(*ptr);
  27012. +     ptr = (void **)((char *)*ptr + offset);
  27013. +     }
  27014. + }
  27015. + /* Reconstructs the addresses that were patched */
  27016. + static void unpatch(void)
  27017. + {
  27018. +     int fd, i;
  27019. +     struct string_block_head *sptr;
  27020. +     struct buffer *bptr;
  27021. +     struct mem_header *mem;
  27022. +     for (i = 0; i < staticidx; i++)
  27023. +     {
  27024. +     staticvec[i] = make_pointer(staticvec[i]);
  27025. +     if (XMARKBIT(*staticvec[i]))
  27026. +     {
  27027. +         XUNMARK(*staticvec[i]);
  27028. +         unpatch_pointers(staticvec[i]);
  27029. +     }
  27030. +     }
  27031. +     /* Unpatch all the pointers normally used before a dump ! */
  27032. +     unpatch_chain((void **)&cons_block, 0);
  27033. +     unpatch_chain((void **)&cons_free_list, 0);
  27034. +     unpatch_chain((void **)&all_vectors, 4);
  27035. +     unpatch_chain((void **)&symbol_block, 0);
  27036. +     unpatch_chain((void **)&symbol_free_list, 4);
  27037. +     unpatch_chain((void **)&marker_block, 0);
  27038. +     unpatch_chain((void **)&marker_free_list, 4);
  27039. +     /* Strings are lots of fun */
  27040. +     unpatch_chain((void **)&large_string_blocks, 0);
  27041. +     sptr = first_string_block = make_pointer(first_string_block);
  27042. +     current_string_block = make_pointer(current_string_block);
  27043. +     while (sptr)
  27044. +     {
  27045. +     if (sptr->next) sptr->next = make_pointer(sptr->next);
  27046. +     if (sptr->prev) sptr->prev = make_pointer(sptr->prev);
  27047. +     sptr = sptr->next;
  27048. +     }
  27049. +     /* More fun with buffers */
  27050. +     bptr = all_buffers = make_pointer(all_buffers);
  27051. +     if (bptr)
  27052. +     {
  27053. +     while (bptr->next)
  27054. +     {
  27055. +         bptr->next = make_pointer(bptr->next);
  27056. +         bptr = bptr->next;
  27057. +     }
  27058. +     }
  27059. +     current_buffer = make_pointer(current_buffer);
  27060. +     kbd_macro_buffer = make_pointer(kbd_macro_buffer);
  27061. +     minibuf_save_vector = make_pointer(minibuf_save_vector);
  27062. +     searchbuf.buffer = make_pointer(searchbuf.buffer);
  27063. +     searchbuf.fastmap = make_pointer(searchbuf.fastmap);
  27064. +     specpdl = make_pointer(specpdl);
  27065. +     read_buffer = make_pointer(read_buffer);
  27066. +     MouseMap = make_lispptr(&MouseMap, MouseMap);
  27067. +     global_map = make_lispptr(&global_map, global_map);
  27068. +     Vglobal_map = make_lispptr(&Vglobal_map, Vglobal_map);
  27069. +     Vesc_map = make_lispptr(&Vesc_map, Vesc_map);
  27070. +     Vctl_x_map = make_lispptr(&Vctl_x_map, Vctl_x_map);
  27071. +     Qvariable_documentation = make_lispptr(&Qvariable_documentation, Qvariable_documentation);
  27072. +     selected_window = make_lispptr(&selected_window, selected_window);
  27073. +     free_list = make_pointer(free_list);
  27074. +     mem = free_list;
  27075. +     while (mem)
  27076. +     {
  27077. +     mem->prev = make_pointer(mem->prev);
  27078. +     mem->next = make_pointer(mem->next);
  27079. +     mem = mem->next;
  27080. +     }
  27081. +     for (i = 0; i <= 4; i++)
  27082. +       callint_argfuns[i] = make_pointer(callint_argfuns[i]);
  27083. + }
  27084. + static undump(char *fn)
  27085. + {
  27086. +   BPTR fd;
  27087. +   long code_size;
  27088. +   char *_malloc_hunk;
  27089. +   int *_pure;
  27090. +   /*extern struct Library *FifoBase;
  27091. +   struct Library *_FifoBase = FifoBase;*/
  27092. +   fd = Open(fn, MODE_OLDFILE);
  27093. +   if (!fd) return 0;
  27094. +   Read(fd, (char *)&puresize, sizeof puresize);
  27095. +   Read(fd, (char *)&malloc_hunk_size, sizeof malloc_hunk_size);
  27096. +   _pure = dump_malloc(puresize);
  27097. +   _malloc_hunk = dump_malloc(malloc_hunk_size + pre_alloc);
  27098. +   Read(fd, (char *)&first_data, (char *)&last_data - (char *)&first_data);
  27099. +   Read(fd, (char *)&first_bss, (char *)&last_bss - (char *)&first_bss);
  27100. +   Read(fd, (char *)_pure, puresize);
  27101. +   Read(fd, (char *)_malloc_hunk, malloc_hunk_size);
  27102. +   Read(fd, (char *)&staticidx, sizeof staticidx);
  27103. +   Read(fd, (char *)staticvec, staticidx * sizeof(Lisp_Object *));
  27104. +   /*FifoBase = _FifoBase;*/
  27105. +   if (Read(fd, (char *)&code_size, sizeof code_size) != sizeof code_size ||
  27106. +       code_size != (char *)last_fn - (char *)first_fn)
  27107. +     bailout(fn);
  27108. +   Close(fd);
  27109. +   malloc_hunk = _malloc_hunk;
  27110. +   pure = _pure;
  27111. +   return 1;
  27112. + }
  27113. + void map_out_data(char *fn)
  27114. + {
  27115. +     if (amiga_initialized) error("You can only dump once !");
  27116. +     Fgarbage_collect();
  27117. +     patch();
  27118. +     dump(fn);
  27119. +     unpatch();
  27120. +     amiga_initialized = 1;
  27121. + }
  27122. + void map_in_data(int load)
  27123. + {
  27124. +     if (load && undump("GNUEmacs:etc/EMACS-DATA"))
  27125. +     {
  27126. +     unpatch();
  27127. +     current_screen = new_screen = temp_screen = 0;
  27128. +     message_buf = 0;
  27129. +     chars_wasted = copybuf = 0;
  27130. +     DC_ICcost = 0;
  27131. +     ILcost = DLcost = ILncost = DLncost = 0;
  27132. +     initialized = amiga_initialized = 1;
  27133. +     }
  27134. +     else
  27135. +       {
  27136. +     malloc_hunk = dump_malloc(malloc_hunk_size + pre_alloc);
  27137. +     pure = dump_malloc(puresize);
  27138. +       }
  27139. +     amiga_undump_reinit();
  27140. + }
  27141. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_malloc.c emacs-18.59/src/amiga_malloc.c
  27142. *** /src/baseline/emacs-18.59/src/amiga_malloc.c    Thu Jan  1 00:00:00 1970
  27143. --- emacs-18.59/src/amiga_malloc.c    Sat Dec  5 16:36:46 1992
  27144. ***************
  27145. *** 0 ****
  27146. --- 1,321 ----
  27147. + /* Emulation of some unix functions for emacs.
  27148. + Copyright (C) 1985, 1986, 1987, 1988 Free Software Foundation, Inc.
  27149. + This file is part of GNU Emacs.
  27150. + GNU Emacs is distributed in the hope that it will be useful,
  27151. + but WITHOUT ANY WARRANTY.  No author or distributor
  27152. + accepts responsibility to anyone for the consequences of using it
  27153. + or for whether it serves any particular purpose or works at all,
  27154. + unless he says so in writing.  Refer to the GNU Emacs General Public
  27155. + License for full details.
  27156. + Everyone is granted permission to copy, modify and redistribute
  27157. + GNU Emacs, but only under the conditions described in the
  27158. + GNU Emacs General Public License.   A copy of this license is
  27159. + supposed to have been given to you along with GNU Emacs so you
  27160. + can know your rights and responsibilities.  It should be in a
  27161. + file named COPYING.  Among other things, the copyright notice
  27162. + and this notice must be preserved on all copies.  */
  27163. + #include <exec/types.h>
  27164. + #include <exec/memory.h>
  27165. + #include <proto/exec.h>
  27166. + #undef LONGBITS
  27167. + #undef NULL
  27168. + #include "config.h"
  27169. + #include "lisp.h"
  27170. + #include "amiga.h"
  27171. + /* Memory stuff */
  27172. + long far DataSegBits;
  27173. + static int DataSegFound;
  27174. + static struct mem_header *far current;
  27175. + struct mem_header *free_list;
  27176. + extern int alloca_calling;
  27177. + extern int *pure;
  27178. + long far pre_alloc;    /* amount of memory to reserve for emacs */
  27179. + char *malloc_hunk;
  27180. + long malloc_hunk_size = MALLOC_HUNK_SIZE; /* Amount of memory malloc'ed by a
  27181. +                          to-be-dumped emacs */
  27182. + long malloc_bytes_used;    /* Amount of this hunk actually used */
  27183. + static int early_malloc = TRUE;    /* Before we undump, we want system allocations */
  27184. + #define ADDR_OK(x) (((long)x & ~VALMASK) == DataSegBits)
  27185. + /* Memory allocation code */
  27186. + /* ---------------------- */
  27187. + static void *alloc_sys(long memsize)
  27188. + /* Effect: Allocate from AmigaOS (via AllocMem). */
  27189. + {
  27190. +   /* Allocation rounded up to multiple of 4 */
  27191. +   long size = ((memsize + 3) & ~3) + sizeof(struct mem_header);
  27192. +   struct mem_header *mem;
  27193. +   if (!DataSegFound)
  27194. +     {
  27195. +       /* Find page containing Pure data. All data used by emacs must be
  27196. +      on the same page (As a page is 2^26 bytes, this shouldn't be too
  27197. +      unlikely). */
  27198. +       DataSegBits = (long)&first_data & ~VALMASK;
  27199. +       if (!(ADDR_OK(first_fn) && ADDR_OK(last_fn) &&
  27200. +         ADDR_OK(&first_data) && ADDR_OK(&last_data) &&
  27201. +         ADDR_OK(&first_bss) && ADDR_OK(&last_bss)))
  27202. +     _fail("I can't handle your memory configuration");
  27203. +       DataSegFound = TRUE;
  27204. +     }
  27205. +   mem = AllocMem(size, 0);
  27206. +   if (!mem) return 0;
  27207. +   /* All memory *must* be allocated on the same page ! */
  27208. +   if (!ADDR_OK(mem))
  27209. +     {
  27210. +       FreeMem(mem, size);
  27211. +       return 0;
  27212. +     }
  27213. +   if (current) current->prev = mem;
  27214. +   mem->next = current;
  27215. +   mem->prev = 0;
  27216. +   current = mem;
  27217. +   mem->size = size;
  27218. +   return mem + 1;
  27219. + }
  27220. + static void free_sys(char *p)
  27221. + {
  27222. +   struct mem_header *old = (struct mem_header *)p - 1;
  27223. +   if (old == current)
  27224. +     {
  27225. +       current = current->next;
  27226. +       if (current) current->prev = 0;
  27227. +     }
  27228. +   else
  27229. +     {
  27230. +       old->prev->next = old->next;
  27231. +       if (old->next) old->next->prev = old->prev;
  27232. +     }
  27233. +   FreeMem(old, old->size);
  27234. + }
  27235. + void _MemCleanup(void)
  27236. + {
  27237. +   struct mem_header *next;
  27238. +   while (current)
  27239. +     {
  27240. +       next = current->next;
  27241. +       FreeMem(current, current->size);
  27242. +       current = next;
  27243. +     }
  27244. + }
  27245. + static void *alloc_hunk(long memsize)
  27246. + /* Effect: Allocates from the malloc hunk (which is dumped to disk).
  27247. + */
  27248. + {
  27249. +   /* Allocation rounded up to multiple of 4 */
  27250. +   long size = ((memsize + 3) & ~3) + sizeof(struct mem_header);
  27251. +   /* Find a free block in the memory list */
  27252. +   struct mem_header *scan = free_list->next;
  27253. +   while (scan->size > 0)
  27254. +     {
  27255. +       if (size < scan->size)    /* Found ! */
  27256. +     {
  27257. +       long end;
  27258. +       /* Split block if big enough */
  27259. +       if (size + sizeof(struct mem_header) + 8 > scan->size)
  27260. +         {
  27261. +           /* Remove block from list */
  27262. +           scan->prev->next = scan->next;
  27263. +           scan->next->prev = scan->prev;
  27264. +         }
  27265. +       else
  27266. +         {
  27267. +           /* Split block */
  27268. +           struct mem_header *new = (struct mem_header *)((char *)scan + size);
  27269. +           new->prev = scan->prev;
  27270. +           new->next = scan->next;
  27271. +           scan->prev->next = new;
  27272. +           scan->next->prev = new;
  27273. +           new->size = scan->size - size;
  27274. +           scan->size = size;
  27275. +         }
  27276. +       if (!amiga_initialized)
  27277. +         {
  27278. +           end = (char *)scan - (char *)free_list + scan->size +
  27279. +         sizeof(long) + sizeof(struct mem_header);
  27280. +           if (end > malloc_bytes_used) malloc_bytes_used = end;
  27281. +         }
  27282. +       return scan + 1;
  27283. +     }
  27284. +       scan = scan->next;
  27285. +     }
  27286. +   return 0;
  27287. + }
  27288. + static void free_hunk(char *p)
  27289. + {
  27290. +   struct mem_header *old = (struct mem_header *)p - 1, *scan = free_list;
  27291. +   do scan = scan->next; while (scan < old);
  27292. +   /* Check for merges (potentially with both sides) */
  27293. +   if ((char *)scan->prev + scan->prev->size == (char *)old)
  27294. +     if ((char *)old + old->size == (char *)scan)
  27295. +       {
  27296. +     /* Merge all 3 blocks together */
  27297. +     scan->prev->size += old->size + scan->size;
  27298. +     scan->next->prev = scan->prev;
  27299. +     scan->prev->next = scan->next;
  27300. +       }
  27301. +     else            /* Merge with previous block */
  27302. +       scan->prev->size += old->size;
  27303. +   else if ((char *)old + old->size == (char *)scan)
  27304. +     {
  27305. +       /* Merge with next block */
  27306. +       old->size += scan->size;
  27307. +       scan->prev->next = old;
  27308. +       scan->next->prev = old;
  27309. +       old->prev = scan->prev;
  27310. +       old->next = scan->next;
  27311. +     }
  27312. +   else                /* Add a new block */
  27313. +     {
  27314. +       old->next = scan;
  27315. +       old->prev = scan->prev;
  27316. +       scan->prev->next = old;
  27317. +       scan->prev = old;
  27318. +     }
  27319. + }
  27320. + char *__halloc(long size)
  27321. + {
  27322. +   if (early_malloc) return alloc_sys(size);
  27323. +   if (!amiga_initialized)
  27324. +     if (alloca_calling)
  27325. +       {
  27326. +     alloca_calling = 0;
  27327. +     return alloc_sys(size);
  27328. +       }
  27329. +     else
  27330. +       {
  27331. +     void *mem = alloc_hunk(size);
  27332. +     if (!mem) 
  27333. +       _fail("Emacs dump: ran out of memory for malloc. \n"
  27334. +         "See the -malloc option for more information.\n");
  27335. +     return mem;
  27336. +       }
  27337. +   else
  27338. +     {
  27339. +       alloca_calling = 0;
  27340. +       if (pre_alloc)
  27341. +     {
  27342. +       void *mem;
  27343. +       if (mem = alloc_hunk(size)) return mem;
  27344. +     }
  27345. +       return alloc_sys(size);
  27346. +     }
  27347. + }
  27348. + char *malloc(int size)
  27349. + {
  27350. +   return __halloc(size);
  27351. + }
  27352. + free(void *p)
  27353. + {
  27354. +   struct mem_header *old = (struct mem_header *)p - 1;
  27355. +   if ((char *)p >= malloc_hunk &&
  27356. +       (char *)p <= malloc_hunk + malloc_hunk_size + pre_alloc)
  27357. +     {
  27358. +       if (!amiga_initialized || pre_alloc) free_hunk(p);
  27359. +     }
  27360. +   else free_sys(p);
  27361. + }
  27362. + char *calloc(long n, long size)
  27363. + {
  27364. +   char *t;
  27365. +   long rsize = n * size;
  27366. +   t = malloc(rsize);
  27367. +   if (t) memset (t, 0, rsize);
  27368. +   return t;
  27369. + }
  27370. + char *realloc(char *p, long size)
  27371. + {
  27372. +   char *new = malloc(size);
  27373. +   struct mem_header *old = (struct mem_header *)p - 1;
  27374. +   if (new)
  27375. +     {
  27376. +       long minsize;
  27377. +       long oldsize = old->size - sizeof(struct mem_header);
  27378. +       if (size < oldsize) minsize = size;
  27379. +       else minsize = oldsize;
  27380. +       memcpy(new, p, minsize);
  27381. +     }
  27382. +   free(p);
  27383. +   return new;
  27384. + }
  27385. + void emacs_malloc_init(void)
  27386. + {
  27387. +   struct mem_header *end_sentinel, *new_end, *new_block;
  27388. +   early_malloc = FALSE;        /* We now have a malloc hunk */
  27389. +   /* Set up the memory allocation in the malloc hunk */
  27390. +   free_list = (struct mem_header *)malloc_hunk;
  27391. +   end_sentinel = (struct mem_header *)((char *)free_list + malloc_hunk_size
  27392. +                        - sizeof(struct mem_header));
  27393. +   if (!amiga_initialized)
  27394. +     {
  27395. +       /* Before dumping */
  27396. +       free_list->next = free_list + 1;
  27397. +       free_list->prev = 0;
  27398. +       free_list->size = 0;    /* Prevents merges with this pseudo-block */
  27399. +       free_list[1].prev = free_list;
  27400. +       free_list[1].next = end_sentinel;
  27401. +       free_list[1].size =
  27402. +     malloc_hunk_size - 2 * sizeof(struct mem_header) - sizeof(long);
  27403. +       /* The - sizeof(long) prevents any merges with end_sentinel */
  27404. +       end_sentinel->size = 0;
  27405. +       end_sentinel->prev = free_list + 1;
  27406. +       end_sentinel->next = 0;
  27407. +       malloc_bytes_used = 0;
  27408. +     }
  27409. +   else if (pre_alloc)
  27410. +     {
  27411. +       /* After having undumped extend malloc block */
  27412. +       /* Move end_sentinel: */
  27413. +       new_end = (struct mem_header *)((char *)free_list + malloc_hunk_size +
  27414. +                       pre_alloc - sizeof(struct mem_header));
  27415. +       new_end->size = 0;
  27416. +       new_end->next = 0;
  27417. +       new_end->prev = end_sentinel->prev;
  27418. +       end_sentinel->prev->next = new_end;
  27419. +       /* Add extra memory (pre_alloc bytes) */
  27420. +       new_block = (struct mem_header *)((char *)end_sentinel - sizeof(long));
  27421. +       new_block->size = pre_alloc;
  27422. +       free_hunk((char *)(new_block + 1));
  27423. +     }
  27424. + }
  27425. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_menu.c emacs-18.59/src/amiga_menu.c
  27426. *** /src/baseline/emacs-18.59/src/amiga_menu.c    Thu Jan  1 00:00:00 1970
  27427. --- emacs-18.59/src/amiga_menu.c    Thu Sep 30 21:27:42 1993
  27428. ***************
  27429. *** 0 ****
  27430. --- 1,309 ----
  27431. + #include <exec/types.h>
  27432. + #include <libraries/gadtools.h>
  27433. + #include <intuition/intuition.h>
  27434. + #include <proto/exec.h>
  27435. + #include <proto/dos.h>
  27436. + #include <proto/gadtools.h>
  27437. + #include <proto/intuition.h>
  27438. + #include "config.h"
  27439. + #undef NULL
  27440. + #include "lisp.h"
  27441. + #include "amiga.h"
  27442. + #ifndef GTMN_NewLookMenus
  27443. + #define GTMN_NewLookMenus    GT_TagBase+67
  27444. + #endif
  27445. + static struct Menu *emacs_menu;
  27446. + static char *emacs_menu_strings;
  27447. + static APTR win_vi;
  27448. + struct Library *GadToolsBase;
  27449. + void suspend_menus(void)
  27450. + {
  27451. +   if (emacs_win)
  27452. +     {
  27453. +       ClearMenuStrip(emacs_win);
  27454. +       if (win_vi)
  27455. +     {
  27456. +       FreeVisualInfo(win_vi);
  27457. +       win_vi = 0;
  27458. +     }
  27459. +     }
  27460. + }
  27461. + int resume_menus(void)
  27462. + {
  27463. +   if (emacs_win && emacs_menu)
  27464. +     {
  27465. +       win_vi = GetVisualInfo(emacs_win->WScreen, TAG_END);
  27466. +       if (!win_vi || !LayoutMenus(emacs_menu, win_vi,
  27467. +                   GTMN_NewLookMenus, 1L,
  27468. +                   TAG_END))
  27469. +     {
  27470. +       if (win_vi) FreeVisualInfo(win_vi);
  27471. +       Famiga_delete_menus();
  27472. +       return FALSE;
  27473. +     }
  27474. +       SetMenuStrip(emacs_win, emacs_menu);
  27475. +     }
  27476. +   return TRUE;
  27477. + }
  27478. + DEFUN ("amiga-menus", Famiga_menus, Samiga_menus, 1, 1, 0,
  27479. +   "Define menus for emacs. The argument is a list structured as follows:\n\
  27480. +    ((menu1-name ((item1-name item1-expr item1-key item1-disabled) ...)\n\
  27481. +      menu1-disabled) ...)\n\
  27482. + menu-name is the name of the menu item header.\n\
  27483. + The menu is disabled if menu-disabled is not nil [optional].\n\
  27484. + item-name is the name of an item.\n\
  27485. + The item-expr fields are ignored.\n\
  27486. + If item-key is nil, no shortcut is allowed.\n\
  27487. + If item-disabled is not nil, the item is disabled.\n\
  27488. + If the item information list is nil, a line is drawn in the menu.\n\
  27489. + item-key & item-disabled are optional.")
  27490. +   (menus)
  27491. +      Lisp_Object menus;
  27492. + {
  27493. +     Lisp_Object s_menus, s_items;
  27494. +     int citems, slen;
  27495. +     char *strdata;
  27496. +     struct NewMenu *menudata, *mkm;
  27497. +     struct Lisp_String *name;
  27498. + /*    int i;
  27499. +     extern int total[], nb[];
  27500. +     for (i = 0; i < 16; i++)
  27501. +     {
  27502. +     printf("%d(%d) ", total[i], nb[i]);
  27503. +     total[i] = nb[i] = 0;
  27504. +     }
  27505. +     printf("\n");
  27506. +     start_count(15);
  27507. +     for (i = 0; i < 100; i++) { suspend_count(15); resume_count(15); }
  27508. +     stop_count(15);
  27509. +     for (i = 0; i < 100; i++) { start_count(14); stop_count(14); }
  27510. +     printf("100 s/r: %d, 100 s/s: %d\n", total[15], total[14]);
  27511. +     return Qnil;
  27512. + */
  27513. +     check_intuition();
  27514. +     /* Check structure of parameter & count # items & menus */
  27515. +     s_menus = menus;
  27516. +     citems = slen = 0;
  27517. +     while (!NULL(s_menus))
  27518. +     {
  27519. +     struct Lisp_Cons *menu, *menu_cell;
  27520. +     CHECK_CONS(s_menus, 0);
  27521. +     menu_cell = XCONS(s_menus);
  27522. +     citems++;
  27523. +     CHECK_CONS(menu_cell->car, 0); /* Each menu is a list */
  27524. +     menu = XCONS(menu_cell->car);
  27525. +     CHECK_STRING(menu->car, 0); /* Check name */
  27526. +     name = XSTRING(menu->car);
  27527. +     slen += name->size + 1;
  27528. +     CHECK_CONS(menu->cdr, 0);
  27529. +     menu = XCONS(menu->cdr); /* Check items */
  27530. +     s_items = menu->car;
  27531. +     while (!NULL(s_items))
  27532. +     {
  27533. +         struct Lisp_Cons *item, *item_cell;
  27534. +         CHECK_CONS(s_items, 0);
  27535. +         item_cell = XCONS(s_items);
  27536. +         citems++;
  27537. +         if (!NULL(item_cell->car))
  27538. +         {
  27539. +         CHECK_CONS(item_cell->car, 0); /* Each item is a list */
  27540. +         item = XCONS(item_cell->car);
  27541. +         CHECK_STRING(item->car, 0);
  27542. +         name = XSTRING(item->car);
  27543. +         slen += name->size + 1;
  27544. +         if (!NULL(item->cdr)) /* Only name is necessary */
  27545. +         {
  27546. +             CHECK_CONS(item->cdr, 0);
  27547. +             item = XCONS(item->cdr);
  27548. +             /* Expr is arbitrary */
  27549. +             if (!NULL(item->cdr))
  27550. +             {
  27551. +             CHECK_CONS(item->cdr, 0);
  27552. +             item = XCONS(item->cdr);
  27553. +             /* Check shortcut */
  27554. +             if (!NULL(item->car))
  27555. +             {
  27556. +                 CHECK_NUMBER(item->car, 0);
  27557. +                 slen += 2;
  27558. +             }
  27559. +             if (!NULL(item->cdr))
  27560. +             {
  27561. +                 CHECK_CONS(item->cdr, 0);
  27562. +                 item = XCONS(item->cdr);
  27563. +                 /* Check that end of list */
  27564. +                 if (!NULL(item->cdr)) error("Badly formed item");
  27565. +             }
  27566. +             }
  27567. +         }
  27568. +         }
  27569. +         s_items = item_cell->cdr;
  27570. +     }
  27571. +     if (!NULL(menu->cdr))
  27572. +     {
  27573. +         CHECK_CONS(menu->cdr, 0);
  27574. +         menu = XCONS(menu->cdr);
  27575. +         if (!NULL(menu->cdr)) error("Badly formed menu");
  27576. +     }
  27577. +     s_menus = menu_cell->cdr;
  27578. +     }
  27579. +     suspend_menus();
  27580. +     if (emacs_menu) Famiga_delete_menus();
  27581. +     /* Now create menu structure */
  27582. +     menudata = (struct NewMenu *)alloca(sizeof(struct NewMenu) * (citems + 1));
  27583. +     emacs_menu_strings = strdata = (char *)xmalloc(slen);
  27584. +     mkm = menudata;
  27585. +     s_menus = menus;
  27586. +     while (!NULL(s_menus))
  27587. +     {
  27588. +     struct Lisp_Cons *menu, *menu_cell;
  27589. +     struct NewMenu *menu1;
  27590. +     menu_cell = XCONS(s_menus);
  27591. +     mkm->nm_Type = NM_TITLE;
  27592. +     menu = XCONS(menu_cell->car);
  27593. +     name = XSTRING(menu->car);
  27594. +     strcpy(strdata, name->data);
  27595. +     mkm->nm_Label = strdata;
  27596. +     strdata += name->size + 1;
  27597. +     mkm->nm_CommKey = 0;
  27598. +     mkm->nm_Flags = 0;
  27599. +     mkm->nm_MutualExclude = 0;
  27600. +     menu1 = mkm++;
  27601. +     menu = XCONS(menu->cdr); /* Check items */
  27602. +     s_items = menu->car;
  27603. +     while (!NULL(s_items))
  27604. +     {
  27605. +         struct Lisp_Cons *item, *item_cell;
  27606. +         item_cell = XCONS(s_items);
  27607. +         mkm->nm_Type = NM_ITEM;
  27608. +         mkm->nm_CommKey = 0;
  27609. +         mkm->nm_Flags = 0;
  27610. +         mkm->nm_MutualExclude = 0;
  27611. +         if (NULL(item_cell->car))
  27612. +         {
  27613. +         mkm->nm_Type = IM_ITEM;
  27614. +         mkm->nm_Label = NM_BARLABEL;
  27615. +         }
  27616. +         else
  27617. +         {
  27618. +         item = XCONS(item_cell->car);
  27619. +         name = XSTRING(item->car);
  27620. +         strcpy(strdata, name->data);
  27621. +         mkm->nm_Label = strdata;
  27622. +         strdata += name->size + 1;
  27623. +         if (!NULL(item->cdr)) /* Only name is necessary */
  27624. +         {
  27625. +             item = XCONS(item->cdr);
  27626. +             /* Expr is ignored */
  27627. +             if (!NULL(item->cdr))
  27628. +             {
  27629. +             item = XCONS(item->cdr);
  27630. +             /* Check shortcut */
  27631. +             if (!NULL(item->car))
  27632. +             {
  27633. +                 mkm->nm_CommKey = strdata;
  27634. +                 strdata[0] = XFASTINT(item->car);
  27635. +                 strdata[1] = '\0';
  27636. +                 strdata += 2;
  27637. +             }
  27638. +             if (!NULL(item->cdr))
  27639. +             {
  27640. +                 item = XCONS(item->cdr);
  27641. +                 if (!NULL(item->car))
  27642. +                 mkm->nm_Flags |= NM_ITEMDISABLED;
  27643. +             }
  27644. +             }
  27645. +         }
  27646. +         }
  27647. +         mkm++;
  27648. +         s_items = item_cell->cdr;
  27649. +     }
  27650. +     if (!NULL(menu->cdr))
  27651. +     {
  27652. +         menu = XCONS(menu->cdr);
  27653. +         if (!NULL(menu->car)) menu1->nm_Flags |= NM_MENUDISABLED;
  27654. +     }
  27655. +     s_menus = menu_cell->cdr;
  27656. +     }
  27657. +     mkm->nm_Type = NM_END;
  27658. +     mkm->nm_Label = 0;
  27659. +     mkm->nm_CommKey = 0;
  27660. +     mkm->nm_Flags = 0;
  27661. +     mkm->nm_MutualExclude = 0;
  27662. +     if (!(emacs_menu = CreateMenus(menudata, TAG_END)))
  27663. +     {
  27664. +     free(emacs_menu_strings);
  27665. +     emacs_menu_strings = 0;
  27666. +     error("Menu couldn't be created");
  27667. +     }
  27668. +     if (!resume_menus()) error("Menu couldn't be layed out");
  27669. +     return Qt;
  27670. + }
  27671. + DEFUN ("amiga-delete-menus", Famiga_delete_menus, Samiga_delete_menus, 0, 0, 0,
  27672. +        "Remove & free menu strip")
  27673. +    ()
  27674. + {
  27675. +     check_intuition();
  27676. +     suspend_menus();
  27677. +     if (emacs_menu) FreeMenus(emacs_menu);
  27678. +     emacs_menu = 0;
  27679. +     if (emacs_menu_strings) free(emacs_menu_strings);
  27680. +     emacs_menu_strings = 0;
  27681. +     return Qt;
  27682. + }
  27683. + void syms_of_amiga_menu(void)
  27684. + {
  27685. +     defsubr(&Samiga_delete_menus);
  27686. +     defsubr(&Samiga_menus);
  27687. + }
  27688. + void init_amiga_menu(void)
  27689. + {
  27690. +     GadToolsBase = OpenLibrary("gadtools.library", 0);
  27691. +     if (!GadToolsBase) _fail("gadtools.library required");
  27692. + }
  27693. + void cleanup_amiga_menu(void)
  27694. + {
  27695. +   suspend_menus();
  27696. +   if (emacs_menu) Famiga_delete_menus();
  27697. +   if (GadToolsBase) CloseLibrary(GadToolsBase);
  27698. + }
  27699. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_processes.c emacs-18.59/src/amiga_processes.c
  27700. *** /src/baseline/emacs-18.59/src/amiga_processes.c    Thu Jan  1 00:00:00 1970
  27701. --- emacs-18.59/src/amiga_processes.c    Sun Nov 22 10:13:02 1992
  27702. ***************
  27703. *** 0 ****
  27704. --- 1,94 ----
  27705. + #include <exec/types.h>
  27706. + #include <exec/execbase.h>
  27707. + #include <exec/memory.h>
  27708. + #include <dos/dos.h>
  27709. + #include <dos/dosextens.h>
  27710. + #include <dos/dostags.h>
  27711. + #include <proto/exec.h>
  27712. + #include <proto/dos.h>
  27713. + #include <clib/alib_protos.h>
  27714. + #include <signal.h>
  27715. + #undef signal
  27716. + #include <ios1.h>
  27717. + #include <string.h>
  27718. + #include <errno.h>
  27719. + #include <stdio.h>
  27720. + #include <internal/vars.h>
  27721. + #include "config.h"
  27722. + #include "lisp.h"
  27723. + #include "amiga.h"
  27724. + #include "emacssignal.h"
  27725. + extern struct ExecBase *SysBase;
  27726. + int amiga_process_stack_size;
  27727. + /* A few emacs support functions */
  27728. + /* ----------------------------- */
  27729. + wait_for_termination (pid)
  27730. +      int pid;
  27731. + {
  27732. +   while (1)
  27733. +     {
  27734. +       sigsetmask (sigmask (SIGCHLD));
  27735. +       if (0 > kill (pid, 0))
  27736. +         {
  27737. +       sigsetmask (SIGEMPTYMASK);
  27738. +       break;
  27739. +     }
  27740. +       sigpause (SIGEMPTYMASK);
  27741. +     }
  27742. + }
  27743. + char *amiga_path(void)
  27744. + {
  27745. +   char *path, *pp, name[128];
  27746. +   int pathsize;
  27747. +   struct CommandLineInterface *cli;
  27748. +   BPTR lock;
  27749. +   long l, *lp, nlen;
  27750. +   pathsize = 128;
  27751. +   path = (char *)xmalloc(pathsize);
  27752. +   strcpy(path, ".");
  27753. +   pp = path + 1;
  27754. +   if (!(cli = (struct CommandLineInterface *)((long)_us->pr_CLI << 2)))
  27755. +     return path;
  27756. +   l = (long)cli->cli_CommandDir;
  27757. +   while (l) {
  27758. +     *pp++ = ',';
  27759. +     l <<= 2;
  27760. +     lp = (long *)l;
  27761. +     lock = (BPTR)*(lp + 1);
  27762. +     NameFromLock(lock, name, 128);
  27763. +     nlen = strlen(name);
  27764. +     if (pp + nlen + 5 >= path + pathsize)
  27765. +       {
  27766. +     char *newpath;
  27767. +     pathsize = 2 * pathsize + nlen;
  27768. +     newpath = (char *)xrealloc(path);
  27769. +     pp = newpath + (pp - path);
  27770. +     path = newpath;
  27771. +       }
  27772. +     memcpy(pp, name, nlen);
  27773. +     pp += nlen;
  27774. +     l = *lp;
  27775. +   }
  27776. +   /* Use of +5 above guarantees that there is enough space for c: */
  27777. +   strcpy(pp, ",c:");
  27778. +   return path;
  27779. + }
  27780. + void syms_of_amiga_processes(void)
  27781. + {
  27782. +   amiga_process_stack_size = 0;
  27783. +   DEFVAR_INT("amiga-process-stack-size", &amiga_process_stack_size,
  27784. +      "Size of stack for called processes. 0 means same size as emacs stack.");
  27785. + }
  27786. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_rexx.c emacs-18.59/src/amiga_rexx.c
  27787. *** /src/baseline/emacs-18.59/src/amiga_rexx.c    Thu Jan  1 00:00:00 1970
  27788. --- emacs-18.59/src/amiga_rexx.c    Sat Jun  5 13:21:16 1993
  27789. ***************
  27790. *** 0 ****
  27791. --- 1,460 ----
  27792. + /* low level ARexx code for use in amiga version of Emacs.
  27793. +    Copyright (C) 1993 Christian E. Hopps.
  27794. + This file is part of GNU Emacs.
  27795. + GNU Emacs is free software; you can redistribute it and/or modify
  27796. + it under the terms of the GNU General Public License as published by
  27797. + the Free Software Foundation; either version 1, or (at your option)
  27798. + any later version.
  27799. + GNU Emacs is distributed in the hope that it will be useful,
  27800. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  27801. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  27802. + GNU General Public License for more details.
  27803. + You should have received a copy of the GNU General Public License
  27804. + along with GNU Emacs; see the file COPYING.  If not, write to
  27805. + the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  27806. + #include "SimpleRexx.h"
  27807. + #include <proto/exec.h>
  27808. + #undef NULL
  27809. + #include "config.h"
  27810. + #include "lisp.h"
  27811. + #include "amiga.h"
  27812. + #define XLRXMSG(x) ((struct LispRexxMsg *) XPNTR((x)))
  27813. + #define XSETLRXMSG(x,v) (XSET((x), Lisp_Int, v))
  27814. + static AREXXCONTEXT far handle;
  27815. + static int amiga_arexx_initialized;
  27816. + /* This structure should be allocated with emacs_malloc() its pointer will be */
  27817. + /* used as an msgid. (emacs XUINT())*/
  27818. + struct LispRexxMsg {
  27819. +   struct MinNode  lrm_Node;              /* A node for tracking messages. */
  27820. +   struct RexxMsg *lrm_Msg;              /* The actual Rexx Msg. */
  27821. +   ULONG  lrm_Flags;
  27822. + };
  27823. + /* Flags for LispRexxMessage indicating what to do with it. */
  27824. + #define LRMF_SENTCMD (1L << 0)              /* this msg originated here. */
  27825. + #define LRMF_DOERRORS (1L << 1)              /* handle error replies */
  27826. + #define LRMF_DORESULTS (1L << 2)          /* handle result strings */
  27827. + struct LispRexxList {
  27828. +     struct MinList lrl_List;
  27829. +     int    lrl_Count;
  27830. + };
  27831. + struct LispRexxList pending;              /* The list of pending */
  27832. +                           /* (outgoing) Rexx Messages. */
  27833. + struct LispRexxList returned;              /* The list of pending */
  27834. +                           /* (outgoing) Rexx Messages */
  27835. +                           /* that have been received. */
  27836. + struct LispRexxList incoming;              /* The message that are */
  27837. +                           /* incoming to Emacs (sent */
  27838. +                           /* from some other rexx host. */
  27839. + /* allocate a rexx message properly */
  27840. + Lisp_Object alloc_rexx_msg(ULONG flags)
  27841. + {
  27842. +     Lisp_Object rm = Qnil;
  27843. +     struct LispRexxMsg *lrm = (struct LispRexxMsg *)malloc(sizeof(*lrm));
  27844. +     if(lrm) {
  27845. +     lrm->lrm_Flags = flags;
  27846. +     XSETLRXMSG(rm,lrm);
  27847. +     return(rm);
  27848. +     }
  27849. +     return(Qnil);
  27850. + }
  27851. + /* free an arexx message allocated with alloc_arexx_msg() */
  27852. + void free_rexx_msg (Lisp_Object rm)
  27853. + {
  27854. +     if(!NULL(rm)) {
  27855. +     void *mem = XLRXMSG(rm);
  27856. +     free(mem);
  27857. +     }
  27858. + }
  27859. + /* The next 2 functions imlement FIFO lists. */
  27860. + /* add LispRexxMsg to a LispRexxLisp Tail. */
  27861. + void add_rexx_msg_to_tail(struct LispRexxList *rl, Lisp_Object rm)
  27862. + {
  27863. +     AddTail((struct List *)rl,(struct Node *)XPNTR(rm));
  27864. +     rl->lrl_Count++;
  27865. + }
  27866. + /* remove LispRexxMsg from head of a LispRexxLisp. */
  27867. + Lisp_Object remove_rexx_msg_from_head(struct LispRexxList *rl)
  27868. + {
  27869. +     Lisp_Object rm = (Lisp_Object)RemHead((struct List *)rl);
  27870. +     if(rm != 0) {
  27871. +     rl->lrl_Count--;
  27872. +     return(rm);
  27873. +     } else {
  27874. +         return Qnil;
  27875. +     }
  27876. + }
  27877. + void remove_rexx_msg(struct LispRexxList *rl, Lisp_Object rm)
  27878. + {
  27879. +     Remove((struct Node *)XPNTR(rm));
  27880. +     rl->lrl_Count--;
  27881. + }
  27882. + /* find a rexx message on a list given an msgid (ptr) */
  27883. + int is_rexx_msgid_on_list(struct LispRexxList *rl,
  27884. +                     Lisp_Object id)
  27885. + {
  27886. +     struct MinNode *mn = rl->lrl_List.mlh_Head;
  27887. +     for(mn; mn->mln_Succ; mn = mn->mln_Succ) {
  27888. +     Lisp_Object cmpid = Qnil;
  27889. +     XSETLRXMSG(cmpid,mn);
  27890. +     if( EQ(cmpid,id)) {
  27891. +         return(1);
  27892. +     }
  27893. +     }
  27894. +     return(0);
  27895. + }
  27896. + Lisp_Object find_rexx_msg_on_list(struct LispRexxList *rl,
  27897. +                   struct RexxMsg *msg)
  27898. + {
  27899. +     Lisp_Object pnt = Qnil;
  27900. +     struct MinNode *mn = rl->lrl_List.mlh_Head;
  27901. +     for(mn; mn->mln_Succ; mn = mn->mln_Succ) {
  27902. +     if( ((struct LispRexxMsg *)mn)->lrm_Msg == msg) {
  27903. +         XSETLRXMSG(pnt,mn);
  27904. +     }
  27905. +     }
  27906. +     return(pnt);
  27907. + }
  27908. + /* This function is given a RexxMsg and it goes and find (or doesn't) the */
  27909. + /* corisponding pending message, removes it from the list and sets up the lisp */
  27910. + /* list for return values.  if it is not found nil is returned. (it deals with */
  27911. + /* the errors for incoming messages properly.  Some thought is needed on how to */
  27912. + /* handle errors from replied sent commands that were not asking for results. */
  27913. + Lisp_Object handle_rexx_msg_replied(struct RexxMsg *msg)
  27914. + {
  27915. +     Lisp_Object rm = find_rexx_msg_on_list(&pending, msg);
  27916. +     if(!NULL(rm)) {
  27917. +     /* Process the command.  If it was requesting results strings handle */
  27918. +     /* them otherwise just delete. */
  27919. +     struct LispRexxMsg *lrm = XLRXMSG(rm);
  27920. +     remove_rexx_msg(&pending, rm);
  27921. +     if(msg->rm_Result1 == 0) {
  27922. +         if(lrm->lrm_Flags & LRMF_DORESULTS) {
  27923. +         /* add to returned so that result can be fetched. */
  27924. +         add_rexx_msg_to_tail(&returned,rm);
  27925. +         } else {
  27926. +         /* simply delete rexx message. */
  27927. +         DeleteARexxMsg(handle,msg);
  27928. +         free_rexx_msg(rm);
  27929. +         }
  27930. +     } else {
  27931. +         /* an error occured with our message. */
  27932. +         if(lrm->lrm_Flags & LRMF_DOERRORS) {
  27933. +         /* add to returned so that error can be fetched. */
  27934. +         add_rexx_msg_to_tail(&returned,rm);
  27935. +         } else {
  27936. +         /* simply delete rexx message. */
  27937. +         DeleteARexxMsg(handle,msg);
  27938. +         free_rexx_msg(rm);
  27939. +         }
  27940. +     }
  27941. +     } else {
  27942. +     /* This should never happen we received a rexx message reply */
  27943. +     /* that we never sent out. */
  27944. +     DeleteARexxMsg(handle,msg);
  27945. +     }
  27946. + }
  27947. + /* This function takes incoming messages and place them on the incoming msg */
  27948. + /* list.  */
  27949. + Lisp_Object handle_rexx_msg_received(struct RexxMsg *msg)
  27950. + {
  27951. +     Lisp_Object rm = alloc_rexx_msg(LRMF_DORESULTS|LRMF_DOERRORS);
  27952. +     if(!NULL(rm)) {
  27953. +     /* Add message to incoming list. */
  27954. +     struct LispRexxMsg *lrm = XLRXMSG(rm);
  27955. +     lrm->lrm_Msg = msg;              /* set msg pointer. */
  27956. +     add_rexx_msg_to_tail(&incoming,rm);
  27957. +     } else {
  27958. +     /* This should never happen we received a rexx message but ran out of */
  27959. +     /* memory.  Set last error msg. and reply with fail. */
  27960. +     SetARexxLastError(handle, msg, "Out of emacs memory.");
  27961. +     ReplyARexxMsg(handle, msg, 0, 20);
  27962. +     }
  27963. + }
  27964. + /* Almost the same as old one, but we now call handle_pending_arexx_reply() for */
  27965. + /* replied messages that we sent, so that we can setup result strings and such. */
  27966. + int check_arexx(int force, int kbd)
  27967. + {
  27968. +     struct RexxMsg *msg;
  27969. +     int msg_received = FALSE;
  27970. +     while (msg = GetARexxMsg(handle)) {
  27971. +     msg_received = TRUE;
  27972. +     if(msg->rm_Node.mn_Node.ln_Type == NT_REPLYMSG)    {
  27973. +         /* This is a reply to a rexx command we send out. */
  27974. +         handle_rexx_msg_replied(msg);
  27975. +     } else {
  27976. +         handle_rexx_msg_received(msg);
  27977. +     }
  27978. +     }
  27979. +     if ((kbd && amiga_arexx_initialized)) {
  27980. +     /* if we got a message or we have some out, or we have some waiting to */
  27981. +     /* be processes then enque the Key sequence that will call the rexx */
  27982. +     /* message handler.  We obviously don't do this for returned commands :^) */
  27983. +     if ((msg_received || force && incoming.lrl_Count > 0) &&
  27984. +         get_ttycount() == 0) {
  27985. +         enque(AMIGASEQ, FALSE); enque('X', FALSE);
  27986. +     }
  27987. +     }
  27988. +     return msg_received;
  27989. + }
  27990. + DEFUN ("amiga-arexx-wait", Famiga_arexx_wait, Samiga_arexx_wait, 0, 0, 0,
  27991. +        "Wait for an ARexx event (command or reply) before proceeding.")
  27992. +     ()
  27993. + {
  27994. +     while (!check_arexx(FALSE, FALSE)) Wait(ARexxSignal(handle));
  27995. + }
  27996. + DEFUN ("amiga-arexx-check-command",
  27997. +        Famiga_arexx_check_command, Samiga_arexx_check_command, 1, 1, 0,
  27998. +        "Return t if command ID has finished, nil otherwise.")
  27999. +     (id)
  28000. + Lisp_Object id;
  28001. + {
  28002. +     CHECK_NUMBER(id,0);
  28003. +     if(is_rexx_msgid_on_list(&pending,id)) {
  28004. +     /* still on pending return false. */
  28005. +     return Qnil;
  28006. +     } else if(is_rexx_msgid_on_list(&returned,id)) {
  28007. +     /* is waiting to be processed return true. */
  28008. +     return Qt;
  28009. +     }
  28010. +     /* is nowhere to be found. error. */
  28011. +     error("id not found.");
  28012. +     return Qnil;
  28013. + }
  28014. + DEFUN ("amiga-arexx-get-next-msg", Famiga_arexx_get_next_msg,
  28015. +        Samiga_get_next_msg, 0, 0, 0,
  28016. + "Returns the oldest arexx msg sent to emacs rexx port.\n\
  28017. + When you are through with this message call (amiga-arexx-reply).\n\
  28018. + if the msg is not replied this function will continue to\n\
  28019. + return that msg until it has been replied to.")
  28020. +   ()
  28021. + {
  28022. +     struct RexxMsg *rmsg;
  28023. +     check_arexx(FALSE, FALSE);
  28024. +     if (incoming.lrl_Count) {
  28025. +     struct RexxMsg *msg = ((struct LispRexxMsg *)
  28026. +                    incoming.lrl_List.mlh_Head)->lrm_Msg;
  28027. +     return build_string(ARG0(msg));
  28028. +     }
  28029. +     /* nothing to be gotten. */
  28030. +     return Qnil;
  28031. + }
  28032. + DEFUN("amiga-arexx-get-msg-results", Famiga_arexx_get_msg_results,
  28033. +       Samiga_arexx_get_msg_results, 1,1,0,
  28034. + "Returns the results from MSGID. will be a list of the form:\n\
  28035. +   (msgid resultcode secondary)\n\n\
  28036. + If resultcode is 0 then secondary will be a string or nil.\n\
  28037. + else resulcode will be greater than 0 and secondary will be\n\
  28038. + an error-code (int).\n\n\
  28039. + If MSGID has not yet completed nil is returned.\n\
  28040. + if MSGID has been dealt with or is invalid and error will occur.")
  28041. +     (msgid)
  28042. + Lisp_Object msgid;
  28043. + {
  28044. +     CHECK_NUMBER(msgid,0);
  28045. +     if(is_rexx_msgid_on_list(&returned,msgid)) {
  28046. +     /* msgid has completed build list and delete LispRexxMsg. */
  28047. +     struct LispRexxMsg *lrm = XLRXMSG(msgid);
  28048. +     Lisp_Object rc, error_or_string, ret;
  28049. +     struct RexxMsg *msg = lrm->lrm_Msg;
  28050. +     remove_rexx_msg(&returned,msgid);
  28051. +     rc = make_number(msg->rm_Result1);
  28052. +     if(msg->rm_Result1 == 0) {
  28053. +         error_or_string = msg->rm_Result2 ? build_string(msg->rm_Result2) : 0;
  28054. +     } else {
  28055. +         /* error occurred */
  28056. +         error_or_string = make_number(msg->rm_Result2); /* save error code. */
  28057. +     }
  28058. +     free_rexx_msg(msgid);              /* free our rexx msg. */
  28059. +     DeleteARexxMsg(handle,msg);          /* free ARexx msg proper */
  28060. +     /* build lisp list. */
  28061. +     ret = Fcons( msgid, Fcons( rc, Fcons(error_or_string, Qnil)));
  28062. +     if(NULL(ret)) {
  28063. +         error("Couldn't get memory.");
  28064. +     }
  28065. +     return(ret);
  28066. +     } else if(is_rexx_msgid_on_list(&pending,msgid)) {
  28067. +     return Qnil;                  /* this msgid has not yet completed. */
  28068. +     } else {
  28069. +     error("Unknown MSGID.");
  28070. +     return Qnil;
  28071. +     }
  28072. + }
  28073. + DEFUN ("amiga-arexx-reply", Famiga_arexx_reply, Samiga_arexx_reply,
  28074. +        2, 2, 0,
  28075. + "Replies to the first arexx message (the one got via amiga-arexx-get-event)\n\
  28076. + with RC as return code.\n\
  28077. + If RC=0, TEXT is the result, otherwise it is the error text. It can be nil.")
  28078. +     (rc, text)
  28079. + Lisp_Object rc, text;
  28080. + {
  28081. +     int retcode, ok = TRUE;
  28082. +     char *result;
  28083. +     struct RexxMsg *rmsg;
  28084. +     Lisp_Object rm = remove_rexx_msg_from_head(&incoming);
  28085. +     struct LispRexxMsg *lrm = XLRXMSG(rm);
  28086. +     if (NULL(rm))
  28087. +     error("No ARexx message to reply to.");
  28088. +     rmsg = lrm->lrm_Msg;
  28089. +     CHECK_NUMBER(rc, 0);
  28090. +     retcode = XINT(rc);
  28091. +     if (!NULL (text)) {
  28092. +     CHECK_STRING(text, 0);
  28093. +     result = XSTRING (text)->data;
  28094. +     } else {
  28095. +     result = 0;
  28096. +     }
  28097. +     if (retcode && result)
  28098. +     ok = SetARexxLastError(handle, rmsg, result);
  28099. +     ReplyARexxMsg(handle, rmsg, result, retcode);
  28100. +     if (!ok)
  28101. +     error("Failed to set ARexx error message.");
  28102. +     return Qnil;
  28103. + }
  28104. + Lisp_Object send_rexx_command(Lisp_Object str, Lisp_Object as_file,
  28105. +                   ULONG flags)
  28106. + {
  28107. +     struct RexxMsg *rmsg;
  28108. +     int i;
  28109. +     Lisp_Object id, rm;
  28110. +     struct LispRexxMsg *lrm;
  28111. +     rm = alloc_rexx_msg(flags);
  28112. +     if(NULL(rm)) {
  28113. +     error("Failed to send command to ARexx.");
  28114. +     return Qnil;
  28115. +     }
  28116. +     CHECK_STRING (str, 0);
  28117. +     if (!(rmsg = SendARexxMsg(handle, XSTRING (str)->data,!NULL (as_file),
  28118. +                   (flags & LRMF_DORESULTS ? 1 : 0)))) {
  28119. +     free_rexx_msg(rm);
  28120. +     error("Failed to send command to ARexx.");
  28121. +     return Qnil;
  28122. +     }
  28123. +     lrm = XLRXMSG(rm);
  28124. +     lrm->lrm_Msg = rmsg;              /* set rexx message pointer. */
  28125. +     add_rexx_msg_to_tail(&pending,rm);          /* add to pending list. */
  28126. +     return(rm);
  28127. + }
  28128. + DEFUN ("amiga-arexx-send-command", Famiga_arexx_send_command,
  28129. +        Samiga_arexx_send_command, 1, 2, 0,
  28130. + "Sends a command to ARexx for execution.\n\
  28131. + If the second arg is non-nil, the command is directly interpreted.\n\
  28132. + Returns an integer that uniquely identifies this message.  This must\n\
  28133. + then be used to get the results from the command.\n\
  28134. + NOTE: this is very different from old way things worked.\n\
  28135. +       earlier versions of emacs discarded successful results\n\
  28136. +       and errors always got replied to becuase they caused failures\n\
  28137. +       Neither of these are true now.\
  28138. + This function is also no longer interactive.\n\
  28139. + Use (amiga-arexx-do-command)\n")
  28140. +     (str, as_file)
  28141. + Lisp_Object str, as_file;
  28142. + {
  28143. +     return(send_rexx_command(str,as_file,
  28144. +                  LRMF_DORESULTS|
  28145. +                  LRMF_DOERRORS|
  28146. +                  LRMF_SENTCMD));
  28147. + }
  28148. + void init_amiga_rexx(void)
  28149. + {
  28150. +     extern ULONG inputsig;
  28151. +     int i;
  28152. +     handle = InitARexx("Emacs", "elx");
  28153. +     inputsig |= ARexxSignal(handle);
  28154. +     /* init exec lists. */
  28155. +     NewList((struct List *)&incoming.lrl_List);
  28156. +     incoming.lrl_Count = 0;
  28157. +     NewList((struct List *)&pending.lrl_List);
  28158. +     pending.lrl_Count = 0;
  28159. +     NewList((struct List *)&returned.lrl_List);
  28160. +     returned.lrl_Count = 0;
  28161. + }
  28162. + void cleanup_amiga_rexx(void)
  28163. + {
  28164. +     /* Delete and reply all rexx messages we have gotten. */
  28165. +     Lisp_Object rm = remove_rexx_msg_from_head(&returned);
  28166. +     while(!NULL(rm)) {
  28167. +     struct LispRexxMsg *lrm = XLRXMSG(rm);
  28168. +     DeleteARexxMsg(handle,lrm->lrm_Msg);
  28169. +     free_rexx_msg(rm);
  28170. +     rm = remove_rexx_msg_from_head(&returned);
  28171. +     }
  28172. +     rm = remove_rexx_msg_from_head(&incoming);
  28173. +     while(!NULL(rm)) {
  28174. +     struct LispRexxMsg *lrm = XLRXMSG(rm);
  28175. +     ReplyARexxMsg(handle, lrm->lrm_Msg, 0, 20);
  28176. +     free_rexx_msg(rm);
  28177. +     rm = remove_rexx_msg_from_head(&incoming);
  28178. +     }
  28179. +     /* Free the rest of rexx, will wait for pending msgs to return */
  28180. +     FreeARexx(handle);
  28181. + }
  28182. + void syms_of_amiga_rexx(void)
  28183. + {
  28184. +     DEFVAR_BOOL ("amiga-arexx-initialized", &amiga_arexx_initialized,
  28185. +          "Set this to t when Emacs is ready to respond to ARexx messages.\n"
  28186. +          "(ie C-\ X causes all pending ARexx messages to be answered)");
  28187. +     amiga_arexx_initialized = 0;
  28188. +     defsubr(&Samiga_arexx_send_command);
  28189. +     defsubr(&Samiga_arexx_reply);
  28190. +     defsubr(&Samiga_get_next_msg);
  28191. +     defsubr(&Samiga_arexx_get_msg_results);
  28192. +     defsubr(&Samiga_arexx_check_command);
  28193. +     defsubr(&Samiga_arexx_wait);
  28194. + }
  28195. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_screen.c emacs-18.59/src/amiga_screen.c
  28196. *** /src/baseline/emacs-18.59/src/amiga_screen.c    Thu Jan  1 00:00:00 1970
  28197. --- emacs-18.59/src/amiga_screen.c    Tue Aug 31 18:16:14 1993
  28198. ***************
  28199. *** 0 ****
  28200. --- 1,1396 ----
  28201. + #include "config.h"
  28202. + #undef NULL
  28203. + #include "lisp.h"
  28204. + #include "termchar.h"
  28205. + #include "dispextern.h"
  28206. + #include <stdio.h>
  28207. + #include <string.h>
  28208. + #include <stddef.h>
  28209. + #include <internal/devices.h>
  28210. + #include <internal/vars.h>
  28211. + #define min(x,y) ((x) > (y) ? (y) : (x))
  28212. + #define max(x,y) ((x) < (y) ? (y) : (x))
  28213. + #undef LONGBITS
  28214. + #include <exec/types.h>
  28215. + #include <exec/interrupts.h>
  28216. + #include <devices/input.h>
  28217. + #include <devices/inputevent.h>
  28218. + #include <intuition/intuitionbase.h>
  28219. + #include <intuition/intuition.h>
  28220. + #include <devices/conunit.h>
  28221. + #include <devices/inputevent.h>
  28222. + #include <graphics/gfxbase.h>
  28223. + #include <graphics/gfxmacros.h>
  28224. + #include <utility/hooks.h>
  28225. + #include <workbench/startup.h>
  28226. + #include <workbench/workbench.h>
  28227. + #include <proto/exec.h>
  28228. + #include <proto/dos.h>
  28229. + #include <proto/intuition.h>
  28230. + #include <proto/graphics.h>
  28231. + #include <proto/console.h>
  28232. + #include <proto/diskfont.h>
  28233. + #include <proto/wb.h>
  28234. + /* this is defined for those unlucky enough
  28235. +  * not to have the 3.0 headers  -ch3/16/93. */
  28236. + #ifndef WA_NewLookMenus
  28237. + #define WA_NewLookMenus (WA_Dummy + 0x30)
  28238. + #endif
  28239. + #include "amiga.h"
  28240. + #define SHIFT_MASK (IEQUALIFIER_LSHIFT | IEQUALIFIER_RSHIFT)
  28241. + #define CONTROL_MASK IEQUALIFIER_CONTROL
  28242. + #define META_MASK IEQUALIFIER_LALT
  28243. + struct GfxBase *GfxBase;
  28244. + struct IntuitionBase *IntuitionBase;
  28245. + struct Library *DiskfontBase, *KeymapBase, *WorkbenchBase;
  28246. + static char intkey_code, intkey_qualifier;
  28247. + static struct IOStdReq *input_req;
  28248. + static struct Interrupt int_handler_hook;
  28249. + static int hooked;
  28250. + static struct MsgPort *wbport;
  28251. + static struct AppWindow *emacs_app_win;
  28252. + static struct AppIcon *emacs_icon;
  28253. + struct Library *ConsoleDevice;
  28254. + static struct TextFont *font;
  28255. + static int font_opened;
  28256. + /* The reset string resets the console, turns off scrolling and sets up
  28257. +    the foreground & background colors. */
  28258. + #define CONSOLE_RESET "\x1b""c\x9b>1l\x9b""3%d;4%d;>%dm"
  28259. + static char reset_string[20]; /* Must be big enough for
  28260. +               printf(CONSOLE_RESET, foreground, background, background);
  28261. +               (0 <= foreground, background <= 7) */
  28262. + /* These are the pen numbers for emacs window's base colors */
  28263. + int foreground = 1, background = 0;
  28264. + /* Current window, and its main characteristics */
  28265. + struct Window *emacs_win;
  28266. + WORD emacs_x = 0, emacs_y = 0, emacs_w = 640, emacs_h = 200;
  28267. + char *emacs_screen_name;
  28268. + char emacs_screen_name_storage[MAXPUBSCREENNAME+1];
  28269. + int emacs_backdrop = 0;        /* Use backdrop window ? */
  28270. + /* Current window size: */
  28271. + #define EMACS_X() (emacs_win ? emacs_win->LeftEdge : emacs_x)
  28272. + #define EMACS_Y() (emacs_win ? emacs_win->TopEdge : emacs_y)
  28273. + #define EMACS_W() (emacs_win ? emacs_win->Width : emacs_w)
  28274. + #define EMACS_H() (emacs_win ? emacs_win->Height : emacs_h)
  28275. + /* used for setting the color of standout text  -ch3/16/93. */
  28276. + int inverse_fill_pen = 8, inverse_text_pen = 8;
  28277. + /* IO request for all console io. */
  28278. + static struct IOStdReq *emacs_console;
  28279. + /* a storage area for the name of the screen last opened on */
  28280. + #define emacs_icon_width 57
  28281. + #define emacs_icon_height 55
  28282. + #define emacs_icon_num_planes 1
  28283. + #define emacs_icon_words_per_plane 220
  28284. + UWORD chip emacs_icon_data[1][55][4] = {
  28285. +   {
  28286. +     0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
  28287. +     0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
  28288. +     0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0fe0,0x6000,
  28289. +     0x0000,0x0000,0x0060,0x6000,0x0000,0x0000,0x0fff,0xe000,
  28290. +     0x0000,0x0000,0x1800,0x2000,0x0000,0x0000,0x13ff,0xa000,
  28291. +     0x0000,0x0000,0x1400,0xa000,0x0000,0x0000,0x3600,0xa000,
  28292. +     0x0000,0x0000,0x0000,0xa000,0x0000,0x0000,0x0c00,0xa000,
  28293. +     0x0000,0x0000,0x1e00,0xa000,0x0000,0x0000,0x0c00,0xa000,
  28294. +     0x0000,0x0000,0x0000,0xa000,0x0000,0x0000,0x2100,0xa000,
  28295. +     0x0000,0x0000,0x3300,0xa000,0x0000,0x0000,0x0c00,0xa000,
  28296. +     0x003f,0xffff,0xffff,0xb000,0x001f,0xffff,0xffff,0x8000,
  28297. +     0x004e,0x0000,0x0001,0xf000,0x00c6,0x00f0,0x0001,0x8000,
  28298. +     0x00c6,0x0100,0x0001,0x8000,0x0006,0x0103,0x9201,0x8000,
  28299. +     0x0006,0x013a,0x5201,0x8000,0x00c6,0x010a,0x5201,0x8000,
  28300. +     0x00c6,0x010a,0x5601,0x8000,0x0086,0x00f2,0x4a01,0x8000,
  28301. +     0x0006,0x0000,0x0001,0x8000,0x0046,0x0000,0x0001,0x8000,
  28302. +     0x00c6,0x7c00,0x0001,0x8000,0x00c6,0x4000,0x0001,0x8000,
  28303. +     0x0006,0x41d8,0xc319,0x8000,0x0006,0x7925,0x24a1,0x8000,
  28304. +     0x00c6,0x4125,0x2419,0x8000,0x01c6,0x4125,0x2485,0x8000,
  28305. +     0x0086,0x7d24,0xd319,0x8000,0x0007,0x0000,0x0003,0x8000,
  28306. +     0x0003,0xffe3,0xffff,0x0000,0x0081,0xfff7,0xfffe,0x0000,
  28307. +     0x01c0,0x0036,0x0000,0x0000,0x0180,0x0014,0x0f80,0x0000,
  28308. +     0x0000,0x0014,0x1040,0x0000,0x0000,0x0014,0x2720,0x0000,
  28309. +     0x0000,0x0012,0x28a0,0x0000,0x0080,0x000a,0x48a0,0x0000,
  28310. +     0x01c0,0x0009,0x90a0,0x0000,0x0180,0x0004,0x20a0,0x0000,
  28311. +     0x0000,0x0003,0xc0a0,0x0000,0x0000,0x0000,0x00a0,0x0000,
  28312. +     0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
  28313. +     0x0000,0x0000,0x0000,0x0000
  28314. +   },
  28315. + };
  28316. + struct Image far emacs_icon_image = {
  28317. +   0, 0,
  28318. +   emacs_icon_width, emacs_icon_height, emacs_icon_num_planes,
  28319. +   (UWORD *)emacs_icon_data,
  28320. +   3, 0,
  28321. +   0
  28322. + };
  28323. + static struct DiskObject far emacs_icon_object = {
  28324. +   0, 0,
  28325. +   { 0, 0, 0, emacs_icon_width, emacs_icon_height, 0, 0, 0, (APTR)&emacs_icon_image },
  28326. +   0, 0, 0,
  28327. +   NO_ICON_POSITION, NO_ICON_POSITION
  28328. + };
  28329. + static struct Hook background_hook;
  28330. + #define EVENTSIZE 32
  28331. + static struct event {
  28332. +   ULONG class;
  28333. +   UWORD code, qual;
  28334. +   WORD x, y;
  28335. + } events[EVENTSIZE];
  28336. + static int event_num, event_in, event_out;
  28337. + static struct wbevent {
  28338. +   struct wbevent *next;
  28339. +   char file[1];
  28340. + } *wbevents;
  28341. + Lisp_Object Vamiga_mouse_pos;
  28342. + Lisp_Object Vamiga_mouse_item;
  28343. + extern Lisp_Object MouseMap;
  28344. + int amiga_remap_bsdel;
  28345. + int amiga_remap_numeric_keypad;
  28346. + int amiga_mouse_initialized;
  28347. + int amiga_wb_initialized;
  28348. + int emacs_iconified;
  28349. + static int amiga_pos_x(int x)
  28350. + {
  28351. +   return (x - emacs_win->BorderLeft) / emacs_win->RPort->Font->tf_XSize;
  28352. + }
  28353. + static int amiga_pos_y(int y)
  28354. + {
  28355. +   return (y - emacs_win->BorderTop) / emacs_win->RPort->Font->tf_YSize;
  28356. + }
  28357. + static void amiga_change_size(void)
  28358. + {
  28359. +   int new_height = amiga_pos_y(emacs_win->Height - emacs_win->BorderBottom);
  28360. +   int new_width = amiga_pos_x(emacs_win->Width - emacs_win->BorderRight);
  28361. +   /* Hack to force redisplay */
  28362. +   if (screen_height == new_height) screen_height--;
  28363. +   /* I consider that refreshes are possible during a select, which is
  28364. +      true for the current state of emacs */
  28365. +   change_screen_size(new_height, new_width, 0, !selecting && !waiting_for_input, 1);
  28366. + }
  28367. + /* Get terminal size from system.
  28368. +    Store number of lines into *heightp and width into *widthp.
  28369. +    If zero or a negative number is stored, the value is not valid.  */
  28370. + void get_window_size (widthp, heightp)
  28371. +      int *widthp, *heightp;
  28372. + {
  28373. +   if (emacs_win)
  28374. +     {
  28375. +       *heightp = amiga_pos_y(emacs_win->Height - emacs_win->BorderBottom);
  28376. +       *widthp = amiga_pos_x(emacs_win->Width - emacs_win->BorderRight);
  28377. +     }
  28378. +   else
  28379. +     {
  28380. +       *heightp = 0;
  28381. +       *widthp = 0;
  28382. +     }
  28383. + }
  28384. + static int set_min_size(struct Window *win, struct TextFont *font,
  28385. +             WORD *minw, WORD *minh)
  28386. + {
  28387. +   *minw = 11 * font->tf_XSize + win->BorderLeft + win->BorderRight;
  28388. +   *minh = 4 * font->tf_YSize + win->BorderTop + win->BorderBottom;
  28389. +   return (int)WindowLimits(win, *minw, *minh, 0, 0);
  28390. + }
  28391. + struct fill
  28392. + {
  28393. +   struct Layer *layer;
  28394. +   struct Rectangle bounds;
  28395. +   WORD offsetx, offsety;
  28396. + };
  28397. + /* __interrupt disables stack checking.   -ch3/19/93. */
  28398. + static ULONG __asm __saveds __interrupt
  28399. + fill_background(register __a2 struct RastPort *obj,
  28400. +         register __a1 struct fill *msg)
  28401. + {
  28402. +   struct Layer *l;
  28403. +   SetAPen(obj, background);
  28404. +   SetDrMd(obj, JAM1);
  28405. +   SetAfPt(obj, 0, 0);
  28406. +   SetWrMsk(obj, 0xff);
  28407. +   /* Gross hack starts here */
  28408. +   l = obj->Layer;
  28409. +   obj->Layer = 0;
  28410. +   /* Stops */
  28411. +   RectFill(obj, msg->bounds.MinX, msg->bounds.MinY,
  28412. +        msg->bounds.MaxX, msg->bounds.MaxY);
  28413. +   /* Starts again */
  28414. +   obj->Layer = l;
  28415. +   /* And finally dies */
  28416. +   return 0;
  28417. + }
  28418. + static void clear_window(void)
  28419. + {
  28420. +   SetAPen(emacs_win->RPort, background);
  28421. +   RectFill(emacs_win->RPort, emacs_win->BorderLeft, emacs_win->BorderTop,
  28422. +        emacs_win->Width - emacs_win->BorderRight - 1,
  28423. +        emacs_win->Height - emacs_win->BorderBottom - 1);
  28424. + }
  28425. + static int make_reset_string(void)
  28426. + {
  28427. +   sprintf(reset_string, CONSOLE_RESET, foreground, background, background);
  28428. + }
  28429. + void reset_window(void)
  28430. + {
  28431. +   make_reset_string();
  28432. +   if (emacs_win)
  28433. +     {
  28434. +       screen_puts (reset_string, strlen(reset_string));
  28435. +       clear_window();
  28436. +       amiga_change_size ();
  28437. +     }
  28438. + }
  28439. + static void close_app_win(void)
  28440. + {
  28441. +   if (emacs_app_win)
  28442. +     {
  28443. +       struct AppMessage *msg;
  28444. +       RemoveAppWindow(emacs_app_win); /* What can I do if it fails ?! */
  28445. +       while (msg = (struct AppMessage *)GetMsg(wbport)) ReplyMsg(msg);
  28446. +     }
  28447. + }
  28448. + static int close_emacs_window(void)
  28449. + {
  28450. +   close_app_win();
  28451. +   inputsig &= ~(1L << emacs_win->UserPort->mp_SigBit);
  28452. +   _device_close(emacs_console);
  28453. +   if(emacs_win)
  28454. +     {
  28455. +       /* put title back the way it should be   -ch3/19/93. */
  28456. +       ShowTitle(emacs_win->WScreen, !emacs_backdrop);
  28457. +     }
  28458. +   CloseWindow(emacs_win);
  28459. +   emacs_console = 0;
  28460. +   emacs_win = 0;
  28461. +   ConsoleDevice = 0;
  28462. + }
  28463. + /* We need this function becuase we do not always have the string
  28464. +  * for the screen we opened on. for example LockPubScreen(NULL);
  28465. +  * This function will get the name by looping through all public
  28466. +  * screens looking for the one that matches ours. -ch3/20/93 */
  28467. + char *get_screen_name(struct Screen *this, char *namebuf)
  28468. + {
  28469. +   struct PubScreenNode *pubscreens =
  28470. +     (struct PubScreenNode *)LockPubScreenList()->lh_Head;
  28471. +   while (pubscreens->psn_Node.ln_Succ)
  28472. +     {
  28473. +       if (pubscreens->psn_Screen == this)
  28474. +     {
  28475. +       strcpy(namebuf, pubscreens->psn_Node.ln_Name);
  28476. +       UnlockPubScreenList();
  28477. +       return namebuf;
  28478. +     }
  28479. +       pubscreens = (struct PubScreenNode *)pubscreens->psn_Node.ln_Succ;
  28480. +     }
  28481. +   /* Failed to find screen */
  28482. +   namebuf[0] = '\0';
  28483. +   UnlockPubScreenList();
  28484. +   return 0;
  28485. + }
  28486. + /* added two parameters to eliminate the need for the global
  28487. +  * which was causing some unwanted effect (bugs). -ch3/19/93 */
  28488. + static enum { ok, no_screen, no_window }
  28489. + open_emacs_window(UWORD x, UWORD y, UWORD w, UWORD h, int backdrop,
  28490. +           char *pubscreen_name)
  28491. +      /* Open or reopen emacs window */
  28492. + {
  28493. +   WORD minw, minh;
  28494. +   struct Screen *new_screen;
  28495. +   struct Window *new_win;
  28496. +   struct IOStdReq *new_console;
  28497. +   int no_backdrop = !backdrop;
  28498. +   new_screen = LockPubScreen(pubscreen_name);
  28499. +   if (!new_screen)
  28500. +     return no_screen;
  28501. +   /* removed newwindow structure, and added as tag
  28502. +    * items so that we can change them easier. -ch3/16/93. */
  28503. +   new_win = OpenWindowTags(0, WA_Left, x, WA_Top, y,
  28504. +                   WA_Width, w, WA_Height, h,    /* Static items */
  28505. +                   WA_AutoAdjust, 1, WA_NewLookMenus, 1,
  28506. +                   WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_RAWKEY |
  28507. +                             IDCMP_MOUSEBUTTONS| IDCMP_NEWSIZE |
  28508. +                             IDCMP_MENUPICK | IDCMP_MENUHELP,
  28509. +                   WA_PubScreen, new_screen,
  28510. +                   WA_BackFill, &background_hook,
  28511. +                   WA_MenuHelp, 1, WA_Activate, 1,
  28512. +                   WA_SimpleRefresh, 1,
  28513. +                   WA_MaxWidth, -1, WA_MaxHeight, -1,
  28514. +                   WA_Backdrop, backdrop,    /* changing items */
  28515. +                   WA_Borderless, backdrop,
  28516. +                   WA_CloseGadget, no_backdrop,
  28517. +                   WA_SizeGadget, no_backdrop,
  28518. +                   WA_DragBar, no_backdrop,
  28519. +                   WA_DepthGadget, no_backdrop,
  28520. +                   WA_Title, no_backdrop ?
  28521. +                    "GNU Emacs 18.59, Amiga port "VERS : 0,
  28522. +                               TAG_END);
  28523. +   UnlockPubScreen(0L, new_screen);
  28524. +   if (new_win)
  28525. +     {
  28526. +       /* if emacs_backdrop then the screen title will show BEHIND the window
  28527. +      -ch3/16/93. */
  28528. +       ShowTitle(new_screen, !emacs_backdrop);
  28529. +       SetFont(new_win->RPort, font);
  28530. +       if (set_min_size(new_win, font, &minw, &minh) &&
  28531. +       (new_console = (struct IOStdReq *)
  28532. +        _device_open("console.device", CONU_CHARMAP, CONFLAG_NODRAW_ON_NEWSIZE,
  28533. +             (APTR)new_win, sizeof(*new_win),
  28534. +             sizeof(struct IOStdReq))))
  28535. +     {
  28536. +       inputsig |= 1L << new_win->UserPort->mp_SigBit;
  28537. +       ConsoleDevice = (struct Library *)new_console->io_Device;
  28538. +       emacs_app_win = AddAppWindowA(0, 0, new_win, wbport, 0);
  28539. +       /* Copy the info into permanent storage */
  28540. +       emacs_win = new_win;
  28541. +       emacs_console = new_console;
  28542. +       /* fetch the name of the current screen -ch3/19/93 */
  28543. +       emacs_screen_name = get_screen_name(emacs_win->WScreen,
  28544. +                           emacs_screen_name_storage);
  28545. +       emacs_backdrop = backdrop;
  28546. +       reset_window();
  28547. +       return ok;
  28548. +     }
  28549. +       CloseWindow(new_win);
  28550. +     }
  28551. +   return no_window;
  28552. + }
  28553. + void force_window(void)
  28554. + {
  28555. +   if (!emacs_win && !emacs_iconified)
  28556. +     {
  28557. +       if (open_emacs_window(emacs_x, emacs_y, emacs_w, emacs_h, emacs_backdrop,
  28558. +                 emacs_screen_name) != ok)
  28559. +     {
  28560. +       /* Try to return to defaults (Workbench, etc) */
  28561. +       if (open_emacs_window(0, 0, 640, 200, 0, 0) != ok)
  28562. +           _fail("I've lost my window ! Exiting.");
  28563. +     }
  28564. +       resume_menus();
  28565. +     }
  28566. + }
  28567. + /* returns:
  28568. +  *    -2 if msg is not class RAWKEY
  28569. +  *    same as RawKeyConvert otherwise:
  28570. +  *    buffer length if <= kbsize
  28571. +  *    -1 else
  28572. +  */
  28573. + static DeadKeyConvert(struct IntuiMessage *msg, UBYTE *kbuffer, int kbsize,
  28574. +               struct KeyMap *kmap)
  28575. + {
  28576. +   static struct InputEvent ievent = {0, IECLASS_RAWKEY, 0, 0, 0};
  28577. +   int extra = 0, res;
  28578. +   if (msg->Class != RAWKEY) return (-2);
  28579. +   /* Do some keymapping ourselves to make emacs users happy */
  28580. +   /* Ctrl-space becomes Ctrl-@ */
  28581. +   if (msg->Code == 0x40 && msg->Qualifier & CONTROL_MASK)
  28582. +     {
  28583. +       *kbuffer = 0;
  28584. +       return 1;
  28585. +     }
  28586. +   /* Backspace becomes DEL */
  28587. +   if (msg->Code == 0x41 && amiga_remap_bsdel)
  28588. +     {
  28589. +       *kbuffer = 0177;
  28590. +       return 1;
  28591. +     }
  28592. +   /* And DEL becomes CTRL-D */
  28593. +   if (msg->Code == 0x46 && amiga_remap_bsdel)
  28594. +     {
  28595. +       *kbuffer = 04;
  28596. +       return 1;
  28597. +     }
  28598. +   /* Stick numeric pad prefix in front of numeric keypad chars */
  28599. +   if (msg->Qualifier & IEQUALIFIER_NUMERICPAD && amiga_remap_numeric_keypad)
  28600. +     {
  28601. +       *kbuffer++ = 'x' & 037;
  28602. +       *kbuffer++ = '^' & 037;
  28603. +       *kbuffer++ = 'K';
  28604. +       kbsize -= 3;
  28605. +       extra = 3;
  28606. +     }
  28607. +   /* pack input event */
  28608. +   ievent.ie_Code = msg->Code;
  28609. +   /* Ignore meta in decoding keys */
  28610. +   ievent.ie_Qualifier = msg->Qualifier & ~META_MASK;
  28611. +   /* get previous codes from location pointed to by IAddress
  28612. +    *  this pointer is valid until IntuiMessage is replied.
  28613. +    */
  28614. +   ievent.ie_position.ie_addr = *((APTR *)msg->IAddress);
  28615. +   ievent.ie_position.ie_dead.ie_prev1DownQual &= ~META_MASK;
  28616. +   ievent.ie_position.ie_dead.ie_prev2DownQual &= ~META_MASK;
  28617. +   res = RawKeyConvert(&ievent, kbuffer, kbsize, kmap);
  28618. +   return res ? res + extra : 0;
  28619. + }
  28620. + void add_wbevent(struct WBArg *wbarg)
  28621. + {
  28622. +   char filename[256];
  28623. +   if (wbarg->wa_Lock && NameFromLock(wbarg->wa_Lock, filename, 256))
  28624. +     {
  28625. +       struct wbevent *event;
  28626. +       if (wbarg->wa_Name) AddPart(filename, wbarg->wa_Name, 256);
  28627. +       if (event = (struct wbevent *)malloc(offsetof(struct wbevent, file) +
  28628. +                        strlen(filename) + 1))
  28629. +     {
  28630. +       event->next = wbevents;
  28631. +       strcpy(event->file, filename);
  28632. +       wbevents = event;
  28633. +     }
  28634. +     }
  28635. + }
  28636. + void check_window(int force)
  28637. + {
  28638. +   ULONG class;
  28639. +   USHORT code, qualifier;
  28640. +   UWORD mx, my;
  28641. +   unsigned char buf[32];
  28642. +   int buflen, deiconify, i;
  28643. +   struct IntuiMessage *msg;
  28644. +   int mouse_event = FALSE, wb_event = FALSE;
  28645. +   struct AppMessage *amsg;
  28646. +   force_window();
  28647. +   if (emacs_win)
  28648. +     while (msg = (struct IntuiMessage *)GetMsg(emacs_win->UserPort))
  28649. +       {
  28650. +     class = msg->Class;
  28651. +     code = msg->Code;
  28652. +     qualifier = msg->Qualifier;
  28653. +     mx = msg->MouseX; my = msg->MouseY;
  28654. +     buflen = DeadKeyConvert(msg, buf, 32, 0);
  28655. +     ReplyMsg(msg);
  28656. +     switch (class)
  28657. +       {
  28658. +       case IDCMP_CLOSEWINDOW: {
  28659. +         enque(030, FALSE); enque(03, FALSE); /* ^X^C */
  28660. +         break;
  28661. +       }
  28662. +       case IDCMP_RAWKEY: {
  28663. +         if (buflen > 0)
  28664. +           {
  28665. +         unsigned char *sbuf = buf;
  28666. +         int meta = qualifier & META_MASK;
  28667. +         /* Don't set META on CSI */
  28668. +         do enque(*sbuf++, meta); while (--buflen);
  28669. +           }
  28670. +         break;
  28671. +       }
  28672. +       case IDCMP_NEWSIZE: amiga_change_size(); break;
  28673. +       case IDCMP_MENUPICK: case IDCMP_MENUHELP:
  28674. +         if (code == MENUNULL) break; /* else fall through */
  28675. +       case IDCMP_MOUSEBUTTONS: {
  28676. +         mouse_event = TRUE;
  28677. +         if (event_num == EVENTSIZE) break;
  28678. +         events[event_in].class = class;
  28679. +         events[event_in].code = code;
  28680. +         events[event_in].qual = qualifier;
  28681. +         events[event_in].x = mx;
  28682. +         events[event_in].y = my;
  28683. +         event_num++;
  28684. +         event_in = (event_in + 1) % EVENTSIZE;
  28685. +         break;
  28686. +       }
  28687. +       }
  28688. +       }
  28689. +   /* Handle App requests */
  28690. +   while (amsg = (struct AppMessage *)GetMsg(wbport))
  28691. +       switch (amsg->am_Type)
  28692. +     {
  28693. +     case MTYPE_APPICON: case MTYPE_APPWINDOW:
  28694. +       /* Add an event for all these files */
  28695. +       for (i = 0; i < amsg->am_NumArgs; i++) add_wbevent(amsg->am_ArgList + i);
  28696. +       wb_event = TRUE;
  28697. +       /* Reply to the message, and deiconify if was icon */
  28698. +       deiconify = amsg->am_Type == MTYPE_APPICON;
  28699. +       ReplyMsg(amsg);
  28700. +       if (deiconify && emacs_icon)
  28701. +         /* Reopen window */
  28702. +         if (open_emacs_window(emacs_x, emacs_y, emacs_w, emacs_h, emacs_backdrop,
  28703. +                   emacs_screen_name) == ok)
  28704. +           {
  28705. +         resume_menus();
  28706. +         RemoveAppIcon(emacs_icon);
  28707. +         emacs_icon = 0;
  28708. +         emacs_iconified = 0;
  28709. +           }
  28710. +       break;
  28711. +     default: ReplyMsg(amsg); break;
  28712. +     }
  28713. +   if (amiga_mouse_initialized && (force && event_num > 0 || mouse_event))
  28714. +     {
  28715. +       enque(AMIGASEQ, FALSE); enque('M', FALSE);
  28716. +     }
  28717. +   if (amiga_wb_initialized && (force && wbevents || wb_event))
  28718. +     {
  28719. +       enque(AMIGASEQ, FALSE); enque('W', FALSE);
  28720. +     }
  28721. + }
  28722. + void setup_intchar(char intchar)
  28723. + {
  28724. +   char cqbuf[2];
  28725. +   if (MapANSI(&intchar, 1, cqbuf, 1, 0) == 1)
  28726. +     {
  28727. +       intkey_code = cqbuf[0];
  28728. +       intkey_qualifier = cqbuf[1];
  28729. +     }
  28730. +   else
  28731. +     {
  28732. +       /* Default is CTRL-G in usa0 keymap */
  28733. +       intkey_code = 0x24;
  28734. +       intkey_qualifier = IEQUALIFIER_CONTROL;
  28735. +     }
  28736. + }
  28737. + /* Hack to detect interrupt char as soon as it is pressed */
  28738. + /* __interrupt disables stack checking.  -ch3/19/93.*/
  28739. + static long __saveds __interrupt __asm
  28740. + int_handler(register __a0 struct InputEvent *ev)
  28741. + {
  28742. +   struct InputEvent *ep, *laste;
  28743. +   static struct InputEvent retkey;
  28744. +   ULONG lock = LockIBase(0);
  28745. +   if (emacs_win && IntuitionBase->ActiveWindow == emacs_win)
  28746. +     {
  28747. +       laste = 0;
  28748. +       /* run down the list of events to see if they pressed the magic key */
  28749. +       for (ep = ev; ep; laste = ep, ep = ep->ie_NextEvent)
  28750. +     if (ep->ie_Class == IECLASS_RAWKEY &&
  28751. +         (ep->ie_Qualifier & 0xff) == intkey_qualifier &&
  28752. +         ep->ie_Code == intkey_code)
  28753. +       {
  28754. +         /* Remove this key from input sequence */
  28755. +         if (laste) laste->ie_NextEvent = ep->ie_NextEvent;
  28756. +         else ev = ep->ie_NextEvent;
  28757. +         Vquit_flag = Qt;
  28758. +         Signal(_us, SIGBREAKF_CTRL_C);
  28759. +       }
  28760. +     }
  28761. +   UnlockIBase(lock);
  28762. +   /* pass on the pointer to the event */
  28763. +   return (long)ev;
  28764. + }
  28765. + DEFUN ("amiga-mouse-events", Famiga_mouse_events, Samiga_mouse_events, 0, 0, 0,
  28766. +        "Return number of pending mouse events from Intuition.")
  28767. +      ()
  28768. + {
  28769. +   register Lisp_Object tem;
  28770. +   check_intuition ();
  28771. +   XSET (tem, Lisp_Int, event_num);
  28772. +   return tem;
  28773. + }
  28774. + DEFUN ("amiga-proc-mouse-event", Famiga_proc_mouse_event, Samiga_proc_mouse_event,
  28775. +        0, 0, 0,
  28776. +        "Pulls a mouse event out of the mouse event buffer and dispatches\n\
  28777. + the appropriate function to act upon this event.")
  28778. + ()
  28779. + {
  28780. +   register Lisp_Object mouse_cmd;
  28781. +   register char com_letter;
  28782. +   register char key_mask;
  28783. +   register Lisp_Object tempx;
  28784. +   register Lisp_Object tempy;
  28785. +   extern Lisp_Object get_keyelt ();
  28786. +   extern int meta_prefix_char;
  28787. +   struct event *ev;
  28788. +   int posx, posy;
  28789. +   check_intuition ();
  28790. +   if (event_num) {
  28791. +     ev = &events[event_out];
  28792. +     event_out = (event_out + 1) % EVENTSIZE;
  28793. +     event_num--;
  28794. +     if (ev->class == MOUSEBUTTONS)
  28795. +       {
  28796. +     switch (ev->code)
  28797. +       {
  28798. +       case SELECTDOWN: com_letter = 2; break;
  28799. +       case SELECTUP: com_letter = 6; break;
  28800. +       case MIDDLEDOWN: com_letter = 1; break;
  28801. +       case MIDDLEUP: com_letter = 5; break;
  28802. +       case MENUDOWN: com_letter = 0; break;
  28803. +       case MENUUP: com_letter = 4; break;
  28804. +       default: com_letter = 3; break;
  28805. +       }
  28806. +     posx = amiga_pos_x(ev->x);
  28807. +     posy = amiga_pos_y(ev->y);
  28808. +     XSET (tempx, Lisp_Int, min (screen_width-1, max (0, posx)));
  28809. +     XSET (tempy, Lisp_Int, min (screen_height-1, max (0, posy)));
  28810. +       }
  28811. +     else
  28812. +       {
  28813. +     /* Must be Menu Pick or Help */
  28814. +     com_letter = ev->class == IDCMP_MENUPICK ? 3 : 7;
  28815. +     /* The parameters passed describe the selected item */
  28816. +     XSET (tempx, Lisp_Int, MENUNUM(ev->code));
  28817. +     XSET (tempy, Lisp_Int, ITEMNUM(ev->code));
  28818. +       }
  28819. +     if (ev->qual & META_MASK) com_letter |= 0x20;
  28820. +     if (ev->qual & SHIFT_MASK) com_letter |= 0x10;
  28821. +     if (ev->qual & CONTROL_MASK) com_letter |= 0x40;
  28822. +     Vamiga_mouse_pos = Fcons (tempx, Fcons (tempy, Qnil));
  28823. +     Vamiga_mouse_item = make_number (com_letter);
  28824. +     mouse_cmd = get_keyelt (access_keymap (MouseMap, com_letter));
  28825. +     if (NULL (mouse_cmd)) {
  28826. +       bell ();
  28827. +       Vamiga_mouse_pos = Qnil;
  28828. +     }
  28829. +     else return call1 (mouse_cmd, Vamiga_mouse_pos);
  28830. +   }
  28831. +   return Qnil;
  28832. + }
  28833. + DEFUN ("amiga-get-mouse-event", Famiga_get_mouse_event, Samiga_get_mouse_event,
  28834. +        1, 1, 0,
  28835. +        "Get next mouse event out of mouse event buffer (com-letter (x y)).\n\
  28836. + ARG non-nil means return nil immediately if no pending event;\n\
  28837. + otherwise, wait for an event.")
  28838. + (arg)
  28839. + Lisp_Object arg;
  28840. + {
  28841. +   register char com_letter;
  28842. +   register char key_mask;
  28843. +   register Lisp_Object tempx;
  28844. +   register Lisp_Object tempy;
  28845. +   struct event *ev;
  28846. +   int posx, posy;
  28847. +   check_intuition ();
  28848. +   if (NULL (arg))
  28849. +     {
  28850. +       amiga_consume_input();
  28851. +       while (!event_num)
  28852. +     {
  28853. +       int rfds = 1;
  28854. +       select(1, &rfds, 0, 0, 0);
  28855. +       amiga_consume_input();
  28856. +     }
  28857. +     }
  28858. +   /*** ??? Surely you don't mean to busy wait??? */
  28859. +   if (event_num) {
  28860. +     ev = &events[event_out];
  28861. +     event_out = (event_out + 1) % EVENTSIZE;
  28862. +     event_num--;
  28863. +     switch (ev->code)
  28864. +       {
  28865. +       case SELECTDOWN: com_letter = 2; break;
  28866. +       case SELECTUP: com_letter = 6; break;
  28867. +       case MIDDLEDOWN: com_letter = 1; break;
  28868. +       case MIDDLEUP: com_letter = 5; break;
  28869. +       case MENUDOWN: com_letter = 0; break;
  28870. +       case MENUUP: com_letter = 4; break;
  28871. +       default: com_letter = 3; break;
  28872. +       }
  28873. +     if (ev->qual & META_MASK) com_letter |= 0x20;
  28874. +     if (ev->qual & SHIFT_MASK) com_letter |= 0x10;
  28875. +     if (ev->qual & CONTROL_MASK) com_letter |= 0x40;
  28876. +     posx = amiga_pos_x(ev->x);
  28877. +     posy = amiga_pos_y(ev->y);
  28878. +     XSET (tempx, Lisp_Int, min (screen_width-1, max (0, posx)));
  28879. +     XSET (tempy, Lisp_Int, min (screen_height-1, max (0, posy)));
  28880. +     Vamiga_mouse_pos = Fcons (tempx, Fcons (tempy, Qnil));
  28881. +     Vamiga_mouse_item = make_number (com_letter);
  28882. +     return Fcons (com_letter, Fcons (Vamiga_mouse_pos, Qnil));
  28883. +   }
  28884. +   return Qnil;
  28885. + }
  28886. + DEFUN ("amiga-get-wb-event", Famiga_get_wb_event, Samiga_get_wb_event,
  28887. +        1, 1, 0,
  28888. +        "Get next Workbench event out of workbench event buffer (a file name).\n\
  28889. + ARG non-nil means return nil immediately if no pending event;\n\
  28890. + otherwise, wait for an event.")
  28891. + (arg)
  28892. + Lisp_Object arg;
  28893. + {
  28894. +   Lisp_Object file;
  28895. +   struct wbevent *ev;
  28896. +   check_intuition ();
  28897. +   if (NULL (arg))
  28898. +     {
  28899. +       amiga_consume_input();
  28900. +       while (!wbevents)
  28901. +     {
  28902. +       int rfds = 1;
  28903. +       select(1, &rfds, 0, 0, 0);
  28904. +       amiga_consume_input();
  28905. +     }
  28906. +     }
  28907. +   /*** ??? Surely you don't mean to busy wait??? */
  28908. +   if (wbevents) {
  28909. +     file = build_string(wbevents->file);
  28910. +     ev = wbevents;
  28911. +     wbevents = wbevents->next;
  28912. +     free(ev);
  28913. +     return file;
  28914. +   }
  28915. +   return Qnil;
  28916. + }
  28917. + DEFUN("amiga-set-foreground-color", Famiga_set_foreground_color,
  28918. +       Samiga_set_foreground_color, 1, 1, "nPen number: ",
  28919. +       "Use PEN as foreground color")
  28920. +      (pen)
  28921. + {
  28922. +   int fg;
  28923. +   check_intuition();
  28924. +   CHECK_NUMBER(pen, 0);
  28925. +   fg = XUINT (pen);
  28926. +   if (pen > 7) error("Pen colors must be between 0 & 7");
  28927. +   foreground = fg;
  28928. +   reset_window();
  28929. +   return Qnil;
  28930. + }
  28931. + DEFUN("amiga-set-background-color", Famiga_set_background_color,
  28932. +       Samiga_set_background_color, 1, 1, "nPen number: ",
  28933. +       "Use PEN as background color")
  28934. +      (pen)
  28935. + {
  28936. +   int bg;
  28937. +   check_intuition();
  28938. +   CHECK_NUMBER(pen, 0);
  28939. +   bg = XUINT (pen);
  28940. +   if (pen > 7) error("Pen colors must be between 0 & 7");
  28941. +   background = bg;
  28942. +   reset_window();
  28943. +   return Qnil;
  28944. + }
  28945. + DEFUN("amiga-set-inverse-fill-pen", Famiga_set_inverse_fill_pen,
  28946. +       Samiga_set_inverse_fill_pen, 1, 1, "nPen number: ",
  28947. +       "Use PEN's color for inverse fills (0-7 or 8 for reverse)")
  28948. +      (pen)
  28949. + {
  28950. +   int ifp = 8;
  28951. +   check_intuition();
  28952. +   CHECK_NUMBER(pen, 0);
  28953. +   ifp = XUINT (pen);
  28954. +   if (pen > 8)
  28955. +     error("choices are from 0 to 8");
  28956. +   inverse_fill_pen = ifp;
  28957. +   reset_window();
  28958. +   return Qnil;
  28959. + }
  28960. + DEFUN("amiga-set-inverse-text-pen", Famiga_set_inverse_text_pen,
  28961. +       Samiga_set_inverse_text_pen, 1, 1, "nPen number: ",
  28962. +       "Use PEN's color for inverse fills (0-7 or 8 for reverse)")
  28963. +      (pen)
  28964. + {
  28965. +   int itp = 8;
  28966. +   check_intuition();
  28967. +   CHECK_NUMBER(pen, 0);
  28968. +   itp = XUINT (pen);
  28969. +   if (pen > 8)
  28970. +     error("choices are from 0 to 8");
  28971. +   inverse_text_pen = itp;
  28972. +   reset_window();
  28973. +   return Qnil;
  28974. + }
  28975. + DEFUN("amiga-set-font", Famiga_set_font, Samiga_set_font, 2, 2,
  28976. +       "sFont: \n\
  28977. + nSize: ",
  28978. +       "Set font used for window to FONT with given HEIGHT.\n\
  28979. + The font used must be non-proportional.")
  28980. + (wfont, height)
  28981. + {
  28982. +   struct TextAttr attr;
  28983. +   struct TextFont *newfont;
  28984. +   char *fname;
  28985. +   struct Lisp_String *fstr;
  28986. +   WORD minw, minh, oldmw, oldmh;
  28987. +   CHECK_STRING (wfont, 0);
  28988. +   CHECK_NUMBER (height, 0);
  28989. +   check_intuition();
  28990. +   fstr = XSTRING (wfont);
  28991. +   fname = (char *)alloca (fstr->size + 6);
  28992. +   strcpy (fname, fstr->data);
  28993. +   strcat (fname, ".font");
  28994. +   attr.ta_Name = fname;
  28995. +   attr.ta_YSize = XFASTINT (height);
  28996. +   attr.ta_Style = 0;
  28997. +   attr.ta_Flags = 0;
  28998. +   newfont = OpenDiskFont (&attr);
  28999. +   if (!newfont)
  29000. +     error ("Font %s %d not found", fstr->data, XFASTINT (height));
  29001. +   if (newfont->tf_Flags & FPF_PROPORTIONAL)
  29002. +     {
  29003. +       CloseFont(newfont);
  29004. +       error ("Font %s %d is proportional", fstr->data, XFASTINT (height));
  29005. +     }
  29006. +   if (emacs_win)
  29007. +     {
  29008. +       if (!set_min_size(emacs_win, newfont, &minw, &minh))
  29009. +     {
  29010. +       CloseFont(newfont);
  29011. +       if (!set_min_size(emacs_win, font, &oldmw, &oldmh))
  29012. +         _fail("Failed to restore old font, exiting.");
  29013. +       error("Window is too small for this font, need at least %d(w) by %d(h)",
  29014. +         minw, minh);
  29015. +     }
  29016. +       SetFont(emacs_win->RPort, newfont);
  29017. +     }
  29018. +   if (font_opened) CloseFont(font);
  29019. +   font_opened = TRUE;
  29020. +   font = newfont;
  29021. +   reset_window();
  29022. +   return Qnil;
  29023. + }
  29024. + DEFUN("amiga-set-geometry", Famiga_set_geometry, Samiga_set_geometry, 4, MANY, 0,
  29025. +       "Set Emacs window geometry and screen.\n\
  29026. + First 4 parameters are the (X,Y) position of the top-left corner of the window\n\
  29027. + and its WIDTH and HEIGHT. These must be big enough for an 11x4 characters window.\n\
  29028. + If nil is given for any of these, that means to keep the same value as before.\n\
  29029. + The optional argument SCREEN specifies which screen to use, nil stands for the\n\
  29030. + same screen as the window is on, t stands for the default public screen (normally\n\
  29031. + the Workbench), a string specifies a given public screen.\n\
  29032. + If optional argument BACKDROP is t, a backdrop window is used.")
  29033. +   (nargs, args)
  29034. +     int nargs;
  29035. +     Lisp_Object *args;
  29036. + {
  29037. +   Lisp_Object x, y, w, h, scr = Qnil, backdrop = Qnil;
  29038. +   int opened;
  29039. +   WORD tempx, tempy, tempw, temph;
  29040. +   char *screen_name;
  29041. +   int use_backdrop;
  29042. +   if (nargs > 6) error("Too many arguments to amiga-set-geometry");
  29043. +   x = args[0]; y = args[1]; w = args[2]; h = args[3];
  29044. +   if (nargs > 4)
  29045. +     {
  29046. +       scr = args[4];
  29047. +       if (nargs > 5) backdrop = args[5];
  29048. +     }
  29049. +   check_intuition();
  29050. +   if (!NULL (x))
  29051. +     {
  29052. +       CHECK_NUMBER(x, 0);
  29053. +       tempx = XUINT(x);
  29054. +     }
  29055. +   else tempx = EMACS_X();
  29056. +   if (!NULL (y))
  29057. +     {
  29058. +       CHECK_NUMBER(y, 0);
  29059. +       tempy = XUINT(y);
  29060. +     }
  29061. +   else tempy = EMACS_Y();
  29062. +   if (!NULL (w))
  29063. +     {
  29064. +       CHECK_NUMBER(w, 0);
  29065. +       tempw = XUINT(w);
  29066. +     }
  29067. +   else tempw = EMACS_W();
  29068. +   if (!NULL (h))
  29069. +     {
  29070. +       CHECK_NUMBER(h, 0);
  29071. +       temph = XUINT(h);
  29072. +     }
  29073. +   else temph = EMACS_H();
  29074. +   use_backdrop = !NULL(backdrop);
  29075. +   if (scr == Qt) screen_name = 0; /* set to zero for def. */
  29076. +   else if (!NULL (scr))
  29077. +     {
  29078. +       CHECK_STRING (scr, 0);
  29079. +       screen_name = XSTRING (scr)->data;
  29080. +     }
  29081. +   else screen_name = emacs_screen_name;
  29082. +   if (emacs_win)
  29083. +     {
  29084. +       struct Window *old_win = emacs_win;
  29085. +       struct IOStdReq *old_console = emacs_console;
  29086. +       suspend_menus();
  29087. +       opened = open_emacs_window(tempx, tempy, tempw, temph, use_backdrop,
  29088. +                  screen_name);
  29089. +       if (opened != ok)
  29090. +     {
  29091. +       resume_menus();
  29092. +       if (opened == no_window) error("Failed to open desired window");
  29093. +       else if (screen_name)
  29094. +         error("Unknown public screen %s", screen_name);
  29095. +       else error("The default screen wasn't found !?");
  29096. +     }
  29097. +       _device_close(old_console);
  29098. +       CloseWindow(old_win);
  29099. +       if (!resume_menus()) error("Failed to recover menus (No memory?)");
  29100. +     }
  29101. +   else /* No window, set defaults */
  29102. +     {
  29103. +       emacs_screen_name = screen_name;
  29104. +       if (screen_name)
  29105. +     {
  29106. +       emacs_screen_name_storage[MAXPUBSCREENNAME] = '\0';
  29107. +       strncpy(emacs_screen_name_storage, screen_name, MAXPUBSCREENNAME);
  29108. +     }
  29109. +       emacs_x = tempx;
  29110. +       emacs_y = tempy;
  29111. +       emacs_w = tempw;
  29112. +       emacs_h = temph;
  29113. +       emacs_backdrop = use_backdrop;
  29114. +     }
  29115. +   return Qnil;
  29116. + }
  29117. + /* The next 2 functions are very usefull for writing
  29118. +  * arexx/lisp functions that interact with other programs
  29119. +  * that will be sharing the same screen.  -ch3/19/93. */
  29120. + DEFUN("amiga-get-window-geometry",
  29121. +       Famiga_get_window_geometry, Samiga_get_window_geometry, 0, 0, 0,
  29122. +       "Get Emacs window geometry.\n\
  29123. + a list returned is of the form:  (iconified x y width height backdrop)\n\
  29124. + where x, y, width, height are integers, backdrop is t or nil and iconified\n\
  29125. + is t if the window is iconified and nil otherwise")
  29126. + ()
  29127. + {
  29128. +   Lisp_Object x, y, w, h, b, i;
  29129. +   XSET(x, Lisp_Int, EMACS_X());
  29130. +   XSET(y, Lisp_Int, EMACS_Y());
  29131. +   XSET(w, Lisp_Int, EMACS_W());
  29132. +   XSET(h, Lisp_Int, EMACS_H());
  29133. +   b = emacs_backdrop ? Qt : Qnil;
  29134. +   i = emacs_iconified ? Qt : Qnil;
  29135. +   return Fcons(i, Fcons(x, Fcons(y, Fcons(w, Fcons(h, Fcons(b, Qnil))))));
  29136. + }
  29137. + DEFUN("amiga-get-screen-geometry",
  29138. +       Famiga_get_screen_geometry, Samiga_get_screen_geometry, 0, 0, 0,
  29139. +       "Get geometry of the screen emacs window resides on.\n\
  29140. + a list returned is of the form:  (name x y width height)\n\
  29141. + where name is a string, x, y, width, height are integers.\n\
  29142. + Only the public screen name is returned if the window is not currently open.\n\
  29143. + In this last case, the name may be nil if the window will be opened on the\n\
  29144. + default public screen.")
  29145. + ()
  29146. + {
  29147. +   Lisp_Object name;
  29148. +   if (emacs_screen_name) name = Qnil;
  29149. +   else name = build_string(emacs_screen_name);
  29150. +   if(emacs_win)
  29151. +     {
  29152. +       struct Screen *s = emacs_win->WScreen;
  29153. +       Lisp_Object x, y, w, h;
  29154. +       XSET(x, Lisp_Int, s->LeftEdge);
  29155. +       XSET(y, Lisp_Int, s->TopEdge);
  29156. +       XSET(w, Lisp_Int, s->Width);
  29157. +       XSET(h, Lisp_Int, s->Height);
  29158. +       return Fcons(name, Fcons(x, Fcons(y, Fcons(w, Fcons(h, Qnil)))));
  29159. +     }
  29160. +   return Fcons(name, Qnil);
  29161. + }
  29162. + DEFUN("amiga-iconify", Famiga_iconify, Samiga_iconify, 0, 0, "",
  29163. +       "Toggle the emacs iconification state.")
  29164. + ()
  29165. + {
  29166. +   check_intuition();
  29167. +   if (emacs_iconified)
  29168. +     {
  29169. +       /* Deiconify */
  29170. +       /* Reopen window */
  29171. +       if (open_emacs_window(emacs_x, emacs_y, emacs_w, emacs_h, emacs_backdrop,
  29172. +                 emacs_screen_name) != ok)
  29173. +     error("Failed to deiconify (No memory?)");
  29174. +       resume_menus();
  29175. +       RemoveAppIcon(emacs_icon);
  29176. +       emacs_icon = 0;
  29177. +       emacs_iconified = 0;
  29178. +     }
  29179. +   else
  29180. +     if (emacs_icon = AddAppIconA(0, 0, "Emacs", wbport, 0, &emacs_icon_object, 0))
  29181. +       {
  29182. +     if (emacs_win)
  29183. +       {
  29184. +         /* Close window */
  29185. +         emacs_x = EMACS_X(); emacs_y = EMACS_Y();
  29186. +         emacs_w = EMACS_W(); emacs_h = EMACS_H();
  29187. +         suspend_menus();
  29188. +         close_emacs_window();
  29189. +       }
  29190. +     emacs_iconified = 1;
  29191. +       }
  29192. +     else error("Iconify attempt failed\n");
  29193. +   return Qnil;
  29194. + }
  29195. + DEFUN("amiga-set-icon-pos", Famiga_set_icon_pos, Samiga_set_icon_pos, 2, 2,
  29196. + "nX position: \n\
  29197. + nY position: ",
  29198. +       "Set the X Y position of the icon for emacs when iconified.")
  29199. +   (Lisp_Object x, Lisp_Object y)
  29200. + {
  29201. +   long xpos, ypos;
  29202. +   if (NULL (x)) emacs_icon_object.do_CurrentX = NO_ICON_POSITION;
  29203. +   else
  29204. +     {
  29205. +       CHECK_NUMBER (x, 0);
  29206. +       emacs_icon_object.do_CurrentX = XINT(x);
  29207. +     }
  29208. +   if (NULL (y)) emacs_icon_object.do_CurrentY = NO_ICON_POSITION;
  29209. +   else
  29210. +     {
  29211. +       CHECK_NUMBER (y, 0);
  29212. +       emacs_icon_object.do_CurrentY = XINT(y);
  29213. +     }
  29214. +   return Qnil;
  29215. + }
  29216. + struct EClockVal scount[16], ecount[16];
  29217. + long total[16], counting[16], nb[16], susp[16];
  29218. + void start_count(int n)
  29219. + {
  29220. +   nb[n]++;
  29221. +   if (counting[n]) printf("Restarted %d\n", n);
  29222. +   counting[n] = 1;
  29223. +   /*ReadEClock(&scount[n]);*/
  29224. + }
  29225. + void stop_count(int n)
  29226. + {
  29227. +   if (counting[n])
  29228. +     {
  29229. +       /*ReadEClock(&ecount[n]);*/
  29230. +       counting[n] = 0;
  29231. +       total[n] += ecount[n].ev_lo - scount[n].ev_lo;
  29232. +     }
  29233. + }
  29234. + void suspend_count(int n)
  29235. + {
  29236. +   if (counting[n] && susp[n]++ == 0)
  29237. +     {
  29238. +       /*ReadEClock(&ecount[n]);*/
  29239. +       total[n] += ecount[n].ev_lo - scount[n].ev_lo;
  29240. +     }
  29241. + }
  29242. + void resume_count(int n)
  29243. + {
  29244. +   if (counting[n] && --susp[n] == 0) /*ReadEClock(&scount[n])*/;
  29245. + }
  29246. + disp_counts(void)
  29247. + {
  29248. +   int i;
  29249. +   for (i = 0; i < 16; i++)
  29250. +     {
  29251. +       printf("%d(%d) ", total[i], nb[i]);
  29252. +       total[i] = nb[i] = 0;
  29253. +     }
  29254. +   printf("\n");
  29255. + }
  29256. + void screen_puts(char *str, unsigned int len)
  29257. + {
  29258. +   if (emacs_win)
  29259. +     {
  29260. +       int i;
  29261. +       emacs_console->io_Command = CMD_WRITE;
  29262. +       emacs_console->io_Data    = (APTR)str;
  29263. +       emacs_console->io_Length  = len;
  29264. +       /*    start_count(0);
  29265. +         for (i = 1; i <= 6; i++) suspend_count(i);*/
  29266. +       DoIO(emacs_console);
  29267. +       /*    for (i = 1; i <= 6; i++) resume_count(i);
  29268. +         stop_count(0);*/
  29269. +     }
  29270. + }
  29271. + DEFUN ("amiga-activate-window", Famiga_activate_window, Samiga_activate_window, 0, 0, 0,
  29272. +        "Makes emacs window the currently active one.")
  29273. +      ()
  29274. + {
  29275. +   if(emacs_win) {
  29276. +     ActivateWindow(emacs_win);
  29277. +     return Qnil;
  29278. +   }
  29279. +   error("No window to make active.");
  29280. +   return Qnil;
  29281. + }
  29282. + DEFUN ("amiga-window-to-front", Famiga_window_to_front, Samiga_window_to_front, 0, 0, 0,
  29283. +        "Pulls the emacs window to the front (including screen)")
  29284. +      ()
  29285. + {
  29286. +   if(emacs_win) {
  29287. +     WindowToFront(emacs_win);
  29288. +     ScreenToFront(emacs_win->WScreen);
  29289. +     return Qnil;
  29290. +   }
  29291. +   error("No window to pull to the front.");
  29292. +   return Qnil;
  29293. + }
  29294. + DEFUN ("amiga-window-to-back", Famiga_window_to_back, Samiga_window_to_back, 0, 0, 0,
  29295. +        "Pushes the emacs window to the back (including screen)")
  29296. +      ()
  29297. + {
  29298. +   if(emacs_win) {
  29299. +     WindowToBack(emacs_win);
  29300. +     ScreenToBack(emacs_win->WScreen);
  29301. +     return Qnil;
  29302. +   }
  29303. +   error("No window to push back.");
  29304. +   return Qnil;
  29305. + }
  29306. + void syms_of_amiga_screen(void)
  29307. + {
  29308. +   DEFVAR_LISP ("amiga-mouse-item", &Vamiga_mouse_item,
  29309. +            "Encoded representation of last mouse click, corresponding to\n\
  29310. + numerical entries in amiga-mouse-map.");
  29311. +   Vamiga_mouse_item = Qnil;
  29312. +   DEFVAR_LISP ("amiga-mouse-pos", &Vamiga_mouse_pos,
  29313. +            "Current x-y position of mouse by row, column as specified by font.");
  29314. +   Vamiga_mouse_pos = Qnil;
  29315. +   DEFVAR_BOOL ("amiga-remap-bsdel", &amiga_remap_bsdel,
  29316. +            "*If true, map DEL to Ctrl-D and Backspace to DEL. \n\
  29317. + This is the most convenient (and default) setting. If nil, don't remap.");
  29318. +   amiga_remap_bsdel = 1;
  29319. +   DEFVAR_BOOL ("amiga-remap-numeric-keypad", &amiga_remap_numeric_keypad,
  29320. +            "*If true, numeric keypad keys are prefixed with C-x C-^ K.\n\
  29321. + This enables you to remap them, but causes problems with functions like\n\
  29322. + isearch-forward-regexp on some keyboards. Default to true.");
  29323. +   amiga_remap_numeric_keypad = 1;
  29324. +   DEFVAR_BOOL ("amiga-mouse-initialized", &amiga_mouse_initialized,
  29325. +            "Set to true once lisp has been setup to process mouse commands.\n\
  29326. + No mouse processing request (C-X C-^ M) will be queued while this is nil.");
  29327. +   amiga_mouse_initialized = 0;
  29328. +   DEFVAR_BOOL ("amiga-wb-initialized", &amiga_wb_initialized,
  29329. +            "Set to true once lisp has been setup to process workbench commands.\n\
  29330. + No workbench processing request (C-X C-^ W) will be queued while this is nil.");
  29331. +   amiga_mouse_initialized = 0;
  29332. +   defsubr (&Samiga_mouse_events);
  29333. +   defsubr (&Samiga_proc_mouse_event);
  29334. +   defsubr (&Samiga_get_mouse_event);
  29335. +   defsubr (&Samiga_get_wb_event);
  29336. +   defsubr (&Samiga_set_font);
  29337. +   defsubr (&Samiga_set_geometry);
  29338. +   defsubr (&Samiga_set_background_color);
  29339. +   defsubr (&Samiga_set_foreground_color);
  29340. +   defsubr (&Samiga_iconify);
  29341. +   defsubr (&Samiga_set_icon_pos);
  29342. +   /* New functions  -ch3/19/93. */
  29343. +   defsubr (&Samiga_set_inverse_text_pen);
  29344. +   defsubr (&Samiga_set_inverse_fill_pen);
  29345. +   defsubr (&Samiga_window_to_front);
  29346. +   defsubr (&Samiga_window_to_back);
  29347. +   defsubr (&Samiga_activate_window);
  29348. +   defsubr (&Samiga_get_window_geometry);
  29349. +   defsubr (&Samiga_get_screen_geometry);
  29350. + }
  29351. + void init_amiga_screen(void)
  29352. + {
  29353. +   event_num = event_in = event_out = 0;
  29354. +   if (!((IntuitionBase = (struct IntuitionBase *)
  29355. +      OpenLibrary("intuition.library", 37L)) &&
  29356. +     (GfxBase = (struct GfxBase *)OpenLibrary("graphics.library", 0L)) &&
  29357. +     (DiskfontBase = OpenLibrary("diskfont.library", 0L)) &&
  29358. +     (WorkbenchBase = OpenLibrary("workbench.library", 37)) &&
  29359. +     (KeymapBase = OpenLibrary("keymap.library", 36)) &&
  29360. +     (input_req = (struct IOStdReq *)_device_open("input.device", 0, 0, 0, 0,
  29361. +                              sizeof(struct IOStdReq)))))
  29362. +     _fail("Need version 2.04 and diskfont.library!");
  29363. +   if (!(wbport = CreateMsgPort())) no_memory();
  29364. +   /* Add Ctrl-G detector */
  29365. +   int_handler_hook.is_Data = 0;
  29366. +   int_handler_hook.is_Code = (void *)int_handler;
  29367. +   int_handler_hook.is_Node.ln_Pri = 100; /* 100 not 127 is the standard value
  29368. +                       * for input stream handlers.  -ch3/19/93. */
  29369. +   /* it is standard for interrupts to have names  -ch3/19/93.*/
  29370. +   int_handler_hook.is_Node.ln_Name = "GNU Emacs CTRL-G handler";
  29371. +   input_req->io_Command = IND_ADDHANDLER;
  29372. +   input_req->io_Data = (APTR)&int_handler_hook;
  29373. +   /* wasn't checking for error. -ch3/19/93. */
  29374. +   if(0 == DoIO(input_req))
  29375. +     hooked = TRUE;
  29376. +   else
  29377. +     {
  29378. +       hooked = FALSE;
  29379. +       _fail("couldn't get input handler hook for CTRL-G");
  29380. +     }
  29381. +   inputsig |= 1L << wbport->mp_SigBit;
  29382. +   background_hook.h_Entry = (ULONG (*)()) fill_background; /* added cast. */
  29383. +   font = GfxBase->DefaultFont;
  29384. +   init_amiga_menu();
  29385. + }
  29386. + void cleanup_amiga_screen(void)
  29387. + {
  29388. +   if (hooked)
  29389. +     {
  29390. +       input_req->io_Command = IND_REMHANDLER;
  29391. +       input_req->io_Data = (APTR)&int_handler_hook;
  29392. +       DoIO(input_req);
  29393. +     }
  29394. +   close_app_win();
  29395. +   if (wbport) DeleteMsgPort(wbport);
  29396. +   cleanup_amiga_menu();
  29397. +   _device_close(emacs_console);
  29398. +   if (emacs_win) CloseWindow(emacs_win);
  29399. +   if (font_opened) CloseFont(font);
  29400. +   if (IntuitionBase) CloseLibrary(IntuitionBase);
  29401. +   if (GfxBase) CloseLibrary(GfxBase);
  29402. +   if (DiskfontBase) CloseLibrary(DiskfontBase);
  29403. +   if (WorkbenchBase) CloseLibrary(WorkbenchBase);
  29404. +   if (KeymapBase) CloseLibrary(KeymapBase);
  29405. +   _device_close(input_req);
  29406. + }
  29407. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_serial.c emacs-18.59/src/amiga_serial.c
  29408. *** /src/baseline/emacs-18.59/src/amiga_serial.c    Thu Jan  1 00:00:00 1970
  29409. --- emacs-18.59/src/amiga_serial.c    Sat Jun  5 11:37:38 1993
  29410. ***************
  29411. *** 0 ****
  29412. --- 1,72 ----
  29413. + #include <exec/types.h>
  29414. + #include <devices/serial.h>
  29415. + #include <stdio.h>
  29416. + #include <internal/devices.h>
  29417. + #include <proto/exec.h>
  29418. + #include <proto/dos.h>
  29419. + #include "amiga.h"
  29420. + static struct MsgPort  *SerReadPort;
  29421. + static struct IOExtSer *SerReadRequest, *SerWriteRequest;
  29422. + static char ser_inbuf[2];
  29423. + char *far serial_device = "serial.device";
  29424. + long far serial_unit;
  29425. + void init_amiga_serial(void)
  29426. + {
  29427. +     if ((SerWriteRequest = (struct IOExtSer *)
  29428. +      _device_open(serial_device, serial_unit, 0L,
  29429. +               0L, 0, sizeof(struct IOExtSer))) &&
  29430. +     (SerReadPort = CreateMsgPort()) &&
  29431. +     (SerReadRequest  = (struct IOExtSer *)CreateIORequest(SerReadPort, sizeof (struct IOExtSer))))
  29432. +     {
  29433. +     SerReadRequest->IOSer.io_Device = SerWriteRequest->IOSer.io_Device;
  29434. +     SerReadRequest->IOSer.io_Unit = SerWriteRequest->IOSer.io_Unit;
  29435. +     ser_inbuf[1]=0;
  29436. +     SerReadRequest->IOSer.io_Command = CMD_READ;
  29437. +     SerWriteRequest->IOSer.io_Command = CMD_WRITE;
  29438. +     SerReadRequest->IOSer.io_Length = 1;
  29439. +     SerReadRequest->IOSer.io_Data = &ser_inbuf[0];
  29440. +     SendIO(SerReadRequest);
  29441. +     inputsig |= 1L << SerReadPort->mp_SigBit;
  29442. +     }
  29443. +     else _fail("No memory or serial.device missing");
  29444. + }
  29445. + void cleanup_amiga_serial(void)
  29446. + {
  29447. +     if (SerReadRequest)
  29448. +     {
  29449. +     AbortIO(SerReadRequest);
  29450. +     WaitIO(SerReadRequest);
  29451. +     DeleteIORequest(SerReadRequest);
  29452. +     }
  29453. +     if (SerReadPort) DeletePort(SerReadPort);
  29454. +     _device_close(SerWriteRequest);
  29455. + }
  29456. + void check_serial(int force)
  29457. + {
  29458. +     while (CheckIO(SerReadRequest))
  29459. +     {
  29460. +     int c = ser_inbuf[0];
  29461. +     SendIO(SerReadRequest);
  29462. +     enque(c, FALSE);
  29463. +     }
  29464. + }
  29465. + void serial_puts(char *str, int len)
  29466. + {
  29467. +     SerWriteRequest->IOSer.io_Length = len;
  29468. +     SerWriteRequest->IOSer.io_Data = str;
  29469. +     DoIO(SerWriteRequest);
  29470. + }
  29471. + unsigned long serial_baud_rate(void)
  29472. + {
  29473. +     return SerWriteRequest->io_Baud;
  29474. + }
  29475. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_sysdep.c emacs-18.59/src/amiga_sysdep.c
  29476. *** /src/baseline/emacs-18.59/src/amiga_sysdep.c    Thu Jan  1 00:00:00 1970
  29477. --- emacs-18.59/src/amiga_sysdep.c    Sat Jun  5 11:39:12 1993
  29478. ***************
  29479. *** 0 ****
  29480. --- 1,375 ----
  29481. + /* Interfaces to system-dependent kernel and library entries.
  29482. + Copyright (C) 1985, 1986, 1987, 1988 Free Software Foundation, Inc.
  29483. + This file is part of GNU Emacs.
  29484. + GNU Emacs is distributed in the hope that it will be useful,
  29485. + but WITHOUT ANY WARRANTY.  No author or distributor
  29486. + accepts responsibility to anyone for the consequences of using it
  29487. + or for whether it serves any particular purpose or works at all,
  29488. + unless he says so in writing.  Refer to the GNU Emacs General Public
  29489. + License for full details.
  29490. + Everyone is granted permission to copy, modify and redistribute
  29491. + GNU Emacs, but only under the conditions described in the
  29492. + GNU Emacs General Public License.   A copy of this license is
  29493. + supposed to have been given to you along with GNU Emacs so you
  29494. + can know your rights and responsibilities.  It should be in a
  29495. + file named COPYING.  Among other things, the copyright notice
  29496. + and this notice must be preserved on all copies.  */
  29497. + #include <exec/types.h>
  29498. + #include <dos/dos.h>
  29499. + #include <dos/dosextens.h>
  29500. + #include <dos/var.h>
  29501. + #include <exec/execbase.h>
  29502. + #include <exec/tasks.h>
  29503. + #include <utility/tagitem.h>
  29504. + #include <workbench/startup.h>
  29505. + #include <workbench/workbench.h>
  29506. + #include <proto/exec.h>
  29507. + #include <proto/dos.h>
  29508. + #include <proto/icon.h>
  29509. + #include <string.h>
  29510. + #include <ios1.h>
  29511. + #include <stdio.h>
  29512. + #include <sys/types.h>
  29513. + #include <sys/stat.h>
  29514. + #include <signal.h>
  29515. + #include <setjmp.h>
  29516. + #include <unistd.h>
  29517. + #include <internal/vars.h>
  29518. + #undef LONGBITS
  29519. + #undef NULL
  29520. + #include "config.h"
  29521. + #include "lisp.h"
  29522. + #include "emacssignal.h"
  29523. + #define min(x,y) ((x) > (y) ? (y) : (x))
  29524. + #include "termhooks.h"
  29525. + #include "termchar.h"
  29526. + #include "termopts.h"
  29527. + #include "dispextern.h"
  29528. + #include "amiga.h"
  29529. + #define EMACS_TOOL_SIZE 128    /* Room for path to emacs executable */
  29530. + struct Library *IconBase;
  29531. + extern struct ExecBase *SysBase;
  29532. + /*long __stack = 40000;*/        /* Minimum stack size, used by c.o */
  29533. + int amiga_process_stack_size;
  29534. + int amiga_initialized;
  29535. + int amiga_create_icons;        /* If true, we create icons when saving files */
  29536. + enum exit_method amiga_fail_exit = use_xcexit;
  29537. + int selecting;
  29538. + /* Emacs sysdep routines */
  29539. + /* --------------------- */
  29540. + set_exclusive_use(int fd) {}
  29541. + /* Suspend the Emacs process; give terminal to its superior.  */
  29542. + sys_suspend()
  29543. + {
  29544. +   /* This could have been iconify, but:
  29545. +      a) Not good for serial lines.
  29546. +      b) emacs stays active while iconified */
  29547. + }
  29548. + char *get_system_name()
  29549. + {
  29550. +   static char sysname[32];
  29551. +   gethostname(sysname, sizeof sysname);
  29552. +   return sysname;
  29553. + }
  29554. + /*
  29555. +  *    flush any pending output
  29556. +  *      (may flush input as well; it does not matter the way we use it)
  29557. +  */
  29558. + flush_pending_output (channel)
  29559. +      int channel;
  29560. + {
  29561. + }
  29562. + wait_for_termination (pid)
  29563. +      int pid;
  29564. + {
  29565. +   while (1)
  29566. +     {
  29567. +       sigsetmask (sigmask (SIGCHLD));
  29568. +       if (0 > kill (pid, 0))
  29569. +         {
  29570. +       sigsetmask (SIGEMPTYMASK);
  29571. +       break;
  29572. +     }
  29573. +       sigpause (SIGEMPTYMASK);
  29574. +     }
  29575. + }
  29576. + /* A few general amiga support routines */
  29577. + /* ------------------------------------ */
  29578. + char *expand_path(char *path, char *buf, int len)
  29579. + {
  29580. +   BPTR dirlock;
  29581. +   APTR window;
  29582. +   window = _us->pr_WindowPtr;
  29583. +   _us->pr_WindowPtr = (APTR)-1;
  29584. +   dirlock = Lock(path, ACCESS_READ);
  29585. +   _us->pr_WindowPtr = window;
  29586. +   if (dirlock)            /* Expand lock name */
  29587. +     {
  29588. +       if (!NameFromLock(dirlock, buf, len)) buf = 0;
  29589. +       UnLock(dirlock);
  29590. +       return buf;
  29591. +     }
  29592. +   return 0;
  29593. + }
  29594. + #undef select
  29595. + int emacs_select(int nfds, int *rfds, int *wfds, int *efds, struct timeval *timeout)
  29596. + {
  29597. +   int ret;
  29598. +   selecting = TRUE;
  29599. +   ret = select(nfds, rfds, wfds, efds, timeout);
  29600. +   selecting = FALSE;
  29601. +   return ret;
  29602. + }
  29603. + void no_memory(void)
  29604. + {
  29605. +   _fail("No memory");
  29606. + }
  29607. + char *amiga_path(void)
  29608. + {
  29609. +   char *path, *pp, name[128];
  29610. +   int pathsize;
  29611. +   struct CommandLineInterface *cli;
  29612. +   BPTR lock;
  29613. +   long l, *lp, nlen;
  29614. +   pathsize = 128;
  29615. +   path = (char *)xmalloc(pathsize);
  29616. +   strcpy(path, ".");
  29617. +   pp = path + 1;
  29618. +   if (!(cli = (struct CommandLineInterface *)((long)_us->pr_CLI << 2)))
  29619. +     return path;
  29620. +   l = (long)cli->cli_CommandDir;
  29621. +   while (l) {
  29622. +     *pp++ = ',';
  29623. +     l <<= 2;
  29624. +     lp = (long *)l;
  29625. +     lock = (BPTR)*(lp + 1);
  29626. +     NameFromLock(lock, name, 128);
  29627. +     nlen = strlen(name);
  29628. +     if (pp + nlen + 5 >= path + pathsize)
  29629. +       {
  29630. +     char *newpath;
  29631. +     pathsize = 2 * pathsize + nlen;
  29632. +     newpath = (char *)xrealloc(path, pathsize);
  29633. +     pp = newpath + (pp - path);
  29634. +     path = newpath;
  29635. +       }
  29636. +     memcpy(pp, name, nlen);
  29637. +     pp += nlen;
  29638. +     l = *lp;
  29639. +   }
  29640. +   /* Use of +5 above guarantees that there is enough space for c: */
  29641. +   strcpy(pp, ",c:");
  29642. +   return path;
  29643. + }
  29644. + /* Some general amiga commands */
  29645. + /* --------------------------- */
  29646. + #define emacs_file_icon_width 54
  29647. + #define emacs_file_icon_height 22
  29648. + #define emacs_file_icon_num_planes 2
  29649. + static UWORD chip emacs_file_icon_data[2][22][4] = {
  29650. +     {
  29651. +         0x0000,0x0000,0x0000,0x0400,0x0000,0x0000,0x0000,0x0c00,
  29652. +         0x0000,0x0000,0x0000,0x0c00,0x07ff,0xffff,0xffe0,0x0c00,
  29653. +         0x0400,0x0000,0x0030,0x0c00,0x0400,0x0000,0x0028,0x0c00,
  29654. +         0x04ff,0xffff,0xfe24,0x0c00,0x0400,0x0000,0x0022,0x0c00,
  29655. +         0x04ff,0xffff,0xfe3f,0x0c00,0x0400,0x0000,0x0000,0x8c00,
  29656. +         0x04ff,0xffc0,0x0000,0x8c00,0x0400,0x0000,0x0000,0x8c00,
  29657. +         0x0400,0x0000,0x0000,0x8c00,0x0400,0x0000,0x0000,0x8c00,
  29658. +         0x04ff,0xffff,0xfe00,0x8c00,0x0400,0x0000,0x0000,0x8c00,
  29659. +         0x04ff,0xffff,0xfe00,0x8c00,0x0400,0x0000,0x0000,0x8c00,
  29660. +         0x07ff,0xffff,0xffff,0x8c00,0x0000,0x0000,0x0000,0x0c00,
  29661. +         0x0000,0x0000,0x0000,0x0c00,0x7fff,0xffff,0xffff,0xfc00
  29662. +     },
  29663. +     {
  29664. +         0xffff,0xffff,0xffff,0xf800,0x8000,0x0000,0x0000,0x0000,
  29665. +         0x8000,0x0000,0x0000,0x0000,0x8000,0x0000,0x0000,0x0000,
  29666. +         0x83ff,0xffff,0xffc0,0x0000,0x83ff,0xffff,0xffd0,0x0000,
  29667. +         0x8300,0x0000,0x01d8,0x0000,0x83ff,0xffff,0xffdc,0x0000,
  29668. +         0x8300,0x0000,0x01c0,0x0000,0x83ff,0xffff,0xffff,0x0000,
  29669. +         0x8300,0x003f,0xffff,0x0000,0x83ff,0xffff,0xffff,0x0000,
  29670. +         0x83ff,0xffff,0xffff,0x0000,0x83ff,0xffff,0xffff,0x0000,
  29671. +         0x8300,0x0000,0x01ff,0x0000,0x83ff,0xffff,0xffff,0x0000,
  29672. +         0x8300,0x0000,0x01ff,0x0000,0x83ff,0xffff,0xffff,0x0000,
  29673. +         0x8000,0x0000,0x0000,0x0000,0x8000,0x0000,0x0000,0x0000,
  29674. +         0x8000,0x0000,0x0000,0x0000,0x8000,0x0000,0x0000,0x0000
  29675. +     },
  29676. + };
  29677. + struct Image far emacs_file_icon_image = {
  29678. +   0, 0,
  29679. +   emacs_file_icon_width, emacs_file_icon_height, emacs_file_icon_num_planes,
  29680. +   (UWORD *)emacs_file_icon_data,
  29681. +   3, 0,
  29682. +   0
  29683. + };
  29684. + static char *far emacs_file_tooltypes[] = {
  29685. +   "FILETYPE=TEXT",
  29686. +   0
  29687. + };
  29688. + static char far emacs_tool[EMACS_TOOL_SIZE];
  29689. + static struct DiskObject far emacs_file_icon_object = {
  29690. +   WB_DISKMAGIC, WB_DISKVERSION,
  29691. +   { 0, 0, 0, emacs_file_icon_width, emacs_file_icon_height,
  29692. +     GFLG_GADGIMAGE | GADGBACKFILL, GACT_IMMEDIATE | GACT_RELVERIFY, GTYP_BOOLGADGET,
  29693. +     (APTR)&emacs_file_icon_image },
  29694. +   WBPROJECT, emacs_tool, emacs_file_tooltypes,
  29695. +   NO_ICON_POSITION, NO_ICON_POSITION,
  29696. +   0, 0,
  29697. +   40000                /* Stack size for emacs */
  29698. + };
  29699. + DEFUN ("amiga-put-icon", Famiga_put_icon, Samiga_put_icon, 2, 2, 0,
  29700. +        "Create an icon for FILE.\n\
  29701. + If FORCE is non-nil create it unconditionally, otherwise only if one doesn't exist.\n\
  29702. + Returns t if an icon was created, nil otherwise.")
  29703. +      (file, force)
  29704. + Lisp_Object file, force;
  29705. + {
  29706. +   char *fname;
  29707. +   struct DiskObject *obj;
  29708. +   CHECK_STRING(file, 0);
  29709. +   fname = XSTRING(file)->data;
  29710. +   if (NULL (force) && (obj = GetDiskObject(fname)))
  29711. +     {
  29712. +       /* Icon exists, don't overwrite */
  29713. +       FreeDiskObject(obj);
  29714. +       return Qnil;
  29715. +     }
  29716. +   emacs_file_icon_object.do_StackSize = _stack_size;
  29717. +   if (PutDiskObject(fname, &emacs_file_icon_object)) return Qt;
  29718. +   error("Icon for %s couldn't be created", fname);
  29719. + }
  29720. + /* Amiga initialisation routines */
  29721. + /* ----------------------------- */
  29722. + syms_of_amiga ()
  29723. + {
  29724. +   DEFVAR_BOOL("amiga-initialized", &amiga_initialized, "");
  29725. +   DEFVAR_INT("amiga-malloc-bytes-used", &malloc_bytes_used,
  29726. +          "Number of malloc bytes used when emacs was dumped");
  29727. +   DEFVAR_BOOL("amiga-create-icons", &amiga_create_icons,
  29728. +          "If non-nil, create icons when saving files.");
  29729. +   defsubr(&Samiga_put_icon);
  29730. +   amiga_process_stack_size = 0;
  29731. +   DEFVAR_INT("amiga-process-stack-size", &amiga_process_stack_size,
  29732. +      "Size of stack for called processes. 0 means same size as emacs stack.");
  29733. +   syms_of_amiga_tty();
  29734. +   syms_of_amiga_menu();
  29735. +   syms_of_amiga_clipboard();
  29736. + }
  29737. + static void amiga_early_init(int *_argc, char ***_argv)
  29738. + {
  29739. +   int argc = *_argc;
  29740. +   char **argv = *_argv;
  29741. +   if (argc > 2 && !strcmp(argv[1], "-pure"))
  29742. +     {
  29743. +       puresize = atoi(argv[2]);
  29744. +       argc -= 2; argv += 2;
  29745. +     }
  29746. +   if (argc > 2 && !strcmp(argv[1], "-malloc"))
  29747. +     {
  29748. +       malloc_hunk_size = atoi(argv[2]);
  29749. +       argc -= 2; argv += 2;
  29750. +     }
  29751. +   if (argc > 2 && !strcmp(argv[1], "-prealloc"))
  29752. +     {
  29753. +       pre_alloc = atoi(argv[2]);
  29754. +       argc -= 2; argv += 2;
  29755. +     }
  29756. +   /* Handle the -dev switch, which specifies device & unit to use as terminal */
  29757. +   if (argc > 3 && !strcmp (argv[1], "-dev"))
  29758. +     {
  29759. +       extern char *far serial_device;
  29760. +       extern long far serial_unit;
  29761. +       serial_device = argv[2];
  29762. +       serial_unit = atoi(argv[3]);
  29763. +       fprintf (stderr, "Using %s (unit %d)\n", serial_device ,serial_unit);
  29764. +       argc -= 3; argv += 3;
  29765. +     }
  29766. +   /* Patch real argc, argv to hide arguments we used */
  29767. +   argv[0] = (*_argv)[0];
  29768. +   *_argv = argv;
  29769. +   *_argc = argc;
  29770. +   expand_path(argv[0], emacs_tool, EMACS_TOOL_SIZE);
  29771. + }
  29772. + void cleanup_amiga(void)
  29773. + {
  29774. +   cleanup_clipboard();
  29775. +   cleanup_amiga_tty();
  29776. +   if (IconBase) CloseLibrary(IconBase);
  29777. + }
  29778. + void amiga_undump_reinit(void)
  29779. + /* Post-undump initialisation */
  29780. + {
  29781. +   extern struct WBStartup *_WBenchMsg;
  29782. +   emacs_malloc_init();
  29783. +   early_amiga_tty();
  29784. +   early_clipboard();
  29785. +   if (!onexit(cleanup_amiga)) _fail("Internal problem with onexit");
  29786. +   make_environ();
  29787. +   IconBase = OpenLibrary("icon.library", 0);
  29788. +   if (!IconBase) _fail("Need icon.library");
  29789. +   amiga_create_icons = _WBenchMsg != 0;
  29790. +   init_amiga_tty(); init_clipboard();
  29791. + }
  29792. + #undef main
  29793. + main(int argc, char **argv)
  29794. + /* Effect: Call emacs_main after doing some early amiga initialisation for emacs.
  29795. + */
  29796. + {
  29797. +   /* This initialisation may steal some command line options */
  29798. +   amiga_early_init(&argc, &argv);
  29799. +   emacs_main(argc, argv);
  29800. + }
  29801. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_term.c emacs-18.59/src/amiga_term.c
  29802. *** /src/baseline/emacs-18.59/src/amiga_term.c    Thu Jan  1 00:00:00 1970
  29803. --- emacs-18.59/src/amiga_term.c    Tue Mar 23 09:45:12 1993
  29804. ***************
  29805. *** 0 ****
  29806. --- 1,388 ----
  29807. + /* Amiga terminal control routines.
  29808. +    Copyright (C) 1985, 1986, 1987 Free Software Foundation, Inc.
  29809. + This file is part of GNU Emacs.
  29810. + GNU Emacs is free software; you can redistribute it and/or modify
  29811. + it under the terms of the GNU General Public License as published by
  29812. + the Free Software Foundation; either version 1, or (at your option)
  29813. + any later version.
  29814. + GNU Emacs is distributed in the hope that it will be useful,
  29815. + but WITHOUT ANY WARRANTY; without even the implied warranty of
  29816. + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  29817. + GNU General Public License for more details.
  29818. + You should have received a copy of the GNU General Public License
  29819. + along with GNU Emacs; see the file COPYING.  If not, write to
  29820. + the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  29821. + #include <stdio.h>
  29822. + #include <ctype.h>
  29823. + #include "config.h"
  29824. + #include "termhooks.h"
  29825. + #include "termchar.h"
  29826. + #include "termopts.h"
  29827. + /* internal state */
  29828. + /* nonzero means supposed to write text in standout mode.  */
  29829. + static int standout_requested;
  29830. + static int standout_mode;    /* Nonzero when in standout mode.  */
  29831. + static char tens[100] = {
  29832. +     '0', '0', '0', '0', '0', '0', '0', '0', '0', '0',
  29833. +     '1', '1', '1', '1', '1', '1', '1', '1', '1', '1',
  29834. +     '2', '2', '2', '2', '2', '2', '2', '2', '2', '2',
  29835. +     '3', '3', '3', '3', '3', '3', '3', '3', '3', '3',
  29836. +     '4', '4', '4', '4', '4', '4', '4', '4', '4', '4',
  29837. +     '5', '5', '5', '5', '5', '5', '5', '5', '5', '5',
  29838. +     '6', '6', '6', '6', '6', '6', '6', '6', '6', '6',
  29839. +     '7', '7', '7', '7', '7', '7', '7', '7', '7', '7',
  29840. +     '8', '8', '8', '8', '8', '8', '8', '8', '8', '8',
  29841. +     '9', '9', '9', '9', '9', '9', '9', '9', '9', '9',
  29842. + };
  29843. + static char ones[100] = {
  29844. +     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  29845. +     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  29846. +     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  29847. +     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  29848. +     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  29849. +     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  29850. +     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  29851. +     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  29852. +     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  29853. +     '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  29854. + };
  29855. + #define addnum(str, num) if (num < 100) \
  29856. +                              { *--str = ones[num]; *--str = tens[num]; } \
  29857. +                          else do { *--str = '0' + num % 10; num /= 10; } while (num != 0)
  29858. + static background_highlight ();
  29859. + static turn_off_highlight ();
  29860. + /* Cursor motion stuff (from cm.c) */
  29861. + static int curX, curY;
  29862. + /* Move to absolute position, specified origin 0 */
  29863. + Amove_cursor (row, col)
  29864. + {
  29865. +   char buf[32], *pos = buf + 32;
  29866. +   if (curY == row && curX == col)
  29867. +     return;
  29868. +   curX = col; curY = row;
  29869. +   *--pos = 'H';
  29870. +   col = col + 1; row = row + 1;
  29871. +   addnum(pos, col);
  29872. +   *--pos = ';';
  29873. +   addnum(pos, row);
  29874. +   *--pos = 0x9b;
  29875. +   emacs_output(pos, buf + 32 - pos);
  29876. +   if (pos < buf) abort();
  29877. + }
  29878. + Aring_bell ()
  29879. + {
  29880. +   emacs_output("\07", 1);
  29881. + }
  29882. + Aset_terminal_modes ()
  29883. + {
  29884. + }
  29885. + Areset_terminal_modes ()
  29886. + {
  29887. +   turn_off_highlight ();
  29888. + }
  29889. + Aupdate_begin ()
  29890. + {
  29891. +   /* Hide cursor */
  29892. +   emacs_output("\x9b\x30\x20\x70", 4);
  29893. + }
  29894. + Aupdate_end ()
  29895. + {
  29896. +   background_highlight ();
  29897. +   standout_requested = 0;
  29898. +   emacs_output("\x9b\x20\x70", 3); /* Show cursor */
  29899. + }
  29900. + /* Handle highlighting when TN_standout_width (termcap sg) is not specified.
  29901. +    In these terminals, output is affected by the value of standout
  29902. +    mode when the output is written.
  29903. +    These functions are called on all terminals, but do nothing
  29904. +    on terminals whose standout mode does not work that way.  */
  29905. + static turn_off_highlight ()
  29906. + {
  29907. +   if (standout_mode)
  29908. +     {
  29909. +       extern int background, foreground;      
  29910. +       extern int inverse_fill_pen, inverse_text_pen;
  29911. +       int b = background + 40, f = foreground + 30;
  29912. +       if(inverse_fill_pen < 8 && inverse_text_pen < 8)
  29913. +     {
  29914. +       char buf[32], *pos = buf + 32;
  29915. +       /* UnDo inverse fill */
  29916. +       *--pos = '\0';
  29917. +       *--pos = 'm';
  29918. +       addnum(pos, b);
  29919. +       *--pos = ';';
  29920. +       /* UnDo inverse text */
  29921. +       addnum(pos, f);
  29922. +       *--pos = 0x9b;
  29923. +       emacs_output(pos, buf + 32 - pos);
  29924. +     }
  29925. +       else
  29926. +     {
  29927. +       emacs_output("\x9b""27m", 4);
  29928. +     }
  29929. +     }
  29930. +   standout_mode = 0;
  29931. + }
  29932. + static turn_on_highlight ()
  29933. + {
  29934. +   if (!standout_mode)
  29935. +     {
  29936. +       extern int inverse_fill_pen, inverse_text_pen;
  29937. +       int b = inverse_fill_pen + 40, f = inverse_text_pen + 30;
  29938. +       if(inverse_fill_pen < 8 && inverse_text_pen < 8)
  29939. +     {
  29940. +       char buf[32], *pos = buf + 32;
  29941. +       /* Do inverse fill */
  29942. +       *--pos = '\0';
  29943. +       *--pos = 'm';
  29944. +       addnum(pos, b);
  29945. +       *--pos = ';';
  29946. +       /* Do inverse text */
  29947. +       addnum(pos, f);
  29948. +       *--pos = 0x9b;
  29949. +       emacs_output(pos, buf + 32 - pos);
  29950. +     }
  29951. +       else
  29952. +     {
  29953. +       emacs_output("\x9b\x37m", 3);
  29954. +     }
  29955. +     }
  29956. +   standout_mode = 1;
  29957. + }
  29958. + /* Set standout mode to the state it should be in for
  29959. +    empty space inside windows.  What this is,
  29960. +    depends on the user option inverse-video.  */
  29961. + static background_highlight ()
  29962. + {
  29963. +   if (inverse_video)
  29964. +     turn_on_highlight ();
  29965. +   else
  29966. +     turn_off_highlight ();
  29967. + }
  29968. + /* Set standout mode to the mode specified for the text to be output.  */
  29969. + static
  29970. + highlight_if_desired ()
  29971. + {
  29972. +   if (!inverse_video == !standout_requested)
  29973. +     turn_off_highlight ();
  29974. +   else
  29975. +     turn_on_highlight ();
  29976. + }
  29977. + /* External interface to control of standout mode.
  29978. +    Call this when about to modify line at position VPOS
  29979. +    and not change whether it is highlighted.  */
  29980. + Areassert_line_highlight (highlight, vpos)
  29981. +      int highlight;
  29982. +      int vpos;
  29983. + {
  29984. +   standout_requested = highlight;
  29985. + }
  29986. + /* Call this when about to modify line at position VPOS
  29987. +    and change whether it is highlighted.  */
  29988. + Achange_line_highlight (new_highlight, vpos, first_unused_hpos)
  29989. +      int new_highlight, vpos, first_unused_hpos;
  29990. + {
  29991. +   standout_requested = new_highlight;
  29992. +   move_cursor (vpos, 0);
  29993. +   background_highlight ();
  29994. +   clear_end_of_line (first_unused_hpos);
  29995. +   reassert_line_highlight (new_highlight, curY);
  29996. + }
  29997. + /* Erase operations */
  29998. + /* clear from cursor to end of screen */
  29999. + Aclear_to_end ()
  30000. + {
  30001. +   background_highlight ();
  30002. +   emacs_output("\x9bJ", 2);
  30003. + }
  30004. + /* Clear entire screen */
  30005. + Aclear_screen ()
  30006. + {
  30007. +   background_highlight ();
  30008. +   emacs_output("\f", 1);
  30009. +   curX = curY = 0;
  30010. + }
  30011. + /* Clear to end of line, but do not clear any standout marker.
  30012. +    Assumes that the cursor is positioned at a character of real text,
  30013. +    which implies it cannot be before a standout marker
  30014. +    unless the marker has zero width.
  30015. +    Note that the cursor may be moved.  */
  30016. + Aclear_end_of_line (first_unused_hpos)
  30017. +      int first_unused_hpos;
  30018. + {
  30019. +   if (curX >= first_unused_hpos)
  30020. +     return;
  30021. +   background_highlight ();
  30022. +   emacs_output("\x9bK", 2);
  30023. + }
  30024. + Aoutput_chars (string, len)
  30025. +      register char *string;
  30026. +      int len;
  30027. + {
  30028. +   highlight_if_desired ();
  30029. +   curX += len;
  30030. +   emacs_output(string, len);
  30031. + }
  30032. + /* If start is zero, insert blanks instead of a string at start */
  30033. + Ainsert_chars (start, len)
  30034. +      register char *start;
  30035. +      int len;
  30036. + {
  30037. +   char buf[32], *pos = buf + 32;
  30038. +   highlight_if_desired ();
  30039. +   *--pos = '@';
  30040. +   addnum(pos, len);
  30041. +   *--pos = 0x9b;
  30042. +   emacs_output(pos, buf + 32 - pos);
  30043. +   if (pos < buf) abort();
  30044. +   if (start) emacs_output(start, len);
  30045. + }
  30046. + Adelete_chars (n)
  30047. +      register int n;
  30048. + {
  30049. +   char buf[32], *pos = buf + 32;
  30050. +   *--pos = 'P';
  30051. +   addnum(pos, n);
  30052. +   *--pos = 0x9b;
  30053. +   emacs_output(pos, buf + 32 - pos);
  30054. +   if (pos < buf) abort();
  30055. + }
  30056. + /* Insert N lines at vpos VPOS.  If N is negative, delete -N lines.  */
  30057. + Ains_del_lines (vpos, n)
  30058. +      int vpos, n;
  30059. + {
  30060. +   register int i = n > 0 ? n : -n;
  30061. +   char buf[32], *pos = buf + 32;
  30062. +   if (n > 0)
  30063. +     {
  30064. +       i = n;
  30065. +       *--pos = 'L';
  30066. +     }
  30067. +   else
  30068. +     {
  30069. +       i = -n;
  30070. +       *--pos = 'M';
  30071. +     }
  30072. +   if (vpos + i >= screen_height) return;
  30073. +   move_cursor (vpos, 0);
  30074. +   background_highlight ();
  30075. +   addnum(pos, i);
  30076. +   *--pos = 0x9b;
  30077. +   emacs_output(pos, buf + 32 - pos);
  30078. +   if (pos < buf) abort();
  30079. + }
  30080. + Acalculate_costs (extra, costvec, ncostvec)
  30081. +      int extra;
  30082. +      int *costvec, *ncostvec;
  30083. + {
  30084. +   CalcLID(2, 40, extra, 0, costvec, ncostvec);
  30085. + }
  30086. + Aset_terminal_window (size)
  30087. + int size;
  30088. + {
  30089. + }
  30090. + amiga_term_init ()
  30091. + {
  30092. +   must_write_spaces = FALSE;
  30093. +   min_padding_speed = 0;
  30094. +   memory_below_screen = FALSE;
  30095. +   meta_key = TRUE;
  30096. +   scroll_region_ok = FALSE;
  30097. +   line_ins_del_ok = FALSE;    /* much cleaner display when FALSE  -ch3/19/93. */
  30098. +   char_ins_del_ok = FALSE;
  30099. +   fast_clear_end_of_line = TRUE;
  30100. +   no_redraw_on_reenter = FALSE;
  30101. +   clear_screen_hook = Aclear_screen;
  30102. +   clear_end_of_line_hook = Aclear_end_of_line;
  30103. +   clear_to_end_hook = Aclear_to_end;
  30104. +   ins_del_lines_hook = Ains_del_lines;
  30105. +   change_line_highlight_hook = Achange_line_highlight;
  30106. +   insert_chars_hook = Ainsert_chars;
  30107. +   output_chars_hook = Aoutput_chars;
  30108. +   delete_chars_hook = Adelete_chars;
  30109. +   ring_bell_hook = Aring_bell;
  30110. +   reset_terminal_modes_hook = Areset_terminal_modes;
  30111. +   set_terminal_modes_hook = Aset_terminal_modes;
  30112. +   update_begin_hook = Aupdate_begin;
  30113. +   update_end_hook = Aupdate_end;
  30114. +   set_terminal_window_hook = Aset_terminal_window;
  30115. +   move_cursor_hook = Amove_cursor;
  30116. +   reassert_line_highlight_hook = Areassert_line_highlight;
  30117. +   dont_calculate_costs = 1;
  30118. +   calculate_costs_hook = Acalculate_costs;
  30119. +   /* Get screen size from system, or else from somewhere ...  */
  30120. +   get_screen_size (&screen_width, &screen_height);
  30121. +   /* Random defaults to avoid any problems */
  30122. +   if (screen_width <= 0) screen_width = 80;
  30123. +   if (screen_height <= 0) screen_height = 23;
  30124. +   init_baud_rate ();
  30125. + }
  30126. diff -rc --new-file /src/baseline/emacs-18.59/src/amiga_tty.c emacs-18.59/src/amiga_tty.c
  30127. *** /src/baseline/emacs-18.59/src/amiga_tty.c    Thu Jan  1 00:00:00 1970
  30128. --- emacs-18.59/src/amiga_tty.c    Sat Jun  5 13:20:50 1993
  30129. ***************
  30130. *** 0 ****
  30131. --- 1,305 ----
  30132. + #include "config.h"
  30133. + #undef NULL
  30134. + #include "lisp.h"
  30135. + #include "termchar.h"
  30136. + #include <stdio.h>
  30137. + #include <errno.h>
  30138. + #include <internal/files.h>
  30139. + #include <internal/vars.h>
  30140. + #undef LONGBITS
  30141. + #include <exec/types.h>
  30142. + #include <dos/dos.h>
  30143. + #include <proto/exec.h>
  30144. + #include "amiga.h"
  30145. + #include "termhooks.h"
  30146. + static int term_initialised;
  30147. + ULONG inputsig;
  30148. + /* A few tty system dependent routines unused on the Amiga */
  30149. + setpgrp_of_tty(int pid) {}
  30150. + init_sigio() {}
  30151. + reset_sigio() {}
  30152. + request_sigio() {}
  30153. + unrequest_sigio() {}
  30154. + /* Return nonzero if safe to use tabs in output.
  30155. +    At the time this is called, init_sys_modes has not been done yet.  */
  30156. + tabs_safe_p()
  30157. + {
  30158. +   if (noninteractive)
  30159. +     return 1;
  30160. +   return 0;            /* Not safe on Amiga !? */
  30161. + }
  30162. + /* Get terminal size from system.
  30163. +    Store number of lines into *heightp and width into *widthp.
  30164. +    If zero or a negative number is stored, the value is not valid.  */
  30165. + get_screen_size (widthp, heightp)
  30166. +      int *widthp, *heightp;
  30167. + {
  30168. +     if (term_initialised && !inhibit_window_system)
  30169. +     get_window_size(widthp, heightp);
  30170. +     else /* We don't known what size the terminal is */
  30171. +     {
  30172. +     *widthp = 0;
  30173. +     *heightp = 0;
  30174. +     }
  30175. + }
  30176. + init_baud_rate ()
  30177. + {
  30178. +   if (noninteractive || !term_initialised) baud_rate = 1200;
  30179. +   else if (!inhibit_window_system) baud_rate = 38400;
  30180. +   else baud_rate = serial_baud_rate();
  30181. + }
  30182. + void check_intuition ()
  30183. + {
  30184. +     if (noninteractive || inhibit_window_system)
  30185. +         error ("You aren't using a window.");
  30186. + }
  30187. + #define TTYBUFSIZE 256        /* Same size as kbd_buffer */
  30188. + static char ttybuf[TTYBUFSIZE];
  30189. + static int tty_count;
  30190. + #define TTYPUT(c) { if (tty_count < TTYBUFSIZE) ttybuf[tty_count++] = c; }
  30191. + static int interrupt_char;
  30192. + void enque(unsigned int c, int meta)
  30193. + /* place input keys in keyboard buffer
  30194. +    If high bit is set, precede character with ^Q (hack).
  30195. +    If meta is true, set high bit.
  30196. +    If both the high bit & meta are true, we have a problem. Ignore it.
  30197. +    If c == AMIGASEQ (256) enqueue the amiga sequence introducer (C-x C-^)
  30198. + */
  30199. + {
  30200. +   /* Hack CSI to be AMIGASEQ (to allow defining function keys, etc) */
  30201. +   if (c == 0233 || c == AMIGASEQ)
  30202. +     {
  30203. +       TTYPUT('x' & 037);
  30204. +       TTYPUT('^' & 037);
  30205. +     }
  30206. +   else if (c >= 0200)    /* Special character, precede with ^Q */
  30207. +     {
  30208. +       TTYPUT('q' & 037);
  30209. +       TTYPUT(c);
  30210. +     }
  30211. +   else
  30212. +     {
  30213. +       if (meta) c |= 0200;
  30214. +       if (c == interrupt_char) Signal(_us, SIGBREAKF_CTRL_C);
  30215. +       else TTYPUT(c);
  30216. +     }
  30217. + }
  30218. + int get_ttycount(void)
  30219. + {
  30220. +   return tty_count;
  30221. + }
  30222. + init_sys_modes ()
  30223. + {
  30224. +   extern int quit_char;
  30225. +   if (noninteractive)
  30226. +     return;
  30227. +   if (inhibit_window_system) clear_screen();
  30228. +   interrupt_char = quit_char;
  30229. +   if (!inhibit_window_system) setup_intchar(interrupt_char);
  30230. + }
  30231. + reset_sys_modes ()
  30232. + {
  30233. +   if (noninteractive)
  30234. +     {
  30235. +       fflush (stdout);
  30236. +       return;
  30237. +     }
  30238. +   move_cursor (screen_height - 1, 0);
  30239. +   clear_end_of_line (screen_width);
  30240. +   /* clear_end_of_line may move the cursor */
  30241. +   move_cursor (screen_height - 1, 0);
  30242. + }
  30243. + void amiga_consume_input(void)
  30244. + {
  30245. +   extern int this_command_key_count;
  30246. +   int force = this_command_key_count == 0;
  30247. +   /* If force is TRUE & some non-keyboard (eg mouse events) input is pending,
  30248. +      insert the appropriate magic sequence in the input stream */
  30249. +   if (term_initialised)
  30250. +     {
  30251. +       if (!inhibit_window_system) check_window(force);
  30252. +       else check_serial(force);
  30253. +       check_arexx(force, TRUE);
  30254. +     }
  30255. + }
  30256. + discard_tty_input ()
  30257. + {
  30258. +   if (noninteractive)
  30259. +     return;
  30260. +   amiga_consume_input();
  30261. +   tty_count = 0;
  30262. +   chkabort();
  30263. + }
  30264. + /* Code for the fd describing the emacs input (terminal or window) */
  30265. + static ULONG __regargs ttyin_select_start(void *userinfo, int rd, int wr)
  30266. + {
  30267. +   if (!inhibit_window_system) force_window();
  30268. +   return tty_count ? -1 : inputsig;
  30269. + }
  30270. + static void __regargs ttyin_select_poll(void *userinfo, int *rd, int *wr)
  30271. + {
  30272. +   amiga_consume_input();
  30273. +   if (!tty_count) *rd = 0;
  30274. + }
  30275. + static int __regargs ttyin_read(void *userinfo, void *buffer, unsigned int length)
  30276. + {
  30277. +   amiga_consume_input();
  30278. +   if (length > tty_count) length = tty_count;
  30279. +   memcpy(buffer, ttybuf, length);
  30280. +   tty_count -= length;
  30281. +   if (tty_count) memmove(ttybuf, ttybuf + length, tty_count - length);
  30282. +   return (int)length;
  30283. + }
  30284. + static int __regargs ttyin_write(void *userinfo, void *buffer, unsigned int length)
  30285. + {
  30286. +   errno = EACCES;
  30287. +   return -1;
  30288. + }
  30289. + static int __regargs ttyin_lseek(void *userinfo, long rpos, int mode)
  30290. + {
  30291. +   errno = ESPIPE;
  30292. +   return -1;
  30293. + }
  30294. + static int __regargs ttyin_close(void *userinfo, int internal)
  30295. + {
  30296. +   return 0;
  30297. + }
  30298. + static int __regargs ttyin_ioctl(void *userinfo, int request, void *data)
  30299. + {
  30300. +   errno = EINVAL;
  30301. +   return -1;
  30302. + }
  30303. + #define CBUFSIZE 1024
  30304. + #undef fwrite
  30305. + #undef fflush
  30306. + char cbuffer[CBUFSIZE + 16], *cbuffer_pos;
  30307. + int emacs_fflush(FILE *f)
  30308. + {
  30309. +     if (noninteractive || f != stdout) return fflush(f);
  30310. +     else
  30311. +     {
  30312. +     int len;
  30313. +     len = cbuffer_pos - cbuffer;
  30314. +     if (term_initialised)
  30315. +         if (!inhibit_window_system) screen_puts(cbuffer, len);
  30316. +         else serial_puts(cbuffer, len);
  30317. +     if (termscript) fwrite (cbuffer, 1, len, termscript);
  30318. +     cbuffer_pos = cbuffer;
  30319. +     return 0;
  30320. +     }
  30321. + }
  30322. + void emacs_putchar(int c)
  30323. + {
  30324. +     if (cbuffer_pos >= cbuffer + CBUFSIZE) emacs_fflush(stdout);
  30325. +     *cbuffer_pos++ = c;
  30326. + }
  30327. + void emacs_output(char *str, int size)
  30328. + {
  30329. +     if (cbuffer_pos + size > cbuffer + CBUFSIZE) emacs_fflush(stdout);
  30330. +     if (size > CBUFSIZE)
  30331. +     {
  30332. +     if (term_initialised)
  30333. +         if (!inhibit_window_system) screen_puts(str, size);
  30334. +         else serial_puts(str, size);
  30335. +     }
  30336. +     else
  30337. +     {
  30338. +     memcpy(cbuffer_pos, str, size);
  30339. +     cbuffer_pos += size;
  30340. +     }
  30341. + }
  30342. + void emacs_fwrite(char *str, unsigned int nblocks, unsigned int len, FILE *f)
  30343. + {
  30344. +     if (noninteractive || f != stdout) fwrite (str, nblocks, len, f);
  30345. +     else
  30346. +     {
  30347. +     unsigned int size;
  30348. +     if (nblocks == 1) size = len; /* Emacs always uses 1 "block" */
  30349. +     else size = nblocks * len;
  30350. +     emacs_output(str, size);
  30351. +     }
  30352. + }
  30353. + void syms_of_amiga_tty(void)
  30354. + {
  30355. +   syms_of_amiga_screen();
  30356. +   syms_of_amiga_rexx();
  30357. + }
  30358. + void init_amiga_tty()
  30359. + {
  30360. +   inputsig = 0;
  30361. +   term_initialised = FALSE;
  30362. +   init_amiga_rexx();
  30363. + }
  30364. + void cleanup_amiga_tty()
  30365. + {
  30366. +   cleanup_amiga_rexx();
  30367. +   cleanup_amiga_serial();
  30368. +   cleanup_amiga_screen();
  30369. + }
  30370. + void early_amiga_tty()
  30371. + {
  30372. +   cbuffer_pos = cbuffer;
  30373. +   tty_count = 0;
  30374. + }
  30375. + void amiga_term_open(void)
  30376. + {
  30377. +   inhibit_window_system ? init_amiga_serial() : init_amiga_screen();
  30378. +   close(0);
  30379. +   if (_alloc_fd((void *)1, FI_READ, ttyin_select_start, ttyin_select_poll, ttyin_read,
  30380. +         ttyin_write, ttyin_lseek, ttyin_close, ttyin_ioctl) == 0)
  30381. +     term_initialised = TRUE;
  30382. +   else _fail("Failed to initialise I/O, no memory ?");
  30383. + }
  30384. diff -rc --new-file /src/baseline/emacs-18.59/src/buffer.c emacs-18.59/src/buffer.c
  30385. *** /src/baseline/emacs-18.59/src/buffer.c    Wed May 13 15:39:33 1992
  30386. --- emacs-18.59/src/buffer.c    Sun Nov 22 10:13:24 1992
  30387. ***************
  30388. *** 1137,1143 ****
  30389.   #ifndef VMS
  30390.     /* Maybe this should really use some standard subroutine
  30391.        whose definition is filename syntax dependent.  */
  30392. !   if (buf[strlen (buf) - 1] != '/')
  30393.       strcat (buf, "/");
  30394.   #endif /* not VMS */
  30395.     current_buffer->directory = build_string (buf);
  30396. --- 1137,1147 ----
  30397.   #ifndef VMS
  30398.     /* Maybe this should really use some standard subroutine
  30399.        whose definition is filename syntax dependent.  */
  30400. !   if (buf[strlen (buf) - 1] != '/'
  30401. ! #ifdef AMIGA
  30402. ! && buf[strlen (buf) -1] != ':'
  30403. ! #endif /*AMIGA  */
  30404. ! )
  30405.       strcat (buf, "/");
  30406.   #endif /* not VMS */
  30407.     current_buffer->directory = build_string (buf);
  30408. diff -rc --new-file /src/baseline/emacs-18.59/src/callproc.c emacs-18.59/src/callproc.c
  30409. *** /src/baseline/emacs-18.59/src/callproc.c    Sat Jul 11 23:26:01 1992
  30410. --- emacs-18.59/src/callproc.c    Sun Nov 22 10:13:32 1992
  30411. ***************
  30412. *** 124,134 ****
  30413.     CHECK_STRING (args[0], 0);
  30414.   
  30415.     if (nargs <= 1 || NULL (args[1]))
  30416. ! #ifdef VMS
  30417. !     args[1] = build_string ("NLA0:");
  30418. ! #else
  30419. !     args[1] = build_string ("/dev/null");
  30420. ! #endif /* not VMS */
  30421.     else
  30422.       args[1] = Fexpand_file_name (args[1], current_buffer->directory);
  30423.   
  30424. --- 124,130 ----
  30425.     CHECK_STRING (args[0], 0);
  30426.   
  30427.     if (nargs <= 1 || NULL (args[1]))
  30428. !     args[1] = build_string (PATH_NULL);
  30429.     else
  30430.       args[1] = Fexpand_file_name (args[1], current_buffer->directory);
  30431.   
  30432. ***************
  30433. *** 177,186 ****
  30434.   
  30435.     if (XTYPE (buffer) == Lisp_Int)
  30436.   #ifdef VMS
  30437. !     fd[1] = open ("NLA0:", 0), fd[0] = -1;
  30438.   #else
  30439. !     fd[1] = open ("/dev/null", O_WRONLY), fd[0] = -1;
  30440. ! #endif /* not VMS */
  30441.     else
  30442.       {
  30443.         pipe (fd);
  30444. --- 173,181 ----
  30445.   
  30446.     if (XTYPE (buffer) == Lisp_Int)
  30447.   #ifdef VMS
  30448. !     fd[1] = open (PATH_NULL, 0), fd[0] = -1;
  30449.   #else
  30450. !     fd[1] = open (PATH_NULL, O_WRONLY), fd[0] = -1;
  30451.     else
  30452.       {
  30453.         pipe (fd);
  30454. ***************
  30455. *** 193,198 ****
  30456. --- 188,209 ----
  30457.     synch_process_death = 0;
  30458.     synch_process_retcode = 0;
  30459.   
  30460. + #ifdef AMIGA
  30461. +   {
  30462. +     register unsigned char *temp;
  30463. +     if (XTYPE (current_buffer->directory) == Lisp_String)
  30464. +       {
  30465. +     register int i;
  30466. +     i = XSTRING (current_buffer->directory)->size;
  30467. +     temp = (unsigned char *) alloca (i + 1);
  30468. +     bcopy (XSTRING (current_buffer->directory)->data, temp, i);
  30469. +     temp[i] = 0;
  30470. +       }
  30471. +     pid = exec(new_argv[0], new_argv, filefd, fd[1], temp, amiga_process_stack_size);
  30472. +   }
  30473. + #else  
  30474.     {
  30475.       /* child_setup must clobber environ in systems with true vfork.
  30476.          Protect it from permanent change.  */
  30477. ***************
  30478. *** 230,235 ****
  30479. --- 241,247 ----
  30480.       close (filefd);
  30481.       close (fd1);
  30482.     }
  30483. + #endif /* not AMIGA */
  30484.   
  30485.     if (pid < 0)
  30486.       {
  30487. ***************
  30488. *** 302,308 ****
  30489.     register Lisp_Object filename_string, start, end, status;
  30490.     char tempfile[20];
  30491.   
  30492. !   strcpy (tempfile, "/tmp/emacsXXXXXX");
  30493.     mktemp (tempfile);
  30494.   
  30495.     filename_string = build_string (tempfile);
  30496. --- 314,320 ----
  30497.     register Lisp_Object filename_string, start, end, status;
  30498.     char tempfile[20];
  30499.   
  30500. !   strcpy (tempfile, PATH_TEMP);
  30501.     mktemp (tempfile);
  30502.   
  30503.     filename_string = build_string (tempfile);
  30504. ***************
  30505. *** 318,323 ****
  30506. --- 330,336 ----
  30507.     unlink (tempfile);
  30508.     return status;
  30509.   }
  30510. + #ifndef AMIGA
  30511.   
  30512.   /* This is the last thing run in a newly forked inferior
  30513.      either synchronous or asynchronous.
  30514. ***************
  30515. *** 425,430 ****
  30516. --- 438,444 ----
  30517.     write (1, new_argv[0], strlen (new_argv[0]));
  30518.     _exit (1);
  30519.   }
  30520. + #endif /* not AMIGA */
  30521.   
  30522.   init_callproc ()
  30523.   {
  30524. ***************
  30525. *** 437,442 ****
  30526. --- 451,465 ----
  30527.     Vexec_path = decode_env_path (0, PATH_EXEC);
  30528.     Vexec_directory = Ffile_name_as_directory (Fcar (Vexec_path));
  30529.     Vexec_path = nconc2 (decode_env_path ("PATH", ""), Vexec_path);
  30530. + #ifdef AMIGA
  30531. +   {
  30532. +     char *amiga_path(), *apath = amiga_path();
  30533. +     Vexec_path = nconc2 (decode_env_path (0, apath), Vexec_path);
  30534. +     Vexec_path = nconc2 (decode_env_path (0, "GNUEmacs:c"), Vexec_path);
  30535. +     free(apath);
  30536. +   }
  30537. + #endif  
  30538.   
  30539.     execdir = Fdirectory_file_name (Vexec_directory);
  30540.     if (access (XSTRING (execdir)->data, 0) < 0)
  30541. ***************
  30542. *** 447,453 ****
  30543.       }
  30544.   
  30545.     sh = (char *) egetenv ("SHELL");
  30546. !   Vshell_file_name = build_string (sh ? sh : "/bin/sh");
  30547.   
  30548.   #ifndef MAINTAIN_ENVIRONMENT
  30549.     /* The equivalent of this operation was done
  30550. --- 470,476 ----
  30551.       }
  30552.   
  30553.     sh = (char *) egetenv ("SHELL");
  30554. !   Vshell_file_name = build_string (sh ? sh : PATH_SHELL);
  30555.   
  30556.   #ifndef MAINTAIN_ENVIRONMENT
  30557.     /* The equivalent of this operation was done
  30558. diff -rc --new-file /src/baseline/emacs-18.59/src/dired.c emacs-18.59/src/dired.c
  30559. *** /src/baseline/emacs-18.59/src/dired.c    Mon Mar 23 00:16:41 1992
  30560. --- emacs-18.59/src/dired.c    Sun Nov 22 10:13:54 1992
  30561. ***************
  30562. *** 385,391 ****
  30563. --- 385,395 ----
  30564.   
  30565.     bcopy (XSTRING (dirname)->data, fullname, pos);
  30566.   #ifndef VMS
  30567. + #ifdef AMIGA
  30568. +   if ((fullname[pos - 1] != '/')&&(fullname[pos - 1] != ':'))
  30569. + #else
  30570.     if (fullname[pos - 1] != '/')
  30571. + #endif
  30572.       fullname[pos++] = '/';
  30573.   #endif
  30574.   
  30575. diff -rc --new-file /src/baseline/emacs-18.59/src/dispnew.c emacs-18.59/src/dispnew.c
  30576. *** /src/baseline/emacs-18.59/src/dispnew.c    Fri Jul 24 15:31:36 1992
  30577. --- emacs-18.59/src/dispnew.c    Sun Nov 22 10:14:00 1992
  30578. ***************
  30579. *** 674,684 ****
  30580. --- 674,700 ----
  30581.     int preempt_count = baud_rate / 2400 + 1;
  30582.     extern input_pending;
  30583.   
  30584. +   start_count(0);
  30585.     if (screen_height == 0) abort (); /* Some bug zeros some core */
  30586.   
  30587.     if (force_redisplay)
  30588.       force = 1;
  30589.   
  30590. + #ifdef FAST_DISPLAY
  30591. +   /* Don't compute for i/d line if just want cursor motion. */
  30592. +   /* Don't allow preemption, etc either */
  30593. +   for (i = 0; i < screen_height; i++)
  30594. +     if (new_screen->enable[i])
  30595. +       break;
  30596. +   if (i >= screen_height)
  30597. +     {
  30598. +       update_begin();
  30599. +       goto update_done;
  30600. +     }
  30601. + #endif
  30602.     if (!force)
  30603.       detect_input_pending ();
  30604.     if (!force
  30605. ***************
  30606. *** 695,704 ****
  30607.     if (!line_ins_del_ok)
  30608.       inhibit_hairy_id = 1;
  30609.   
  30610.     /* Don't compute for i/d line if just want cursor motion. */
  30611.     for (i = 0; i < screen_height; i++)
  30612. !     if (new_screen->enable)
  30613.         break;
  30614.   
  30615.     /* Try doing i/d line, if not yet inhibited.  */
  30616.     if (!inhibit_hairy_id && i < screen_height)
  30617. --- 711,722 ----
  30618.     if (!line_ins_del_ok)
  30619.       inhibit_hairy_id = 1;
  30620.   
  30621. + #ifndef FAST_DISPLAY
  30622.     /* Don't compute for i/d line if just want cursor motion. */
  30623.     for (i = 0; i < screen_height; i++)
  30624. !     if (new_screen->enable[i])
  30625.         break;
  30626. + #endif
  30627.   
  30628.     /* Try doing i/d line, if not yet inhibited.  */
  30629.     if (!inhibit_hairy_id && i < screen_height)
  30630. ***************
  30631. *** 742,747 ****
  30632. --- 760,768 ----
  30633.         update_line (i);
  30634.       }
  30635.       }
  30636. + #ifdef FAST_DISPLAY
  30637. + update_done:
  30638. + #endif
  30639.     pause = (i < screen_height - 1) ? i + 1 : 0;
  30640.   
  30641.     /* Now just clean up termcap drivers and set cursor, etc.  */
  30642. ***************
  30643. *** 781,786 ****
  30644. --- 802,808 ----
  30645.       }
  30646.   
  30647.     bzero (new_screen->enable, screen_height);
  30648. +   stop_count(0);
  30649.     return pause;
  30650.   }
  30651.   
  30652. ***************
  30653. *** 894,899 ****
  30654. --- 916,972 ----
  30655.     else
  30656.       reassert_line_highlight (new_screen->highlight[vpos], vpos);
  30657.   
  30658. + #ifdef FAST_DISPLAY
  30659. +   if (current_screen->enable[vpos])
  30660. +   {
  30661. +       obody = current_screen->contents[vpos];
  30662. +       olen = current_screen->used[vpos];
  30663. +   }
  30664. +   else olen = 0;
  30665. +   nbody = new_screen->contents[vpos];
  30666. +   nlen = new_screen->used[vpos];
  30667. +   
  30668. +   /* Pretend trailing spaces are not there at all,
  30669. +      unless for one reason or another we must write all spaces.  */
  30670. +   /* We know that the previous character byte contains 0.  */
  30671. +   if (! new_screen->highlight[vpos])
  30672. +   {
  30673. +       if (!must_write_spaces)
  30674. +       while (nbody[nlen - 1] == ' ')
  30675. +           nlen--;
  30676. +   }
  30677. +   else
  30678. +   {
  30679. +       /* For an inverse-video line, give it extra trailing spaces
  30680. +      all the way to the screen edge
  30681. +      so that the reverse video extends all the way across.  */
  30682. +       while (nlen < screen_width - 1)
  30683. +       nbody[nlen++] = ' ';
  30684. +   }
  30685. +   
  30686. +   while (olen > 0 && nlen > 0 && *obody == *nbody)
  30687. +   {
  30688. +       olen--; nlen--; obody++; nbody++;
  30689. +   }
  30690. +   if (olen > 0 || nlen > 0)
  30691. +       move_cursor (vpos, nbody - new_screen->contents[vpos]);
  30692. +   if (nlen > 0) output_chars (nbody, nlen);
  30693. +   
  30694. +   if (olen > nlen && new_screen->used[vpos] != screen_width)
  30695. +       clear_end_of_line(current_screen->used[vpos]);
  30696. +   /* Exchange contents between current_screen and new_screen.  */
  30697. +   temp = new_screen->contents[vpos];
  30698. +   new_screen->contents[vpos] = current_screen->contents[vpos];
  30699. +   current_screen->contents[vpos] = temp;
  30700. +   
  30701. +   /* One way or another, this will enable the line being updated.  */
  30702. +   current_screen->enable[vpos] = 1;
  30703. +   current_screen->used[vpos] = new_screen->used[vpos];
  30704. +   current_screen->highlight[vpos] = new_screen->highlight[vpos];
  30705. + #else /* not FAST_DISPLAY */
  30706.     /* ??? */
  30707.     if (! current_screen->enable[vpos])
  30708.       {
  30709. ***************
  30710. *** 1172,1177 ****
  30711. --- 1245,1251 ----
  30712.     temp = new_screen->contents[vpos];
  30713.     new_screen->contents[vpos] = current_screen->contents[vpos];
  30714.     current_screen->contents[vpos] = temp;
  30715. + #endif /* not FAST_DISPLAY */
  30716.   }
  30717.   
  30718.   count_blanks (str)
  30719. ***************
  30720. *** 1577,1584 ****
  30721. --- 1651,1668 ----
  30722.     cursor_in_echo_area = 0;
  30723.     terminal_type = (char *) 0;
  30724.   
  30725. + #ifdef AMIGA
  30726. +   amiga_term_open();
  30727. + #endif
  30728.     if (!inhibit_window_system)
  30729.       {
  30730. + #ifdef AMIGA
  30731. +       amiga_term_init();
  30732. +       /* Using Intuition V2.04 */
  30733. +       Vwindow_system = intern ("intuition");
  30734. +       Vwindow_system_version = make_number (2);
  30735. +       goto term_init_done;
  30736. + #endif /* AMIGA */
  30737.   #ifdef HAVE_X_WINDOWS
  30738.         extern char *alternate_display;
  30739.         char *disp = (char *) egetenv ("DISPLAY");
  30740. diff -rc --new-file /src/baseline/emacs-18.59/src/doc.c emacs-18.59/src/doc.c
  30741. *** /src/baseline/emacs-18.59/src/doc.c    Tue Jan  8 13:25:38 1991
  30742. --- emacs-18.59/src/doc.c    Sun Nov 22 10:14:02 1992
  30743. ***************
  30744. *** 21,26 ****
  30745. --- 21,27 ----
  30746.   #include "config.h"
  30747.   #include "lisp.h"
  30748.   #include "buffer.h"
  30749. + #include "paths.h"
  30750.   
  30751.   #include <sys/types.h>
  30752.   #include <sys/file.h>    /* Must be after sys/types.h for USG and BSD4_1*/
  30753. ***************
  30754. *** 188,194 ****
  30755.   
  30756.   #ifndef CANNOT_DUMP
  30757.     name = (char *) alloca (XSTRING (filename)->size + 8);
  30758. !   strcpy (name, "../etc/");
  30759.   #else /* CANNOT_DUMP */
  30760.     CHECK_STRING (Vexec_directory, 0);
  30761.     name = (char *) alloca (XSTRING (filename)->size +
  30762. --- 189,195 ----
  30763.   
  30764.   #ifndef CANNOT_DUMP
  30765.     name = (char *) alloca (XSTRING (filename)->size + 8);
  30766. !   strcpy (name, RELPATH_DOC);
  30767.   #else /* CANNOT_DUMP */
  30768.     CHECK_STRING (Vexec_directory, 0);
  30769.     name = (char *) alloca (XSTRING (filename)->size +
  30770. diff -rc --new-file /src/baseline/emacs-18.59/src/dostrip.c emacs-18.59/src/dostrip.c
  30771. *** /src/baseline/emacs-18.59/src/dostrip.c    Thu Jan  1 00:00:00 1970
  30772. --- emacs-18.59/src/dostrip.c    Sun Nov 22 10:14:02 1992
  30773. ***************
  30774. *** 0 ****
  30775. --- 1,23 ----
  30776. + #include <stdio.h>
  30777. + #define SIZE 2048
  30778. + main(int argc, char **argv)
  30779. + {
  30780. +     char buf[SIZE];
  30781. +     buf[SIZE - 1] = 0;
  30782. +     while (fgets(buf, SIZE - 1, stdin))
  30783. +     {
  30784. +     if (buf[0] != '#')
  30785. +     {
  30786. +         char *p = buf, *e;
  30787. +         while (*p && *p == ' ') p++;
  30788. +         e = p + strlen(p);
  30789. +         while (e > p && (e[-1] == ' ' || e[-1] == '\t' || e[-1] == '\n')) e--;
  30790. +         *e = '\0';
  30791. +         if (*p) puts(p);
  30792. +     }
  30793. +     }
  30794. + }
  30795. diff -rc --new-file /src/baseline/emacs-18.59/src/emacs.c emacs-18.59/src/emacs.c
  30796. *** /src/baseline/emacs-18.59/src/emacs.c    Fri Oct 16 23:51:00 1992
  30797. --- emacs-18.59/src/emacs.c    Sun Nov 22 10:14:08 1992
  30798. ***************
  30799. *** 78,83 ****
  30800. --- 78,87 ----
  30801.   #endif
  30802.   #endif
  30803.   
  30804. + #ifdef AMIGA_DUMP
  30805. + #define HAVE_SHM        /* Simplifies the ifdefs */
  30806. + #endif
  30807.   #ifndef O_RDWR
  30808.   #define O_RDWR 2
  30809.   #endif
  30810. ***************
  30811. *** 323,328 ****
  30812. --- 327,333 ----
  30813.     xargc = argc;
  30814.   #endif
  30815.   
  30816. + #ifndef AMIGA
  30817.   /* Handle the -t switch, which specifies filename to use as terminal */
  30818.     if (skip_args + 2 < argc && !strcmp (argv[skip_args + 1], "-t"))
  30819.       {
  30820. ***************
  30821. *** 336,341 ****
  30822. --- 341,347 ----
  30823.         inhibit_window_system = 1;    /* -t => -nw */
  30824.   #endif
  30825.       }
  30826. + #endif
  30827.   #ifdef HAVE_X_WINDOWS
  30828.   /* Handle the -d switch, which means use a different display for X */
  30829.     if (skip_args + 2 < argc && (!strcmp (argv[skip_args + 1], "-d") ||
  30830. ***************
  30831. *** 717,723 ****
  30832. --- 723,733 ----
  30833.   #ifdef VMS
  30834.   #define SEPCHAR ','
  30835.   #else
  30836. + #ifdef AMIGA            /* Can't use : on Amiga */
  30837. + #define SEPCHAR ','
  30838. + #else
  30839.   #define SEPCHAR ':'
  30840. + #endif
  30841.   #endif
  30842.   
  30843.   Lisp_Object
  30844. diff -rc --new-file /src/baseline/emacs-18.59/src/exec.c emacs-18.59/src/exec.c
  30845. *** /src/baseline/emacs-18.59/src/exec.c    Thu Jan  1 00:00:00 1970
  30846. --- emacs-18.59/src/exec.c    Sat Oct 24 12:59:54 1992
  30847. ***************
  30848. *** 0 ****
  30849. --- 1,138 ----
  30850. + #include "amiga.h"
  30851. + #include "processes.h"
  30852. + #include <amiga/ioctl.h>
  30853. + #include <exec/memory.h>
  30854. + #include <dos/dosextens.h>
  30855. + #include <dos/dostags.h>
  30856. + #include <string.h>
  30857. + int eexec(char *program, char **argv, int input, int output, int error,
  30858. +       char *dir, int stacksize)
  30859. + /* input = -1 -> inherit Input()
  30860. +    output = -1 -> inherit Output()
  30861. +    error = -1 -> inherit pr_CES
  30862. +    error = -2 -> stderr = stdout */
  30863. + {
  30864. +   int index, comsize, close_input, close_output, close_error;
  30865. +   char *combuf, *bp;
  30866. +   BPTR in, out, err, dirlock;
  30867. +   int _pseudo_close(int fd);
  30868. +   comsize = 256;
  30869. +   combuf = malloc(comsize);
  30870. +   if (input == -1)
  30871. +     {
  30872. +       in = Input();
  30873. +       close_input = FALSE;
  30874. +     }
  30875. +   else
  30876. +     {
  30877. +       if (ioctl(input, _AMIGA_GET_FH, &in) == -1) in = 0;
  30878. +       close_input = TRUE;
  30879. +       _pseudo_close(input);
  30880. +     }
  30881. +   if (output == -1)
  30882. +     {
  30883. +       out = Output();
  30884. +       close_output = FALSE;
  30885. +     }
  30886. +   else
  30887. +     {
  30888. +       if (ioctl(output, _AMIGA_GET_FH, &out) == -1) out = 0;
  30889. +       close_output = out != in;
  30890. +       _pseudo_close(output);
  30891. +     }
  30892. +   if (error == -1)
  30893. +     {
  30894. +       err = _us->pr_CES;
  30895. +       close_error = FALSE;
  30896. +     }
  30897. +   else if (error == -2)
  30898. +     {
  30899. +       err = out;
  30900. +       close_error = FALSE;
  30901. +     }
  30902. +   else
  30903. +     {
  30904. +       if (ioctl(error, _AMIGA_GET_FH, &err) == -1) err = 0;
  30905. +       close_error = err != out && err != in;
  30906. +       _pseudo_close(error);
  30907. +     }
  30908. +   /* pr_CES is not always defined */
  30909. +   if (in && out && (err || error == -1))
  30910. +     if (combuf)
  30911. +       {
  30912. +     bp = combuf;
  30913. +     for (index = 0; argv[index] != 0; index++)
  30914. +       {
  30915. +         /* Use program as argv[0]. This loses some information, but ... */
  30916. +         char *arg = index == 0 ? program : argv[index];
  30917. +         char *s;
  30918. +         int len;
  30919. +         len = 3;
  30920. +         s = arg;
  30921. +         while (*s)
  30922. +           {
  30923. +         len++;
  30924. +         if (*s == '*' || *s == '"' || *s == '\n') len++;
  30925. +         s++;
  30926. +           }
  30927. +         if (bp + len + 1 >= combuf + comsize)
  30928. +           {
  30929. +         char *newbuf;
  30930. +         comsize += comsize + len;
  30931. +         newbuf = realloc(combuf, comsize);
  30932. +         if (!newbuf) { errno = ENOMEM; goto error; }
  30933. +         bp = newbuf + (bp - combuf);
  30934. +         combuf = newbuf;
  30935. +           }
  30936. +         *bp++ = ' ';
  30937. +         *bp++ = '"';
  30938. +         s = arg;
  30939. +         while (*s)
  30940. +           {
  30941. +         if (*s == '"' || *s == '*') *bp++ = '*';
  30942. +         else if (*s == '\n') *bp++ = '+';
  30943. +         *bp++ = *s++;
  30944. +           }
  30945. +         *bp++ = '"';
  30946. +       }
  30947. +     *bp = '\0';
  30948. +     if (dir) dirlock = Lock(dir, SHARED_LOCK);
  30949. +     else dirlock = 0;
  30950. +     if (dirlock || !dir)
  30951. +       {
  30952. +         int pid = _start_process(combuf, in, close_input, out, close_output,
  30953. +                      err, close_error, dirlock, stacksize);
  30954. +         if (pid != -1)
  30955. +           {
  30956. +         free(combuf);
  30957. +         return pid;
  30958. +           }
  30959. +       }
  30960. +     else errno = convert_oserr(IoErr());
  30961. +     if (dirlock) UnLock(dirlock);
  30962. +       }
  30963. +     else errno = ENOMEM;
  30964. +  error:
  30965. +   if (in && close_input) Close(in);
  30966. +   if (out && close_output) Close(out);
  30967. +   if (err && close_error) Close(err);
  30968. +   if (combuf) free(combuf);
  30969. +   return -1;
  30970. + }
  30971. + int exec(char *program, char **argv, int input, int output, 
  30972. +       char *dir, int stacksize)
  30973. + {
  30974. +   return eexec(program, argv, input, output, -1, dir, stacksize);
  30975. + }
  30976. diff -rc --new-file /src/baseline/emacs-18.59/src/fileio.c emacs-18.59/src/fileio.c
  30977. *** /src/baseline/emacs-18.59/src/fileio.c    Tue Oct  6 18:02:20 1992
  30978. --- emacs-18.59/src/fileio.c    Sun Nov 22 10:14:24 1992
  30979. ***************
  30980. *** 147,152 ****
  30981. --- 147,155 ----
  30982.     p = beg + XSTRING (file)->size;
  30983.   
  30984.     while (p != beg && p[-1] != '/'
  30985. + #ifdef    AMIGA
  30986. +          && p[-1] != ':'
  30987. + #endif    /* AMIGA */
  30988.   #ifdef VMS
  30989.        && p[-1] != ':' && p[-1] != ']' && p[-1] != '>'
  30990.   #endif /* VMS */
  30991. ***************
  30992. *** 174,179 ****
  30993. --- 177,185 ----
  30994.     end = p = beg + XSTRING (file)->size;
  30995.   
  30996.     while (p != beg && p[-1] != '/'
  30997. + #ifdef    AMIGA
  30998. +          && p[-1] != ':'
  30999. + #endif    /* AMIGA */
  31000.   #ifdef VMS
  31001.        && p[-1] != ':' && p[-1] != ']' && p[-1] != '>'
  31002.   #endif /* VMS */
  31003. ***************
  31004. *** 248,256 ****
  31005. --- 254,268 ----
  31006.         out[size] = '\0';
  31007.       }
  31008.   #else /* not VMS */
  31009. + #ifdef    AMIGA
  31010. +   /* AmigaDOS syntax, append slash if the last char isn't a ':' or '/' */
  31011. +   if (out[size] != '/' && out[size] != ':' && size != 0)
  31012. +     strcat (out, "/");
  31013. + #else    /* not AMIGA */
  31014.     /* For Unix syntax, Append a slash if necessary */
  31015.     if (out[size] != '/')
  31016.       strcat (out, "/");
  31017. + #endif /* not AMIGA */
  31018.   #endif /* not VMS */
  31019.     return out;
  31020.   }
  31021. ***************
  31022. *** 464,469 ****
  31023. --- 476,585 ----
  31024.        (name, defalt)
  31025.        Lisp_Object name, defalt;
  31026.   {
  31027. + #ifdef AMIGA
  31028. +   unsigned char *nm, *tilde, *newdir, *colon, *t_pos, *target;
  31029. +   CHECK_STRING (name, 0);
  31030. +   nm = XSTRING (name)->data;
  31031. +   /* Find base directory */
  31032. +   if (NULL (defalt))
  31033. +       defalt = current_buffer->directory;
  31034. +   CHECK_STRING (defalt, 1);
  31035. +   newdir = XSTRING (defalt)->data;
  31036. +   /* Concat newdir w/ nm and canonicalize */
  31037. +   /* newdir always contains at least the device name.
  31038. +      It is assumed canonical */
  31039. +   target = (unsigned char *)alloca(strlen(nm) + strlen(newdir) + 2);
  31040. +   file_name_as_directory (target, newdir);
  31041. +   t_pos = target + strlen(target);
  31042. +   while (*nm)
  31043. +   {
  31044. +       unsigned char *comp_end = nm;
  31045. +       int comp_len;
  31046. +       /* Find next component of path (everything upto the next /) */
  31047. +       do comp_end++; while (comp_end[0] && comp_end[-1] != '/' && comp_end[-1] != ':');
  31048. +       comp_len = comp_end - nm;
  31049. +       if (comp_len == 1 && nm[0] == '/' ||
  31050. +       nm[0] == '.' && nm[1] == '.' &&
  31051. +       (comp_len == 2 || comp_len == 3 && nm[2] == '/'))
  31052. +       {
  31053. +       /* Previous directory */
  31054. +       if (t_pos > target && t_pos[-1] != ':')
  31055. +       {
  31056. +           t_pos--; /* Back up over / */
  31057. +           while (t_pos > target &&
  31058. +              t_pos[-1] != ':' && t_pos[-1] != '/') t_pos--;
  31059. +       }
  31060. +       }
  31061. +       else if (comp_len == 2 && nm[0] == '.' && nm[1] == '/' ||
  31062. +            comp_len == 1 && nm[0] == '.') ; /* Ignore . */
  31063. +       else if (nm[0] == ':') /* Just keep disk name */
  31064. +       {
  31065. +       char *new_pos;
  31066. +       *t_pos = 0; /* Limit search for : */
  31067. +       t_pos = index(target, ':');
  31068. +       if (t_pos) t_pos++;
  31069. +       else t_pos = target;
  31070. +       }
  31071. +       else if (nm[0] == '~' || index(nm, ':'))
  31072. +       {
  31073. +       char *exp_name;
  31074. +       if (nm[0] == '~')
  31075. +           if (nm[1] == '/' || nm[1] == 0) /* Home directory */
  31076. +           {
  31077. +           newdir = (unsigned char *) egetenv ("HOME");
  31078. +           if (!newdir) newdir = (unsigned char *) "s:";
  31079. +           }
  31080. +           else
  31081. +           {
  31082. +           /* Handle ~ followed by user name.  */
  31083. +           char lastc = nm[comp_len - 1];
  31084. +           int len = comp_len - 1;
  31085. +           if (lastc == ':' || lastc == '/') len--;
  31086. +           /* ~name becomes name: */
  31087. +           newdir = (unsigned char *) alloca (len + 2);
  31088. +           bcopy((char *) nm + 1, newdir, len);
  31089. +           newdir[len] = ':';
  31090. +           newdir[len + 1] = 0;
  31091. +           }
  31092. +       else /* we have name: */
  31093. +       {
  31094. +           newdir = (char *)alloca(comp_len + 1);
  31095. +           bcopy(nm, newdir, comp_len);
  31096. +           newdir[comp_len] = 0;
  31097. +       }
  31098. +       exp_name = (char *)alloca(1024);
  31099. +       if (expand_path(newdir, exp_name, 1024))
  31100. +       {
  31101. +           char *colon = strchr(exp_name, ':');
  31102. +           /* Detect paths with multiple colons (eg from PATH:) and
  31103. +          leave them alone. They create confusion. */
  31104. +           if (!(colon && strchr(colon + 1, ':'))) newdir = exp_name;
  31105. +       }
  31106. +       target = (unsigned char *)alloca(strlen(nm) + strlen(newdir) + 2);
  31107. +       file_name_as_directory (target, newdir);
  31108. +       t_pos = target + strlen(target);
  31109. +       }
  31110. +       else /* Copy component */
  31111. +       {
  31112. +       bcopy(nm, t_pos, comp_len);
  31113. +       t_pos += comp_len;
  31114. +       }
  31115. +       nm = comp_end;
  31116. +   }
  31117. +   return make_string (target, t_pos - target);
  31118. + #else /* not AMIGA */
  31119.     unsigned char *nm;
  31120.     
  31121.     register unsigned char *newdir, *p, *o;
  31122. ***************
  31123. *** 795,800 ****
  31124. --- 911,917 ----
  31125.       }
  31126.   
  31127.     return make_string (target, o - target);
  31128. + #endif /* not AMIGA */
  31129.   }
  31130.   
  31131.   DEFUN ("substitute-in-file-name", Fsubstitute_in_file_name,
  31132. ***************
  31133. *** 825,830 ****
  31134. --- 942,964 ----
  31135.   
  31136.     for (p = nm; p != endp; p++)
  31137.       {
  31138. + #ifdef AMIGA
  31139. +       if (p[0] == '~' && p != nm && p[-1] == '/')
  31140. +     {
  31141. +         nm = p;
  31142. +         substituted = 1;
  31143. +     }
  31144. +       else if (p[0] == ':')
  31145. +     {
  31146. +           char *p2 = p;
  31147. +       while (p2 > nm && p2[-1] != ':' && p2[-1] != '/') p2--;
  31148. +       if (p2 != nm)
  31149. +         {
  31150. +           nm = p2;
  31151. +           substituted = 1;
  31152. +         }
  31153. +     }
  31154. + #else /* not AMIGA */
  31155.         if ((p[0] == '~' ||
  31156.   #ifdef APOLLO
  31157.          /* // at start of file name is meaningful in Apollo system */
  31158. ***************
  31159. *** 845,850 ****
  31160. --- 979,985 ----
  31161.         nm = p;
  31162.         substituted = 1;
  31163.       }
  31164. + #endif /* not AMIGA */
  31165.       }
  31166.   
  31167.   #ifdef VMS
  31168. ***************
  31169. *** 1353,1358 ****
  31170. --- 1488,1500 ----
  31171.   
  31172.     CHECK_STRING (filename, 0);
  31173.     ptr = XSTRING (filename)->data;
  31174. + #ifdef    AMIGA
  31175. +   /* An absolute filename has a non-leading ':' in it */
  31176. +   if (*ptr != ':')
  31177. +       while (*ptr)
  31178. +       if (*ptr++ == ':') return Qt;
  31179. +   return Qnil;
  31180. + #else    /* not AMIGA */
  31181.     if (*ptr == '/' || *ptr == '~'
  31182.   #ifdef VMS
  31183.   /* ??? This criterion is probably wrong for '<'.  */
  31184. ***************
  31185. *** 1364,1369 ****
  31186. --- 1506,1512 ----
  31187.       return Qt;
  31188.     else
  31189.       return Qnil;
  31190. + #endif /* not AMIGA */
  31191.   }
  31192.   
  31193.   DEFUN ("file-exists-p", Ffile_exists_p, Sfile_exists_p, 1, 1, 0,
  31194. diff -rc --new-file /src/baseline/emacs-18.59/src/firstfile.c emacs-18.59/src/firstfile.c
  31195. *** /src/baseline/emacs-18.59/src/firstfile.c    Thu Jan  1 00:00:00 1970
  31196. --- emacs-18.59/src/firstfile.c    Sun Nov 22 10:14:28 1992
  31197. ***************
  31198. *** 0 ****
  31199. --- 1,4 ----
  31200. + int first_data = 1;
  31201. + int first_bss;
  31202. + void first_function() { }
  31203. diff -rc --new-file /src/baseline/emacs-18.59/src/indent.c emacs-18.59/src/indent.c
  31204. *** /src/baseline/emacs-18.59/src/indent.c    Sat Apr 18 12:01:07 1992
  31205. --- emacs-18.59/src/indent.c    Sun Nov 22 10:14:38 1992
  31206. ***************
  31207. *** 35,40 ****
  31208. --- 35,45 ----
  31209.   #define min(a, b) ((a) < (b) ? (a) : (b))
  31210.   #define max(a, b) ((a) > (b) ? (a) : (b))
  31211.   
  31212. + #ifdef EIGHT_BIT
  31213. + /* Visible characters */
  31214. + extern char visible[];
  31215. + #endif
  31216.   /* These three values memoize the current column to avoid recalculation */
  31217.   /* Some things in set last_known_column_point to -1
  31218.     to mark the memoized value as invalid */
  31219. ***************
  31220. *** 115,121 ****
  31221. --- 120,130 ----
  31222.       }
  31223.   
  31224.         c = *--ptr;
  31225. + #ifdef EIGHT_BIT
  31226. +       if (visible[c])
  31227. + #else
  31228.         if (c >= 040 && c < 0177)
  31229. + #endif
  31230.       {
  31231.         col++;
  31232.       }
  31233. ***************
  31234. *** 326,332 ****
  31235. --- 335,345 ----
  31236.       }
  31237.         else if (ctl_arrow && (c < 040 || c == 0177))
  31238.           col++;
  31239. + #ifdef EIGHT_BIT
  31240. +       else if (!visible[c])
  31241. + #else
  31242.         else if (c < 040 || c >= 0177)
  31243. + #endif
  31244.           col += 3;
  31245.       }
  31246.   
  31247. ***************
  31248. *** 373,381 ****
  31249.         prev_hpos = hpos;
  31250.   
  31251.         c = FETCH_CHAR (pos);
  31252.         if (c >= 040 && c < 0177)
  31253. !     hpos++;
  31254. !       else if (c == '\t')
  31255.       {
  31256.         hpos += tab_width - ((hpos + tab_offset + hscroll - (hscroll > 0)
  31257.                   /* Add tab_width here to make sure positive.
  31258. --- 386,442 ----
  31259.         prev_hpos = hpos;
  31260.   
  31261.         c = FETCH_CHAR (pos);
  31262. + #ifdef EIGHT_BIT
  31263. +       if (visible[c])
  31264. + #else
  31265.         if (c >= 040 && c < 0177)
  31266. ! #endif
  31267. !         {
  31268. !       unsigned char *p;
  31269. !       int gap_pos;
  31270. !       int maxhpos;
  31271. !       if (vpos == tovpos)
  31272. !         {
  31273. !           maxhpos = tohpos;
  31274. !           if (maxhpos > width) maxhpos = width;
  31275. !         }
  31276. !       else maxhpos = width;
  31277. !       if (pos < GPT)
  31278. !         {
  31279. !           gap_pos = GPT;
  31280. !           p = BEG_ADDR + pos;
  31281. !         }
  31282. !       else
  31283. !         {
  31284. !           gap_pos = -1;
  31285. !           p = GAP_SIZE + BEG_ADDR + pos;
  31286. !         }
  31287. !       do
  31288. !         {
  31289. !           hpos++;
  31290. !           if (hpos >= maxhpos)
  31291. !           {
  31292. !           prev_hpos = hpos - 1;
  31293. !           if (hpos >= width) goto check_hpos;
  31294. !           /* We've reached the target pos */
  31295. !           pos++;
  31296. !           goto done;
  31297. !           }
  31298. !           pos++;
  31299. !           if (pos >= to)
  31300. !             {
  31301. !           prev_hpos = hpos - 1;
  31302. !           goto done;
  31303. !             }
  31304. !           if (gap_pos == pos) p += GAP_SIZE;
  31305. !           c = *p++;
  31306. !         }
  31307. !       while (visible[c]);
  31308. !       prev_hpos = hpos;
  31309. !         }
  31310. !       if (c == '\t')
  31311.       {
  31312.         hpos += tab_width - ((hpos + tab_offset + hscroll - (hscroll > 0)
  31313.                   /* Add tab_width here to make sure positive.
  31314. ***************
  31315. *** 433,438 ****
  31316. --- 494,500 ----
  31317.         else
  31318.       hpos += (ctl_arrow && c < 0200) ? 2 : 4;
  31319.   
  31320. + check_hpos:
  31321.         /* Handle right margin.  */
  31322.         if (hpos >= width
  31323.         && (hpos > width
  31324. ***************
  31325. *** 462,467 ****
  31326. --- 524,530 ----
  31327.   
  31328.       }
  31329.       }
  31330. +   done:
  31331.   
  31332.     val_compute_motion.bufpos = pos;
  31333.     val_compute_motion.hpos = hpos;
  31334. diff -rc --new-file /src/baseline/emacs-18.59/src/keyboard.c emacs-18.59/src/keyboard.c
  31335. *** /src/baseline/emacs-18.59/src/keyboard.c    Sun May 17 02:57:15 1992
  31336. --- emacs-18.59/src/keyboard.c    Sun Nov 22 10:14:48 1992
  31337. ***************
  31338. *** 1313,1319 ****
  31339. --- 1313,1325 ----
  31340.   #endif
  31341.       fcntl (fileno (stdin), F_SETFL, 0);
  31342.   #else /* not USG */
  31343. + #ifdef    AMIGA    /* This is where the input work finally gets done */
  31344. +   /* Note, The nread != 0 case isn't handled as it doesn't arise on the Amiga.
  31345. +      (Look carefully at calls to read_avail_input) */
  31346. +   nread = read(0, buf, sizeof buf);
  31347. + #else  /* not AMIGA */
  31348.     you lose
  31349. + #endif /* not AMIGA */
  31350.   #endif /* not USG */
  31351.   #endif /* no FIONREAD */
  31352.   
  31353. diff -rc --new-file /src/baseline/emacs-18.59/src/keymap.c emacs-18.59/src/keymap.c
  31354. *** /src/baseline/emacs-18.59/src/keymap.c    Sat Jul 27 13:43:27 1991
  31355. --- emacs-18.59/src/keymap.c    Sun Nov 22 10:14:52 1992
  31356. ***************
  31357. *** 29,34 ****
  31358. --- 29,38 ----
  31359.   
  31360.   /* Actually allocate storage for these variables */
  31361.   
  31362. + #ifdef AMIGA
  31363. + #define HAVE_X_WINDOWS        /* We want the mouse map too */
  31364. + #endif
  31365.   #ifdef HAVE_X_WINDOWS
  31366.   Lisp_Object MouseMap;        /* Keymap for mouse commands */
  31367.   #endif /* HAVE_X_WINDOWS */
  31368. diff -rc --new-file /src/baseline/emacs-18.59/src/lastfile.c emacs-18.59/src/lastfile.c
  31369. *** /src/baseline/emacs-18.59/src/lastfile.c    Sat Mar 30 19:05:55 1991
  31370. --- emacs-18.59/src/lastfile.c    Sat Dec  5 18:16:44 1992
  31371. ***************
  31372. *** 35,43 ****
  31373. --- 35,57 ----
  31374.    coming from libraries.
  31375.   */
  31376.   
  31377. + #ifdef AMIGA
  31378. + /* I need to find the end of initialised and unitialised data, as well as of
  31379. +    executable code.
  31380. + */
  31381. + int last_data = 1;
  31382. + int last_bss;
  31383. + void last_function() { }
  31384. + /* Some data that shouldn't be dumped */
  31385. + #include "amiga_data.c" 
  31386. + #else /* not AMIGA */
  31387.   #ifdef VMS
  31388.   /* Prevent the file from being totally empty.  */
  31389.   static dummy () {}
  31390.   #endif
  31391.   
  31392.   char my_edata = 0;
  31393. + #endif /* not AMIGA */
  31394. diff -rc --new-file /src/baseline/emacs-18.59/src/lisp.h emacs-18.59/src/lisp.h
  31395. *** /src/baseline/emacs-18.59/src/lisp.h    Thu Mar  5 19:11:31 1992
  31396. --- emacs-18.59/src/lisp.h    Sun Nov 22 10:14:58 1992
  31397. ***************
  31398. *** 287,293 ****
  31399.     (XUINT (a) | (XUINT (a) > PURESIZE ? DATA_SEG_BITS : PURE_SEG_BITS))
  31400.   #else /* not HAVE_SHM */
  31401.   #ifdef DATA_SEG_BITS
  31402. ! /* This case is used for the rt-pc.
  31403.      In the diffs I was given, it checked for ptr = 0
  31404.      and did not adjust it in that case.
  31405.      But I don't think that zero should ever be found
  31406. --- 287,293 ----
  31407.     (XUINT (a) | (XUINT (a) > PURESIZE ? DATA_SEG_BITS : PURE_SEG_BITS))
  31408.   #else /* not HAVE_SHM */
  31409.   #ifdef DATA_SEG_BITS
  31410. ! /* This case is used for the rt-pc and the Amiga.
  31411.      In the diffs I was given, it checked for ptr = 0
  31412.      and did not adjust it in that case.
  31413.      But I don't think that zero should ever be found
  31414. ***************
  31415. *** 520,525 ****
  31416. --- 520,532 ----
  31417.     { if (XTYPE ((x)) == Lisp_Marker) XFASTINT (x) = marker_position (x); \
  31418.       else if (XTYPE ((x)) != Lisp_Int) x = wrong_type_argument (Qinteger_or_marker_p, (x)); }
  31419.   
  31420. + #ifdef AMIGA_DUMP
  31421. + #define CHECK_IMPURE(obj) \
  31422. +   { extern int *pure, puresize; \
  31423. +     if ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + puresize) \
  31424. +     && (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure) \
  31425. +       pure_write_error (); }
  31426. + #else /* not AMIGA_DUMP */
  31427.   #ifdef VIRT_ADDR_VARIES
  31428.   
  31429.   /* For machines like APOLLO where text and data can go anywhere
  31430. ***************
  31431. *** 529,535 ****
  31432.       if ((PNTR_COMPARISON_TYPE) XPNTR (obj) < (PNTR_COMPARISON_TYPE) ((char *) pure + PURESIZE) \
  31433.       && (PNTR_COMPARISON_TYPE) XPNTR (obj) >= (PNTR_COMPARISON_TYPE) pure) \
  31434.         pure_write_error (); }
  31435.   #else /* not VIRT_ADDR_VARIES */
  31436.   #ifdef PNTR_COMPARISON_TYPE
  31437.   
  31438. --- 536,541 ----
  31439. ***************
  31440. *** 548,553 ****
  31441. --- 554,560 ----
  31442.   
  31443.   #endif /* PNTR_COMPARISON_TYPE */
  31444.   #endif /* VIRT_ADDRESS_VARIES */
  31445. + #endif /* not AMIGA_DUMP */
  31446.   
  31447.   /* Cast pointers to this type to compare them.  Some machines want int.  */
  31448.   #ifndef PNTR_COMPARISON_TYPE
  31449. diff -rc --new-file /src/baseline/emacs-18.59/src/lread.c emacs-18.59/src/lread.c
  31450. *** /src/baseline/emacs-18.59/src/lread.c    Mon Mar 23 00:18:17 1992
  31451. --- emacs-18.59/src/lread.c    Sun Nov 22 10:15:02 1992
  31452. ***************
  31453. *** 240,250 ****
  31454. --- 240,254 ----
  31455.        Lisp_Object pathname;
  31456.   {
  31457.     register unsigned char *s = XSTRING (pathname)->data;
  31458. + #ifdef AMIGA
  31459. +   return (*s && index(s + 1, ':')); /* Non-leading : */
  31460. + #else
  31461.     return (*s == '~' || *s == '/'
  31462.   #ifdef VMS
  31463.         || index (s, ':')
  31464.   #endif /* VMS */
  31465.         );
  31466. + #endif /* not AMIGA */
  31467.   }
  31468.   
  31469.   /* Search for a file whose name is STR, looking in directories
  31470. ***************
  31471. *** 559,565 ****
  31472.   }
  31473.   
  31474.   static int read_buffer_size;
  31475. ! static char *read_buffer;
  31476.   
  31477.   static Lisp_Object
  31478.   read1 (readcharfun)
  31479. --- 563,569 ----
  31480.   }
  31481.   
  31482.   static int read_buffer_size;
  31483. ! char *read_buffer;
  31484.   
  31485.   static Lisp_Object
  31486.   read1 (readcharfun)
  31487. diff -rc --new-file /src/baseline/emacs-18.59/src/m-amiga.h emacs-18.59/src/m-amiga.h
  31488. *** /src/baseline/emacs-18.59/src/m-amiga.h    Thu Jan  1 00:00:00 1970
  31489. --- emacs-18.59/src/m-amiga.h    Sun Nov 22 10:20:16 1992
  31490. ***************
  31491. *** 0 ****
  31492. --- 1,129 ----
  31493. + /* m- file for GNU Emacs running on AmigaDOS 2.04, SAS C compiler 5.10b
  31494. +    Copyright (C) 1985, 1986 Free Software Foundation, Inc.
  31495. + This file is part of GNU Emacs.
  31496. + GNU Emacs is distributed in the hope that it will be useful,
  31497. + but WITHOUT ANY WARRANTY.  No author or distributor
  31498. + accepts responsibility to anyone for the consequences of using it
  31499. + or for whether it serves any particular purpose or works at all,
  31500. + unless he says so in writing.  Refer to the GNU Emacs General Public
  31501. + License for full details.
  31502. + Everyone is granted permission to copy, modify and redistribute
  31503. + GNU Emacs, but only under the conditions described in the
  31504. + GNU Emacs General Public License.   A copy of this license is
  31505. + supposed to have been given to you along with GNU Emacs so you
  31506. + can know your rights and responsibilities.  It should be in a
  31507. + file named COPYING.  Among other things, the copyright notice
  31508. + and this notice must be preserved on all copies.  */
  31509. + /* The following three symbols give information on
  31510. +  the size of various data types.  */
  31511. + /* lisp.h doesn't make any concessions for INTBITS = 16 and
  31512. +    NO_UNION_TYPE (use int as lisp object) defined.  The following is
  31513. +    assuming that the Manx 32 bit int. math package is faster than
  31514. +    bitfield implementation, overall.  If you want to use INTBITS = 16,
  31515. +    you *cannot* define NO_UNION_TYPE.    */
  31516. + #define SHORTBITS 16        /* Number of bits in a short */
  31517. + #define INTBITS 32        /* Number of bits in an int */
  31518. + #define LONGBITS 32        /* Number of bits in a long */
  31519. + #define VALBITS 26        /* Number of bits in an int or pointer offset */
  31520. + #define GCTYPEBITS 5        /* Number of bits in a type. */
  31521. + /* Define BIG_ENDIAN iff lowest-numbered byte in a word
  31522. +    is the most significant byte.  */
  31523. + #define BIG_ENDIAN
  31524. + /* Define NO_ARG_ARRAY if you cannot take the address of the first of a
  31525. +  * group of arguments and treat it as an array of the arguments.  */
  31526. + /* #define NO_ARG_ARRAY */
  31527. + /* Define WORD_MACHINE if addresses and such have
  31528. +  * to be corrected before they can be used as byte counts.  */
  31529. + #define WORD_MACHINE
  31530. + /* Define how to take a char and sign-extend into an int.
  31531. +    On machines where char is signed, this is a no-op.  */
  31532. + #define SIGN_EXTEND_CHAR(c) (c)
  31533. + /* Now define a symbol for the cpu type, if your compiler
  31534. +    does not define it automatically:
  31535. +    Ones defined so far include vax, m68000, ns16000, pyramid,
  31536. +    orion, tahoe, APOLLO and many others */
  31537. + #ifndef    m68000
  31538. + #define m68000
  31539. + #endif
  31540. + /* Use type int rather than a union, to represent Lisp_Object */
  31541. + /* This is desirable for most machines.  */
  31542. + #define NO_UNION_TYPE
  31543. + /* Use a struct rather than an int. */
  31544. + /* Define EXPLICIT_SIGN_EXTEND if XINT must explicitly sign-extend
  31545. +    the 24-bit bit field into an int.  In other words, if bit fields
  31546. +    are always unsigned.
  31547. +    If you use NO_UNION_TYPE, this flag does not matter.  */
  31548. + #define EXPLICIT_SIGN_EXTEND
  31549. + /* We don't have /dev/kmem, so LOAD_AVE_TYPE and LOAD_AVE_CVT are
  31550. +    not defined. */
  31551. + /* Define CANNOT_DUMP on machines where unexec does not work.
  31552. +    Then the function dump-emacs will not be defined
  31553. +    and temacs will do (load "loadup") automatically unless told otherwise.  */
  31554. + /* #define CANNOT_DUMP */
  31555. + /* Define VIRT_ADDR_VARIES if the virtual addresses of
  31556. +    pure and impure space as loaded can vary, and even their
  31557. +    relative order cannot be relied on.
  31558. +    Otherwise Emacs assumes that text space precedes data space,
  31559. +    numerically.  */
  31560. + /* #define VIRT_ADDR_VARIES */
  31561. + /* I now rely on AMIGA_DUMP to make appropriate patches in the source */
  31562. + /* Define C_ALLOCA if this machine does not support a true alloca
  31563. +    and the one written in C should be used instead.
  31564. +    Define HAVE_ALLOCA to say that the system provides a properly
  31565. +    working alloca function and it should be used.
  31566. +    Define neither one if an assembler-language alloca
  31567. +    in the file alloca.s should be used.  */
  31568. + #define C_ALLOCA
  31569. + /* #define HAVE_ALLOCA */
  31570. + /* Define STACK_DIRECTION for alloca.c */
  31571. + #define    STACK_DIRECTION    -1    /* Grows downward */
  31572. + /* Define NO_REMAP if memory segmentation makes it not work well
  31573. +    to change the boundary between the text section and data section
  31574. +    when Emacs is dumped.  If you define this, the preloaded Lisp
  31575. +    code will not be sharable; but that's better than failing completely.  */
  31576. + #define NO_REMAP
  31577. + /* Set high (32 - VALBITS) = 6 bits of every pointer to the same as those of
  31578. +    &pure[0].
  31579. + */
  31580. + #ifdef emacs
  31581. + extern long far DataSegBits;
  31582. + #endif
  31583. + #define DATA_SEG_BITS DataSegBits
  31584. diff -rc --new-file /src/baseline/emacs-18.59/src/paths.h-dist emacs-18.59/src/paths.h-dist
  31585. *** /src/baseline/emacs-18.59/src/paths.h-dist    Tue Sep 11 20:51:18 1990
  31586. --- emacs-18.59/src/paths.h-dist    Sun Nov 22 10:16:24 1992
  31587. ***************
  31588. *** 17,19 ****
  31589. --- 17,35 ----
  31590.   /* the name of the file !!!SuperLock!!! in the directory
  31591.    specified by PATH_LOCK.  Yes, this is redundant.  */
  31592.   #define PATH_SUPERLOCK "/usr/local/emacs/lock/!!!SuperLock!!!"
  31593. + /* The path to the file containing the termcap descriptions */
  31594. + #define PATH_TERMCAP "/etc/termcap"
  31595. + /* The relative path (while dumping) to the directory containing 
  31596. +    the DOC file */
  31597. + #define RELPATH_DOC "../etc/"
  31598. + /* The path for a /dev/null-like device */
  31599. + #define PATH_NULL "/dev/null"
  31600. + /* Path for temporary files (for call-process-region) */
  31601. + #define PATH_TEMP "/tmp/emacsXXXXXX"
  31602. + /* Path to the shell (the one in shell-file-name) */
  31603. + #define PATH_SHELL "/bin/sh"
  31604. diff -rc --new-file /src/baseline/emacs-18.59/src/process.c emacs-18.59/src/process.c
  31605. *** /src/baseline/emacs-18.59/src/process.c    Sun Oct 25 00:42:04 1992
  31606. --- emacs-18.59/src/process.c    Sun Nov 22 10:16:38 1992
  31607. ***************
  31608. *** 1203,1208 ****
  31609. --- 1203,1225 ----
  31610.        If fork fails, remove_process will clear the bit.  */
  31611.     FD_SET (inchannel, &input_wait_mask);
  31612.   
  31613. + #ifdef AMIGA
  31614. +   {
  31615. +     register unsigned char *temp;
  31616. +     if (XTYPE (current_buffer->directory) == Lisp_String)
  31617. +       {
  31618. +     register int i;
  31619. +     i = XSTRING (current_buffer->directory)->size;
  31620. +     temp = (unsigned char *) alloca (i + 1);
  31621. +     bcopy (XSTRING (current_buffer->directory)->data, temp, i);
  31622. +     temp[i] = 0;
  31623. +       }
  31624. +     pid = exec(new_argv[0], new_argv, forkin, forkout, temp,
  31625. +            amiga_process_stack_size);
  31626. +   }
  31627. + #else /* not AMIGA */
  31628.     {
  31629.       /* child_setup must clobber environ on systems with true vfork.
  31630.          Protect it from permanent change.  */
  31631. ***************
  31632. *** 1305,1310 ****
  31633. --- 1322,1328 ----
  31634.         }
  31635.       environ = save_environ;
  31636.     }
  31637. + #endif /* not AMIGA */
  31638.   
  31639.     if (pid < 0)
  31640.       {
  31641. ***************
  31642. *** 1314,1319 ****
  31643. --- 1332,1338 ----
  31644.   
  31645.     XFASTINT (XPROCESS (process)->pid) = pid;
  31646.   
  31647. + #ifndef AMIGA
  31648.     /* If the subfork execv fails, and it exits,
  31649.        this close hangs.  I don't know why.
  31650.        So have an interrupt jar it loose.  */
  31651. ***************
  31652. *** 1326,1331 ****
  31653. --- 1345,1351 ----
  31654.     start_polling ();
  31655.     if (forkin != forkout && forkout >= 0)
  31656.       close (forkout);
  31657. + #endif
  31658.   
  31659.   #ifdef SIGCHLD
  31660.   #ifdef BSD4_1
  31661. diff -rc --new-file /src/baseline/emacs-18.59/src/s-amiga.h emacs-18.59/src/s-amiga.h
  31662. *** /src/baseline/emacs-18.59/src/s-amiga.h    Thu Jan  1 00:00:00 1970
  31663. --- emacs-18.59/src/s-amiga.h    Sat Oct  2 15:32:32 1993
  31664. ***************
  31665. *** 0 ****
  31666. --- 1,215 ----
  31667. + /* file for GNU Emacs running on AmigaDOS 2.04, SAS C compiler 5.10b
  31668. +    Copyright (C) 1985, 1986 Free Software Foundation, Inc.
  31669. + This file is part of GNU Emacs.
  31670. + GNU Emacs is distributed in the hope that it will be useful,
  31671. + but WITHOUT ANY WARRANTY.  No author or distributor
  31672. + accepts responsibility to anyone for the consequences of using it
  31673. + or for whether it serves any particular purpose or works at all,
  31674. + unless he says so in writing.  Refer to the GNU Emacs General Public
  31675. + License for full details.
  31676. + Everyone is granted permission to copy, modify and redistribute
  31677. + GNU Emacs, but only under the conditions described in the
  31678. + GNU Emacs General Public License.   A copy of this license is
  31679. + supposed to have been given to you along with GNU Emacs so you
  31680. + can know your rights and responsibilities.  It should be in a
  31681. + file named COPYING.  Among other things, the copyright notice
  31682. + and this notice must be preserved on all copies.  */
  31683. + /*
  31684. +  *    Define symbols to identify the version of Unix this is.
  31685. +  *    Define all the symbols that apply correctly.
  31686. +  */
  31687. + #ifndef AMIGA
  31688. + #define AMIGA
  31689. + #endif /* AMIGA */
  31690. + /* SYSTEM_TYPE should indicate the kind of system you are using.
  31691. +  It sets the Lisp variable system-type.  */
  31692. + #define SYSTEM_TYPE "amigados"
  31693. + /* Define this if you want a faster redisplay. This saves a lot of CPU
  31694. +    time at the expense of more characters to be redrawn.
  31695. +    On a bitmapped display you win, with a serial line you probably lose.
  31696. + */
  31697. + #define FAST_DISPLAY
  31698. + /* Define this to display eight bit characters. The actual characters
  31699. +    that are visible can be set in init_xdisp ().
  31700. + */
  31701. + #define EIGHT_BIT
  31702. + /* nomultiplejobs should be defined if your system's shell
  31703. +  does not have "job control" (the ability to stop a program,
  31704. +  run some other program, then continue the first one).  */
  31705. + #define NOMULTIPLEJOBS
  31706. + /* Define this to include various patches that allow the Amiga to dump.
  31707. +    This *must* be defined on the Amiga!
  31708. + */
  31709. + #define AMIGA_DUMP
  31710. + /* Do not use interrupt_input = 1 by default, because in 4.3
  31711. +    we can make noninterrupt input work properly.  */
  31712. + /* #undef INTERRUPT_INPUT */    /* This file borrowed from s-bsd4-3.h */
  31713. + /* First pty name is /dev/ptyp0.  */
  31714. + /* #define FIRST_PTY_LETTER 'p' */
  31715. + /*
  31716. +  *    Define HAVE_TIMEVAL if the system supports the BSD style clock values.
  31717. +  *    Look in <sys/time.h> for a timeval structure.
  31718. +  */
  31719. + #define HAVE_TIMEVAL
  31720. + #define USE_UTIME
  31721. + /*
  31722. +  *    Define HAVE_SELECT if the system supports the `select' system call.
  31723. +  */
  31724. + #define HAVE_SELECT
  31725. + /*
  31726. +  *    Define HAVE_PTYS if the system supports pty devices.
  31727. +  */
  31728. + /* #define HAVE_PTYS */
  31729. + /* Define HAVE_SOCKETS if system supports 4.2-compatible sockets.  */
  31730. + /* #define HAVE_SOCKETS */
  31731. + /* But we do have socket pairs for processes ... */
  31732. + #define SKTPAIR
  31733. + /*
  31734. +  *    Define NONSYSTEM_DIR_LIBRARY to make Emacs emulate
  31735. +  *      The 4.2 opendir, etc., library functions.
  31736. +  */
  31737. + /* #define NONSYSTEM_DIR_LIBRARY */
  31738. + #define SYSV_SYSTEM_DIR
  31739. + /* Define this symbol if your system has the functions bcopy, etc. */
  31740. + #define BSTRING        /* #define'ed later on */
  31741. + /* subprocesses should be defined if you want to
  31742. +    have code for asynchronous subprocesses
  31743. +    (as used in M-x compile and M-x shell).
  31744. +    This is generally OS dependent, and not supported
  31745. +    under most USG systems. */
  31746. + #define subprocesses
  31747. + #define DID_REMOTE        /* Use 0 length write to send eof */
  31748. + /* If your system uses COFF (Common Object File Format) then define the
  31749. +    preprocessor symbol "COFF". */
  31750. + /* #define COFF */
  31751. + /* define MAIL_USE_FLOCK if the mailer uses flock
  31752. +    to interlock access to /usr/spool/mail/$USER.
  31753. +    The alternative is that a lock file named
  31754. +    /usr/spool/mail/$USER.lock.  */
  31755. + /* #define MAIL_USE_FLOCK */
  31756. + /* Define CLASH_DETECTION if you want lock files to be written
  31757. +    so that Emacs can tell instantly when you try to modify
  31758. +    a file that someone else has modified in his Emacs.  */
  31759. + /* #define CLASH_DETECTION */
  31760. + /* We use the Berkeley (and usg5.2.2) interface to nlist.  */
  31761. + /* #define NLIST_STRUCT */
  31762. + /* The file containing the kernel's symbol table is called /vmunix.  */
  31763. + /* #define KERNEL_FILE "/vmunix" */
  31764. + /* The symbol in the kernel where the load average is found
  31765. +    is named _avenrun.  */
  31766. + /* #define LDAV_SYMBOL "_avenrun" */
  31767. + /* We use our own malloc for 2 reasons:
  31768. +      - To check that the 6 (INTBITS - VALBITS) of allocated data are
  31769. +        the same as &pure[0].
  31770. +      - To release unused memory to the system (SAS's malloc keeps it
  31771. +        till you quit)
  31772. + */
  31773. + #define SYMS_SYSTEM syms_of_amiga()
  31774. + #define SYSTEM_MALLOC        /* But I have replaced the system malloc ... */
  31775. + #define DEF_PURESIZE 132000        /* Leave space for extra code for Amiga */
  31776. + #ifdef emacs
  31777. + extern int puresize;
  31778. + #endif
  31779. + #define PURESIZE puresize    /* Puresize is variable ... */
  31780. + #ifdef emacs
  31781. + /* Stdio must be included before redefining putchar */
  31782. + #include <stdio.h>
  31783. + extern char cbuffer[], *cbuffer_pos;
  31784. + #define PENDING_OUTPUT_COUNT(x) (cbuffer_pos - cbuffer)
  31785. + #endif
  31786. + /* We divert some calls to our routines */
  31787. + #define putchar(c) do { extern int noninteractive; \
  31788. +              if (noninteractive) putc (c, stdout); \
  31789. +              else emacs_putchar(c); } while(0)
  31790. + #define fwrite emacs_fwrite
  31791. + #define fflush emacs_fflush
  31792. + #define random rand
  31793. + #define srandom srand
  31794. + #define main emacs_main
  31795. + #define select emacs_select
  31796. + #ifdef emacs
  31797. + #include <string.h>
  31798. + #undef index
  31799. + #undef rindex
  31800. + #define index strchr
  31801. + #define rindex strrchr
  31802. + #endif
  31803. + #define fsync(x) 0        /* Emulate fsync ... */
  31804. + #ifdef emacs
  31805. + #include <sys/wait.h>        /* process.c doesn't have appropriate #ifdef's */
  31806. + extern int amiga_process_stack_size;
  31807. + #endif
  31808. + /* Here are some symbols for ymakefile's benefit */
  31809. + #define    LIB_STANDARD        //unix/src/unix.lib lib:sc.lib lib:amiga.lib
  31810. + #define    START_FILES        lib:c.o firstfile.o
  31811. + #define    C_DEBUG_SWITCH        debug s
  31812. + #define    C_OPTIMIZE_SWITCH    opt
  31813. + #define    LD_SWITCH_SYSTEM
  31814. + #define    C_SWITCH_SYSTEM
  31815. + #define    S_SWITCH_MACHINE    /* Nothing! */
  31816. + #define UNEXEC amiga_dump.o
  31817. + #define OBJECTS_SYSTEM        amiga_clipboard.o amiga_tty.o amiga_serial.o \
  31818. +                 amiga_screen.o amiga_menu.o amiga_malloc.o \
  31819. +                                 amiga_rexx.o simplerexx.o amiga_term.o
  31820. + /* Amiga window-specific stuff */
  31821. + #define VERS "1.28DG Beta"
  31822. + #define FALSE 0
  31823. + #define TRUE 1
  31824. diff -rc --new-file /src/baseline/emacs-18.59/src/scroll.c emacs-18.59/src/scroll.c
  31825. *** /src/baseline/emacs-18.59/src/scroll.c    Tue Jan  8 14:04:52 1991
  31826. --- emacs-18.59/src/scroll.c    Sun Nov 22 10:17:30 1992
  31827. ***************
  31828. *** 55,60 ****
  31829. --- 55,119 ----
  31830.   int *ILncost;
  31831.   int *DLncost;
  31832.   
  31833. + #ifdef FAST_DISPLAY
  31834. + scrolling_1 (window_size, unchanged_at_top, unchanged_at_bottom,
  31835. +          draw_cost, old_hash, new_hash, free_at_end)
  31836. +      int window_size, unchanged_at_top, unchanged_at_bottom;
  31837. +      int *draw_cost;
  31838. +      int *old_hash;
  31839. +      int *new_hash;
  31840. +      int free_at_end;
  31841. + {
  31842. +   int lines, i;
  31843. +   int window_end = unchanged_at_top + window_size;
  31844. +   /* Rebase arrays at line 0 */
  31845. +   old_hash -= unchanged_at_top - 1;
  31846. +   new_hash -= unchanged_at_top - 1;
  31847. +   draw_cost -= unchanged_at_top - 1;
  31848. +   /* We can't allow un-enabled lines to be scrolled (they are not redrawable). 
  31849. +      Restrict window to the first set of contiguous enabled lines 
  31850. +      (an enabled line has draw_cost[x] != INFINITY) */
  31851. +   for (i = unchanged_at_top; i < window_end && draw_cost[i] != INFINITY; i++) ;
  31852. +   /*unchanged_at_bottom += window_size - i;*/
  31853. +   /*window_size = i - unchanged_at_top;*/
  31854. +   window_end = i;
  31855. +   if (lines = calc_scroll(old_hash, new_hash, unchanged_at_top, window_end))
  31856. +       scroll_screen_lines(unchanged_at_top, window_end - lines, lines);
  31857. +   else if (lines = calc_scroll(new_hash, old_hash, unchanged_at_top, window_end))
  31858. +       scroll_screen_lines(unchanged_at_top + lines, window_end, -lines);
  31859. + }
  31860. + int calc_scroll(int *old_hash, int *new_hash, int from, int to)
  31861. + /* For insert attempt, the parameters are correct.
  31862. +    For delete attempt, swap the old & new hash parameters
  31863. + */
  31864. + {
  31865. +     int try = from + 1, lines, i;
  31866. +     int hash1 = old_hash[from];
  31867. +     do
  31868. +     {
  31869. +     if (hash1 == new_hash[try])
  31870. +     {
  31871. +         /* Check if other lines match too */
  31872. +         lines = try - from; /* Amount to insert */
  31873. +         for (i = try + 1; i < to; i++)
  31874. +         if (old_hash[i - lines] != new_hash[i]) break;
  31875. +         if (i == to) /* It works ! */
  31876. +         return lines;
  31877. +     }
  31878. +     try++;
  31879. +     }
  31880. +     while (try < to);
  31881. +     return 0;
  31882. + }
  31883. + #else /* not FAST_DISPLAY */
  31884.   scrolling_1 (window_size, unchanged_at_top, unchanged_at_bottom,
  31885.            draw_cost, old_hash, new_hash, free_at_end)
  31886.        int window_size, unchanged_at_top, unchanged_at_bottom;
  31887. ***************
  31888. *** 320,325 ****
  31889. --- 379,385 ----
  31890.     if (window)
  31891.       set_terminal_window (0);
  31892.   }
  31893. + #endif /* not FAST_DISPLAY */
  31894.   
  31895.   /* Return number of lines in common between current screen contents
  31896.      and the text to be displayed,
  31897. diff -rc --new-file /src/baseline/emacs-18.59/src/simplerexx.c emacs-18.59/src/simplerexx.c
  31898. *** /src/baseline/emacs-18.59/src/simplerexx.c    Thu Jan  1 00:00:00 1970
  31899. --- emacs-18.59/src/simplerexx.c    Mon May 10 14:35:42 1993
  31900. ***************
  31901. *** 0 ****
  31902. --- 1,416 ----
  31903. + /*
  31904. +  * Simple ARexx interface by Michael Sinz
  31905. +  *
  31906. +  * This is a very "Simple" interface to the world of ARexx...
  31907. +  * For more complex interfaces into ARexx, it is best that you
  31908. +  * understand the functions that are provided by ARexx.
  31909. +  * In many cases they are more powerful than what is presented
  31910. +  * here.
  31911. +  *
  31912. +  * This code is fully re-entrant and self-contained other than
  31913. +  * the use of SysBase/AbsExecBase and the ARexx RVI support
  31914. +  * library which is also self-contained...
  31915. +  */
  31916. + #include    <exec/types.h>
  31917. + #include    <exec/nodes.h>
  31918. + #include    <exec/lists.h>
  31919. + #include    <exec/ports.h>
  31920. + #include    <exec/memory.h>
  31921. + #include    <proto/exec.h>
  31922. + #include    <rexx/storage.h>
  31923. + #include    <rexx/rxslib.h>
  31924. + #include    <string.h>
  31925. + #include    <ctype.h>
  31926. + /*
  31927. +  * The prototypes for the few ARexx functions we will call...
  31928. +  */
  31929. + struct RexxMsg *CreateRexxMsg(struct MsgPort *,char *,char *);
  31930. + void *CreateArgstring(char *,long);
  31931. + void DeleteRexxMsg(struct RexxMsg *);
  31932. + void DeleteArgstring(char *);
  31933. + BOOL IsRexxMsg(struct Message *);
  31934. + /*
  31935. +  * Pragmas for the above functions...  (To make this all self-contained...)
  31936. +  * If you use RexxGlue.o, this is not needed...
  31937. +  *
  31938. +  * These are for Lattice C 5.x  (Note the use of RexxContext->RexxSysBase)
  31939. +  */
  31940. + #pragma libcall RexxContext->RexxSysBase CreateRexxMsg 90 09803
  31941. + #pragma libcall RexxContext->RexxSysBase CreateArgstring 7E 0802
  31942. + #pragma libcall RexxContext->RexxSysBase DeleteRexxMsg 96 801
  31943. + #pragma libcall RexxContext->RexxSysBase DeleteArgstring 84 801
  31944. + #pragma libcall RexxContext->RexxSysBase IsRexxMsg A8 801
  31945. + /*
  31946. +  * Now, we have made the pragmas needed, let's get to work...
  31947. +  */
  31948. + /*
  31949. +  * A structure for the ARexx handler context
  31950. +  * This is *VERY* *PRIVATE* and should not be touched...
  31951. +  */
  31952. + struct    ARexxContext
  31953. + {
  31954. + struct    MsgPort    *ARexxPort;    /* The port messages come in at... */
  31955. + struct    Library    *RexxSysBase;    /* We will hide the library pointer here... */
  31956. +     long    Outstanding;    /* The count of outstanding ARexx messages... */
  31957. +     char    PortName[24];    /* The port name goes here... */
  31958. +     char    ErrorName[28];    /* The name of the <base>.LASTERROR... */
  31959. +     char    Extension[8];    /* Default file name extension... */
  31960. + };
  31961. + #define    AREXXCONTEXT    struct ARexxContext *
  31962. + #include    "SimpleRexx.h"
  31963. + /*
  31964. +  * This function returns the port name of your ARexx port.
  31965. +  * It will return NULL if there is no ARexx port...
  31966. +  *
  31967. +  * This string is *READ ONLY*  You *MUST NOT* modify it...
  31968. +  */
  31969. + char *ARexxName(AREXXCONTEXT RexxContext)
  31970. + {
  31971. +     register    char    *tmp=NULL;
  31972. +     if (RexxContext) tmp=RexxContext->PortName;
  31973. +     return(tmp);
  31974. + }
  31975. + /*
  31976. +  * This function returns the signal mask that the Rexx port is
  31977. +  * using.  It returns NULL if there is no signal...
  31978. +  *
  31979. +  * Use this signal bit in your Wait() loop...
  31980. +  */
  31981. + ULONG ARexxSignal(AREXXCONTEXT RexxContext)
  31982. + {
  31983. +     register    ULONG    tmp=NULL;
  31984. +     if (RexxContext) tmp=1L << (RexxContext->ARexxPort->mp_SigBit);
  31985. +     return(tmp);
  31986. + }
  31987. + /*
  31988. +  * This function returns a structure that contains the commands sent from
  31989. +  * ARexx or the results of commands you sent.  You will need to parse it 
  31990. +  * and return the structure back so that the memory can be freed.
  31991. +  *
  31992. +  * This returns NULL if there was no message.
  31993. +  */
  31994. + struct RexxMsg *GetARexxMsg(AREXXCONTEXT RexxContext)
  31995. + {
  31996. +     register    struct    RexxMsg    *tmp=NULL;
  31997. +     register        short    flag;
  31998. +     if (RexxContext) tmp=(struct RexxMsg *)GetMsg(RexxContext->ARexxPort);
  31999. +     return(tmp);
  32000. + }
  32001. + /* Use this to delete a message sent via SendARexxMsg and that has now been
  32002. +    returned to you.
  32003. + */
  32004. + void DeleteARexxMsg(AREXXCONTEXT RexxContext, struct RexxMsg *rmsg)
  32005. + {
  32006. +     /*
  32007. +      * Free the arguments and the message...
  32008. +      */
  32009. +     if(rmsg->rm_Action & RXFF_RESULT) {
  32010. +     if(rmsg->rm_Result1 == 0 && rmsg->rm_Result2) {
  32011. +         DeleteArgstring((STRPTR)rmsg->rm_Result2);
  32012. +     }
  32013. +     }
  32014. +     DeleteArgstring(rmsg->rm_Args[0]);
  32015. +     DeleteRexxMsg(rmsg);
  32016. +     RexxContext->Outstanding-=1;
  32017. + }
  32018. + /*
  32019. +  * Use this to return a ARexx message...
  32020. +  *
  32021. +  * If you wish to return something, it must be in the RString.
  32022. +  * If you wish to return an Error, it must be in the Error.
  32023. +  * If there is an error, the RString is ignored.
  32024. +  */
  32025. + void ReplyARexxMsg(AREXXCONTEXT RexxContext,struct RexxMsg *rmsg,
  32026. +            char *RString,LONG Error)
  32027. + {
  32028. +     if (RexxContext) if (rmsg) if (rmsg!=REXX_RETURN_ERROR)
  32029. +     {
  32030. +     rmsg->rm_Result2=0;
  32031. +     if (!(rmsg->rm_Result1=Error))
  32032. +     {
  32033. +         /*
  32034. +          * if you did not have an error we return the string
  32035. +          */
  32036. +         if (rmsg->rm_Action & (1L << RXFB_RESULT)) if (RString)
  32037. +         {
  32038. +         rmsg->rm_Result2=(LONG)CreateArgstring(RString,
  32039. +                                (LONG)strlen(RString));
  32040. +         }
  32041. +     }
  32042. +     /*
  32043. +      * Reply the message to ARexx...
  32044. +      */
  32045. +     ReplyMsg((struct Message *)rmsg);
  32046. +     }
  32047. + }
  32048. + /*
  32049. +  * This function will set an error string for the ARexx
  32050. +  * application in the variable defined as <appname>.LASTERROR
  32051. +  *
  32052. +  * Note that this can only happen if there is an ARexx message...
  32053. +  *
  32054. +  * This returns TRUE if it worked, FALSE if it did not...
  32055. +  */
  32056. + short SetARexxLastError(AREXXCONTEXT RexxContext,struct RexxMsg *rmsg,
  32057. +             char *ErrorString)
  32058. + {
  32059. +     register    short    OkFlag=FALSE;
  32060. +     if (RexxContext) if (rmsg) if (CheckRexxMsg(rmsg))
  32061. +     {
  32062. +     /*
  32063. +      * Note that SetRexxVar() has more than just a TRUE/FALSE
  32064. +      * return code, but for this "basic" case, we just care if
  32065. +      * it works or not.
  32066. +      */
  32067. +     if (!SetRexxVar(rmsg,RexxContext->ErrorName,ErrorString,
  32068. +             (long)strlen(ErrorString)))
  32069. +     {
  32070. +         OkFlag=TRUE;
  32071. +     }
  32072. +     }
  32073. +     return(OkFlag);
  32074. + }
  32075. + /*
  32076. +  * This function will send a string to ARexx...
  32077. +  *
  32078. +  * The default host port will be that of your task...
  32079. +  *
  32080. +  * If you set StringFile to TRUE, it will set that bit for the message...
  32081. +  *
  32082. +  * Returns the message sent, or NULL in case of error.
  32083. +  */
  32084. + struct RexxMsg *SendARexxMsg(AREXXCONTEXT RexxContext,char *RString,
  32085. +                   short StringFile, short results)
  32086. + {
  32087. +     register    struct    MsgPort    *RexxPort;
  32088. +     register    struct    RexxMsg    *rmsg;
  32089. +     register        short    flag=FALSE;
  32090. +     if (RexxContext) if (RString)
  32091. +     {
  32092. +     if (rmsg=CreateRexxMsg(RexxContext->ARexxPort,
  32093. +                    RexxContext->Extension,
  32094. +                    RexxContext->PortName))
  32095. +     {
  32096. +         rmsg->rm_Action=RXCOMM | (StringFile ?
  32097. +                       (1L << RXFB_STRING):0);
  32098. +         rmsg->rm_Action |= (results ? RXFF_RESULT : 0);
  32099. +         if (rmsg->rm_Args[0]=CreateArgstring(RString,
  32100. +                          (LONG)strlen(RString)))
  32101. +         {
  32102. +         /*
  32103. +          * We need to find the RexxPort and this needs
  32104. +          * to be done in a Forbid()
  32105. +          */
  32106. +         Forbid();
  32107. +         if (RexxPort=FindPort(RXSDIR))
  32108. +         {
  32109. +             /*
  32110. +              * We found the port, so put the
  32111. +              * message to ARexx...
  32112. +              */
  32113. +             PutMsg(RexxPort,(struct Message *)rmsg);
  32114. +             RexxContext->Outstanding+=1;
  32115. +             flag=TRUE;
  32116. +         }
  32117. +         else
  32118. +         {
  32119. +             /*
  32120. +              * No port, so clean up...
  32121. +              */
  32122. +             DeleteArgstring(rmsg->rm_Args[0]);
  32123. +             DeleteRexxMsg(rmsg);
  32124. +         }
  32125. +         Permit();
  32126. +         }
  32127. +         else DeleteRexxMsg(rmsg);
  32128. +     }
  32129. +     }
  32130. +     return flag ? rmsg : NULL;
  32131. + }
  32132. + int PendingCommands(AREXXCONTEXT RexxContext)
  32133. + {
  32134. +     if (RexxContext) return RexxContext->Outstanding;
  32135. +     else return 0;
  32136. + }
  32137. + /*
  32138. +  * This function closes down the ARexx context that was opened
  32139. +  * with InitARexx...
  32140. +  */
  32141. + void FreeARexx(AREXXCONTEXT RexxContext)
  32142. + {
  32143. +     register    struct    RexxMsg    *rmsg;
  32144. +     if (RexxContext)
  32145. +     {
  32146. +     /*
  32147. +      * Clear port name so it can't be found...
  32148. +      */
  32149. +     RexxContext->PortName[0]='\0';
  32150. +     /*
  32151. +      * Clean out any outstanding messages we had sent out...
  32152. +      */
  32153. +     while (RexxContext->Outstanding)
  32154. +     {
  32155. +         WaitPort(RexxContext->ARexxPort);
  32156. +         while (rmsg=GetARexxMsg(RexxContext))
  32157. +         {
  32158. +         if (rmsg!=REXX_RETURN_ERROR)
  32159. +         {
  32160. +             /*
  32161. +              * Any messages that come now are blown
  32162. +              * away...
  32163. +              */
  32164. +             SetARexxLastError(RexxContext,rmsg,
  32165. +                       "99: Port Closed!");
  32166. +             /* removed ReplyARexxMsg() this was a bug that would */
  32167. +             /* obviously cause a loop (we would continue to reply and */
  32168. +             /* then get the message.  It now deletes the message as */
  32169. +             /* should be done.  -ch5/10/93. */
  32170. +             DeleteARexxMsg(RexxContext,rmsg);
  32171. +         }
  32172. +         }
  32173. +     }
  32174. +     /*
  32175. +      * Clean up the port and delete it...
  32176. +      */
  32177. +     if (RexxContext->ARexxPort)
  32178. +     {
  32179. +         while (rmsg=GetARexxMsg(RexxContext))
  32180. +         {
  32181. +         /*
  32182. +          * Any messages that still are coming in are
  32183. +          * "dead"  We just set the LASTERROR and
  32184. +          * reply an error of 100...
  32185. +          */
  32186. +         SetARexxLastError(RexxContext,rmsg,
  32187. +                   "99: Port Closed!");
  32188. +         ReplyARexxMsg(RexxContext,rmsg,NULL,100);
  32189. +         }
  32190. +         RemPort(RexxContext->ARexxPort);
  32191. +         DeleteMsgPort(RexxContext->ARexxPort);
  32192. +     }
  32193. +     /*
  32194. +      * Make sure we close the library...
  32195. +      */
  32196. +     if (RexxContext->RexxSysBase)
  32197. +     {
  32198. +         CloseLibrary(RexxContext->RexxSysBase);
  32199. +     }
  32200. +     /*
  32201. +      * Free the memory of the RexxContext
  32202. +      */
  32203. +     FreeMem(RexxContext,sizeof(struct ARexxContext));
  32204. +     }
  32205. + }
  32206. + /*
  32207. +  * This routine initializes an ARexx port for your process
  32208. +  * This should only be done once per process.  You must call it
  32209. +  * with a valid application name and you must use the handle it
  32210. +  * returns in all other calls...
  32211. +  *
  32212. +  * NOTE:  The AppName should not have spaces in it...
  32213. +  *        Example AppNames:  "MyWord" or "FastCalc" etc...
  32214. +  *        The name *MUST* be less that 16 characters...
  32215. +  *        If it is not, it will be trimmed...
  32216. +  *        The name will also be UPPER-CASED...
  32217. +  *
  32218. +  * NOTE:  The Default file name extension, if NULL will be
  32219. +  *        "rexx"  (the "." is automatic)
  32220. +  */
  32221. + AREXXCONTEXT InitARexx(char *AppName,char *Extension)
  32222. + {
  32223. +     register    AREXXCONTEXT    RexxContext=NULL;
  32224. +     register    short        loop;
  32225. +     register    short        count;
  32226. +     register    char        *tmp;
  32227. +     if (RexxContext=AllocMem(sizeof(struct ARexxContext),
  32228. +                  MEMF_PUBLIC|MEMF_CLEAR))
  32229. +     {
  32230. +     if (RexxContext->RexxSysBase=OpenLibrary("rexxsyslib.library", NULL))
  32231. +     {
  32232. +         /*
  32233. +          * Set up the extension...
  32234. +          */
  32235. +         if (!Extension) Extension="rexx";
  32236. +         tmp=RexxContext->Extension;
  32237. +         for (loop=0;(loop<7)&&(Extension[loop]);loop++)
  32238. +         {
  32239. +         *tmp++=Extension[loop];
  32240. +         }
  32241. +         *tmp='\0';
  32242. +         /*
  32243. +          * Set up a port name...
  32244. +          */
  32245. +         tmp=RexxContext->PortName;
  32246. +         for (loop=0;(loop<16)&&(AppName[loop]);loop++)
  32247. +         {
  32248. +         *tmp++=toupper(AppName[loop]);
  32249. +         }
  32250. +         *tmp='\0';
  32251. +         /*
  32252. +          * Set up the last error RVI name...
  32253. +          *
  32254. +          * This is <appname>.LASTERROR
  32255. +          */
  32256. +         strcpy(RexxContext->ErrorName,RexxContext->PortName);
  32257. +         strcat(RexxContext->ErrorName,".LASTERROR");
  32258. +         /* We need to make a unique port name... */
  32259. +         Forbid();
  32260. +         for (count=1,RexxContext->ARexxPort=(VOID *)1;
  32261. +          RexxContext->ARexxPort;count++)
  32262. +         {
  32263. +         stci_d(tmp,count);
  32264. +         RexxContext->ARexxPort=
  32265. +             FindPort(RexxContext->PortName);
  32266. +         }
  32267. +         /*RexxContext->ARexxPort=CreatePort(RexxContext->PortName,NULL);*/
  32268. +         RexxContext->ARexxPort=CreateMsgPort();
  32269. +         RexxContext->ARexxPort->mp_Node.ln_Name = RexxContext->PortName;
  32270. +         RexxContext->ARexxPort->mp_Node.ln_Pri = 0;
  32271. +         AddPort(RexxContext->ARexxPort);
  32272. +         Permit();
  32273. +     }
  32274. +     if (!RexxContext->RexxSysBase || !RexxContext->ARexxPort)
  32275. +     {
  32276. +         FreeARexx(RexxContext);
  32277. +         RexxContext=NULL;
  32278. +     }
  32279. +     }
  32280. +     return(RexxContext);
  32281. + }
  32282. diff -rc --new-file /src/baseline/emacs-18.59/src/simplerexx.h emacs-18.59/src/simplerexx.h
  32283. *** /src/baseline/emacs-18.59/src/simplerexx.h    Thu Jan  1 00:00:00 1970
  32284. --- emacs-18.59/src/simplerexx.h    Mon May 10 14:35:42 1993
  32285. ***************
  32286. *** 0 ****
  32287. --- 1,119 ----
  32288. + /*
  32289. +  * Simple ARexx interface by Michael Sinz
  32290. +  *
  32291. +  * This is a very "Simple" interface...
  32292. +  */
  32293. + #ifndef    SIMPLE_REXX_H
  32294. + #define    SIMPLE_REXX_H
  32295. + #include    <exec/types.h>
  32296. + #include    <exec/nodes.h>
  32297. + #include    <exec/lists.h>
  32298. + #include    <exec/ports.h>
  32299. + #include    <rexx/storage.h>
  32300. + #include    <rexx/rxslib.h>
  32301. + /*
  32302. +  * This is the handle that SimpleRexx will give you
  32303. +  * when you initialize an ARexx port...
  32304. +  *
  32305. +  * The conditional below is used to skip this if we have
  32306. +  * defined it earlier...
  32307. +  */
  32308. + #ifndef    AREXXCONTEXT
  32309. + typedef void *AREXXCONTEXT;
  32310. + #endif    /* AREXXCONTEXT */
  32311. + /*
  32312. +  * The value of RexxMsg (from GetARexxMsg) if there was an error returned
  32313. +  */
  32314. + #define    REXX_RETURN_ERROR    ((struct RexxMsg *)-1L)
  32315. + #define    REXX_RETURN_OK            ((struct RexxMsg *)-3L)
  32316. + /*
  32317. +  * This function closes down the ARexx context that was opened
  32318. +  * with InitARexx...
  32319. +  */
  32320. + void FreeARexx(AREXXCONTEXT);
  32321. + /*
  32322. +  * This routine initializes an ARexx port for your process
  32323. +  * This should only be done once per process.  You must call it
  32324. +  * with a valid application name and you must use the handle it
  32325. +  * returns in all other calls...
  32326. +  *
  32327. +  * NOTE:  The AppName should not have spaces in it...
  32328. +  *        Example AppNames:  "MyWord" or "FastCalc" etc...
  32329. +  *        The name *MUST* be less that 16 characters...
  32330. +  *        If it is not, it will be trimmed...
  32331. +  *        The name will also be UPPER-CASED...
  32332. +  *
  32333. +  * NOTE:  The Default file name extension, if NULL will be
  32334. +  *        "rexx"  (the "." is automatic)
  32335. +  */
  32336. + AREXXCONTEXT InitARexx(char *,char *);
  32337. + /*
  32338. +  * This function returns the port name of your ARexx port.
  32339. +  * It will return NULL if there is no ARexx port...
  32340. +  *
  32341. +  * This string is *READ ONLY*  You *MUST NOT* modify it...
  32342. +  */
  32343. + char *ARexxName(AREXXCONTEXT);
  32344. + /*
  32345. +  * This function returns the signal mask that the Rexx port is
  32346. +  * using.  It returns NULL if there is no signal...
  32347. +  *
  32348. +  * Use this signal bit in your Wait() loop...
  32349. +  */
  32350. + ULONG ARexxSignal(AREXXCONTEXT);
  32351. + /*
  32352. +  * This function returns a structure that contains the commands sent from
  32353. +  * ARexx...  You will need to parse it and return the structure back
  32354. +  * so that the memory can be freed...
  32355. +  *
  32356. +  * This returns NULL if there was no message...
  32357. +  */
  32358. + struct RexxMsg *GetARexxMsg(AREXXCONTEXT);
  32359. + /* Use this to delete a message sent via SendARexxMsg and that has now been
  32360. +    returned to you.
  32361. + */
  32362. + void DeleteARexxMsg(AREXXCONTEXT RexxContext, struct RexxMsg *rmsg);
  32363. + /*
  32364. +  * Use this to return a ARexx message...
  32365. +  *
  32366. +  * If you wish to return something, it must be in the RString.
  32367. +  * If you wish to return an Error, it must be in the Error.
  32368. +  */
  32369. + void ReplyARexxMsg(AREXXCONTEXT,struct RexxMsg *,char *,LONG);
  32370. + /*
  32371. +  * This function will send a string to ARexx...
  32372. +  *
  32373. +  * The default host port will be that of your task...
  32374. +  *
  32375. +  * If you set StringFile to TRUE, it will set that bit for the message...
  32376. +  *
  32377. +  * Returns the message sent, or NULL in case of error.
  32378. +  */
  32379. + struct RexxMsg *SendARexxMsg(AREXXCONTEXT,char *,short,short);
  32380. + /*
  32381. +  * This function will set an error string for the ARexx
  32382. +  * application in the variable defined as <appname>.LASTERROR
  32383. +  *
  32384. +  * Note that this can only happen if there is an ARexx message...
  32385. +  *
  32386. +  * This returns TRUE if it worked, FALSE if it did not...
  32387. +  */
  32388. + short SetARexxLastError(AREXXCONTEXT,struct RexxMsg *,char *);
  32389. + #endif    /* SIMPLE_REXX_H */
  32390. diff -rc --new-file /src/baseline/emacs-18.59/src/smakefile emacs-18.59/src/smakefile
  32391. *** /src/baseline/emacs-18.59/src/smakefile    Thu Jan  1 00:00:00 1970
  32392. --- emacs-18.59/src/smakefile    Sat Dec  5 16:43:56 1992
  32393. ***************
  32394. *** 0 ****
  32395. --- 1,45 ----
  32396. + CPP = /cpp/cpp -DAMIGA
  32397. + MAKE = smake  # BSD doesn't have it as a default.
  32398. + #Note: an alternative is  CPP = /lib/cpp
  32399. + all: xmakefile doall
  32400. + doall:
  32401. +     $(MAKE) $(MAKEOVERRIDES) -f xmakefile ${MFLAGS} all
  32402. + #This is used in making a distribution.
  32403. + #Do not use it on development directories!
  32404. + distclean:
  32405. +     -delete force paths.h config.h emacs-* temacs xemacs xmakefile \
  32406. +    *! @* *.o
  32407. + clean:
  32408. +     -delete force temacs xemacs xmakefile @* *.o
  32409. + xemacs: xmakefile doxemacs
  32410. + doxemacs:
  32411. +     $(MAKE) $(MAKEOVERRIDES) -f xmakefile ${MFLAGS} xemacs
  32412. + temacs: xmakefile dotemacs
  32413. + dotemacs:
  32414. +     $(MAKE) $(MAKEOVERRIDES) -f xmakefile ${MFLAGS} temacs
  32415. + demacs: xmakefile dodemacs
  32416. + dodemacs:
  32417. +     $(MAKE) $(MAKEOVERRIDES) -f xmakefile ${MFLAGS} demacs
  32418. + # If you have a problem with cc -E here, changing
  32419. + # the definition of CPP above may fix it.
  32420. + xmakefile: ymakefile config.h dostrip
  32421. +     -delete force xmakefile
  32422. +     ${CPP} ymakefile > t:ymkf
  32423. +     dostrip <t:ymkf >xmakefile
  32424. + dostrip: dostrip.c
  32425. +     sc link dostrip
  32426. + tags:
  32427. +     etags [a-z]*.h [a-z]*.c /lisp/[a-z]*.el
  32428. diff -rc --new-file /src/baseline/emacs-18.59/src/term.c emacs-18.59/src/term.c
  32429. *** /src/baseline/emacs-18.59/src/term.c    Fri Jan  3 03:46:47 1992
  32430. --- emacs-18.59/src/term.c    Sun Nov 22 10:18:02 1992
  32431. ***************
  32432. *** 161,167 ****
  32433.      or'd with 0100.  Zero if no standout marker at all.  */
  32434.   /* used iff TN_standout_width >= 0. */
  32435.   char *chars_wasted;
  32436. ! static char *copybuf;
  32437.   
  32438.   /* nonzero means supposed to write text in standout mode.  */
  32439.   int standout_requested;
  32440. --- 161,167 ----
  32441.      or'd with 0100.  Zero if no standout marker at all.  */
  32442.   /* used iff TN_standout_width >= 0. */
  32443.   char *chars_wasted;
  32444. ! char *copybuf;
  32445.   
  32446.   /* nonzero means supposed to write text in standout mode.  */
  32447.   int standout_requested;
  32448. diff -rc --new-file /src/baseline/emacs-18.59/src/termcap.c emacs-18.59/src/termcap.c
  32449. *** /src/baseline/emacs-18.59/src/termcap.c    Tue Jan  8 14:08:50 1991
  32450. --- emacs-18.59/src/termcap.c    Sun Nov 22 10:18:04 1992
  32451. ***************
  32452. *** 30,35 ****
  32453. --- 30,36 ----
  32454.   
  32455.   #ifdef emacs
  32456.   #include "config.h"
  32457. + #include "paths.h"
  32458.   #endif
  32459.   
  32460.   #ifndef BUFSIZE
  32461. ***************
  32462. *** 344,350 ****
  32463. --- 345,355 ----
  32464.   #ifdef VMS
  32465.     filep = tem && legal_filename_p (tem);
  32466.   #else
  32467. + #ifdef AMIGA
  32468. +   filep = tem != 0;            /* Always assume that it is a file */
  32469. + #else
  32470.     filep = tem && (*tem == '/');
  32471. + #endif
  32472.   #endif /* VMS */
  32473.   
  32474.     /* If tem is non-null and starts with / (in the un*x case, that is),
  32475. ***************
  32476. *** 374,384 ****
  32477.       indirect = (char *) 0;
  32478.   
  32479.     if (!tem)
  32480. ! #ifdef VMS
  32481. !     tem = "emacs_library:[etc]termcap.dat";
  32482. ! #else
  32483. !     tem = "/etc/termcap";
  32484. ! #endif
  32485.   
  32486.     /* Here we know we must search a file and tem has its name.  */
  32487.   
  32488. --- 379,385 ----
  32489.       indirect = (char *) 0;
  32490.   
  32491.     if (!tem)
  32492. !     tem = PATH_TERMCAP;
  32493.   
  32494.     /* Here we know we must search a file and tem has its name.  */
  32495.   
  32496. diff -rc --new-file /src/baseline/emacs-18.59/src/tparam.c emacs-18.59/src/tparam.c
  32497. *** /src/baseline/emacs-18.59/src/tparam.c    Tue Jan  8 14:09:27 1991
  32498. --- emacs-18.59/src/tparam.c    Sun Nov 22 10:18:10 1992
  32499. ***************
  32500. *** 258,264 ****
  32501.     return outstring;
  32502.   }
  32503.   
  32504. ! #ifdef DEBUG
  32505.   
  32506.   main (argc, argv)
  32507.        int argc;
  32508. --- 258,264 ----
  32509.     return outstring;
  32510.   }
  32511.   
  32512. ! #ifdef TPARAM_DEBUG
  32513.   
  32514.   main (argc, argv)
  32515.        int argc;
  32516. ***************
  32517. *** 274,277 ****
  32518.     return 0;
  32519.   }
  32520.   
  32521. ! #endif /* DEBUG */
  32522. --- 274,277 ----
  32523.     return 0;
  32524.   }
  32525.   
  32526. ! #endif /* TPARAM_DEBUG */
  32527. diff -rc --new-file /src/baseline/emacs-18.59/src/xdisp.c emacs-18.59/src/xdisp.c
  32528. *** /src/baseline/emacs-18.59/src/xdisp.c    Fri Jul 24 15:08:13 1992
  32529. --- emacs-18.59/src/xdisp.c    Sun Nov 22 10:19:14 1992
  32530. ***************
  32531. *** 31,36 ****
  32532. --- 31,47 ----
  32533.   #include "commands.h"
  32534.   #include "macros.h"
  32535.   
  32536. + #define MAX_WIN_LINE 64
  32537. + static int win_line_bufpos[MAX_WIN_LINE];
  32538. + static int win_line_modified;
  32539. + static struct buffer *win_line_buffer;
  32540. + #define CLEAR_WIN_LINE() (win_line_buffer = 0)
  32541. + #ifdef EIGHT_BIT
  32542. + char visible[256];        /* visible[i] is true if character i is
  32543. +                    displayable */
  32544. + #endif
  32545.   extern int interrupt_input;
  32546.   extern int command_loop_level;
  32547.   
  32548. ***************
  32549. *** 275,281 ****
  32550.       windows_or_buffers_changed++;
  32551.   
  32552.     if (EQ (minibuf_window, selected_window))
  32553. !     this_line_bufpos = 0;
  32554.   
  32555.     prev_echo_area_contents = echo_area_contents;
  32556.   }
  32557. --- 286,295 ----
  32558.       windows_or_buffers_changed++;
  32559.   
  32560.     if (EQ (minibuf_window, selected_window))
  32561. !     {
  32562. !       this_line_bufpos = 0;
  32563. !       CLEAR_WIN_LINE();
  32564. !     }
  32565.   
  32566.     prev_echo_area_contents = echo_area_contents;
  32567.   }
  32568. ***************
  32569. *** 327,332 ****
  32570. --- 341,348 ----
  32571.         must_finish = 1;
  32572.       }
  32573.   
  32574. +   if (windows_or_buffers_changed) CLEAR_WIN_LINE();
  32575.     if (clip_changed || windows_or_buffers_changed)
  32576.       update_mode_lines++;
  32577.   
  32578. ***************
  32579. *** 453,458 ****
  32580. --- 469,475 ----
  32581.        Also, don't forget to check every line to update the arrow.  */
  32582.     if (pause)
  32583.       {
  32584. +       CLEAR_WIN_LINE();
  32585.         this_line_bufpos = 0;
  32586.         if (!NULL (last_arrow_position))
  32587.       {
  32588. ***************
  32589. *** 709,717 ****
  32590.         && (just_this_one || XFASTINT (w->width) == screen_width)
  32591.         && !EQ (window, minibuf_window))
  32592.       {
  32593. !       pos = *compute_motion (startp, 0, (hscroll ? 1 - hscroll : 0),
  32594.                   point, height + 1, 10000, width, hscroll,
  32595. !                 pos_tab_offset (w, startp));
  32596.   
  32597.         if (pos.vpos < height)
  32598.       {
  32599. --- 726,754 ----
  32600.         && (just_this_one || XFASTINT (w->width) == screen_width)
  32601.         && !EQ (window, minibuf_window))
  32602.       {
  32603. !       int *wlb;
  32604. !       int line, best_startp, best_vpos;
  32605. !       best_startp = startp; best_vpos = 0;
  32606. !       if (win_line_buffer && BUF_MODIFF(win_line_buffer) > win_line_modified)
  32607. !       CLEAR_WIN_LINE();
  32608. !       if (current_buffer == win_line_buffer && current_buffer == XBUFFER (w->buffer))
  32609. !         {
  32610. !       /* Try & find line to start from */
  32611. !       wlb = win_line_bufpos; line = 0;
  32612. !       while (line < MAX_WIN_LINE)
  32613. !         {
  32614. !           if (*wlb && point > *wlb && *wlb > best_startp)
  32615. !             {
  32616. !           best_startp = *wlb;
  32617. !           best_vpos = line;
  32618. !             }
  32619. !           line++; wlb++;
  32620. !         }
  32621. !         }
  32622. !       pos = *compute_motion (best_startp, best_vpos, (hscroll ? 1 - hscroll : 0),
  32623.                   point, height + 1, 10000, width, hscroll,
  32624. !                 pos_tab_offset (w, best_startp));
  32625.   
  32626.         if (pos.vpos < height)
  32627.       {
  32628. ***************
  32629. *** 843,848 ****
  32630. --- 880,887 ----
  32631.   
  32632.     struct position val;
  32633.   
  32634. +   if (XBUFFER(w->buffer) == win_line_buffer) CLEAR_WIN_LINE();
  32635.     Fset_marker (w->start, make_number (pos), Qnil);
  32636.   
  32637.     point_vpos = -1;
  32638. ***************
  32639. *** 908,913 ****
  32640. --- 947,954 ----
  32641.     int delta;
  32642.     int tab_offset, epto;
  32643.   
  32644. +   if (XBUFFER(w->buffer) == win_line_buffer) CLEAR_WIN_LINE();
  32645.     if (GPT - BEG < beg_unchanged)
  32646.       beg_unchanged = GPT - BEG;
  32647.     if (Z - GPT < end_unchanged)
  32648. ***************
  32649. *** 1334,1339 ****
  32650. --- 1375,1381 ----
  32651.     pause = pos;
  32652.     while (p1 < endp)
  32653.       {
  32654. + restart:
  32655.         p1prev = p1;
  32656.         if (pos == pause)
  32657.       {
  32658. ***************
  32659. *** 1354,1366 ****
  32660.         p = &FETCH_CHAR (pos);
  32661.       }
  32662.         c = *p++;
  32663.         if (c >= 040 && c < 0177)
  32664. !     {
  32665.         if (p1 >= startp)
  32666. !         *p1 = c;
  32667. !       p1++;
  32668. !     }
  32669. !       else if (c == '\n')
  32670.       {
  32671.         invis = 0;
  32672.         while (pos < end
  32673. --- 1396,1439 ----
  32674.         p = &FETCH_CHAR (pos);
  32675.       }
  32676.         c = *p++;
  32677. + #ifdef EIGHT_BIT
  32678. +       if (visible[c])
  32679. + #else
  32680.         if (c >= 040 && c < 0177)
  32681. ! #endif
  32682. !       /* This optimises the frequent part (displayable characters) of
  32683. !      this inner loop. If the conditions aren't met, return to old
  32684. !      inner loop. */
  32685. !         {
  32686.         if (p1 >= startp)
  32687. !         {
  32688. !           do
  32689. !             {
  32690. !           *p1++ = c;
  32691. !           pos++;
  32692. !           if (p1 >= endp)
  32693. !             {
  32694. !               p1prev = p1 - 1;
  32695. !               goto done;
  32696. !             }
  32697. !           if (pos == pause) goto restart;
  32698. !           c = *p++;
  32699. !             }
  32700. ! #ifdef EIGHT_BIT
  32701. !           while (visible[c]);
  32702. ! #else
  32703. !           while (c >= 040 && c < 0177);
  32704. ! #endif
  32705. !           p1prev = p1;
  32706. !         }
  32707. !       else
  32708. !         {
  32709. !           p1++;
  32710. !           pos++;
  32711. !           goto restart;
  32712. !         }
  32713. !         }
  32714. !       if (c == '\n')
  32715.       {
  32716.         invis = 0;
  32717.         while (pos < end
  32718. ***************
  32719. *** 1434,1439 ****
  32720. --- 1507,1513 ----
  32721.       }
  32722.         pos++;
  32723.       }
  32724. + done:
  32725.   
  32726.     val.hpos = - XINT (w->hscroll);
  32727.     if (val.hpos)
  32728. ***************
  32729. *** 1525,1530 ****
  32730. --- 1599,1623 ----
  32731.           this_line_bufpos = 0;
  32732.       }
  32733.       }
  32734. +   /* Save positions of all lines of current window */
  32735. +   if (w == XWINDOW(selected_window) && vpos < MAX_WIN_LINE)
  32736. +   {
  32737. +       /* Line is not continued and did not start in middle of character */
  32738. +       if (hpos == (XINT (w->hscroll) ? 1 - XINT (w->hscroll) : 0)
  32739. +       && val.vpos)
  32740. +       {
  32741. +       if (current_buffer != win_line_buffer ||
  32742. +           !(win_line_modified >= MODIFF))
  32743. +       {
  32744. +           win_line_buffer = current_buffer;
  32745. +           win_line_modified = MODIFF;
  32746. +           bzero(win_line_bufpos, sizeof win_line_bufpos);
  32747. +       }
  32748. +       win_line_bufpos[vpos - XINT (w->top)] = start;
  32749. +       }
  32750. +       else
  32751. +       win_line_bufpos[vpos - XINT (w->top)] = 0;
  32752. +   }
  32753.   
  32754.     /* If hscroll and line not empty, insert truncation-at-left marker */
  32755.     if (hscroll && lastpos != start)
  32756. ***************
  32757. *** 1994,2000 ****
  32758. --- 2087,2097 ----
  32759.       {
  32760.         c = *string++;
  32761.         if (!c) break;
  32762. + #ifdef EIGHT_BIT
  32763. +       if (visible[c])
  32764. + #else
  32765.         if (c >= 040 && c < 0177)
  32766. + #endif
  32767.       {
  32768.         if (p1 >= start)
  32769.           *p1 = c;
  32770. ***************
  32771. *** 2109,2115 ****
  32772. --- 2206,2216 ----
  32773.     register
  32774.   #endif COMPILER_REGISTER_BUG
  32775.       struct window *mini_w;
  32776. + #ifdef EIGHT_BIT
  32777. +   int i;
  32778. + #endif
  32779.   
  32780. +   CLEAR_WIN_LINE();
  32781.     this_line_bufpos = 0;
  32782.   
  32783.     mini_w = XWINDOW (minibuf_window);
  32784. ***************
  32785. *** 2128,2131 ****
  32786. --- 2229,2238 ----
  32787.         XFASTINT (XWINDOW (root_window)->width) = screen_width;
  32788.         XFASTINT (mini_w->width) = screen_width;
  32789.       }
  32790. + #ifdef EIGHT_BIT
  32791. +   for (i = 040; i < 0177; i++) visible[i] = 1;
  32792. + #ifdef AMIGA
  32793. +   for (i = 0240; i <= 0377; i++) visible[i] = 1;
  32794. + #endif
  32795. + #endif
  32796.   }
  32797. diff -rc --new-file /src/baseline/emacs-18.59/src/ymakefile emacs-18.59/src/ymakefile
  32798. *** /src/baseline/emacs-18.59/src/ymakefile    Tue Oct  6 14:44:28 1992
  32799. --- emacs-18.59/src/ymakefile    Thu Sep 30 20:52:04 1993
  32800. ***************
  32801. *** 18,24 ****
  32802. --- 18,32 ----
  32803.   the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.  */
  32804.   
  32805.   
  32806. + #ifdef amiga
  32807. + #undef amiga
  32808. + #endif
  32809. + #ifdef AMIGA
  32810. + dot =
  32811. + #else
  32812.   dot = .
  32813. + #endif
  32814.   /* on Xenix, replace double-dot below with $(dot)$(dot) */
  32815.   lispdir = $(dot)$(dot)/lisp/
  32816.   etcdir = $(dot)$(dot)/etc/
  32817. ***************
  32818. *** 161,167 ****
  32819.   #define LINKER gcc -nostdlib
  32820.   #else
  32821.   #define LINKER ld
  32822. ! #endif 
  32823.   #endif /* not ORDINARY_LINK */
  32824.   #endif /* no LINKER */
  32825.   
  32826. --- 169,175 ----
  32827.   #define LINKER gcc -nostdlib
  32828.   #else
  32829.   #define LINKER ld
  32830. ! #endif
  32831.   #endif /* not ORDINARY_LINK */
  32832.   #endif /* no LINKER */
  32833.   
  32834. ***************
  32835. *** 191,197 ****
  32836. --- 199,209 ----
  32837.   SHORT= shortnames
  32838.   #endif /* SHORTNAMES */
  32839.   
  32840. + #ifdef AMIGA
  32841. + CFLAGS= C_DEBUG_SWITCH def emacs $(MYCPPFLAG) C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM
  32842. + #else
  32843.   CFLAGS= C_DEBUG_SWITCH -Demacs $(MYCPPFLAG) C_SWITCH_MACHINE C_SWITCH_SYSTEM C_SWITCH_X_MACHINE C_SWITCH_X_SYSTEM
  32844. + #endif
  32845.   /* DO NOT use -R.  There is a special hack described in lastfile.c
  32846.      which is used instead.  Some initialized data areas are modified
  32847.      at initial startup, then labeled as part of the text area when
  32848. ***************
  32849. *** 258,264 ****
  32850.   GNULIB_VAR = `if [ -f LIB_GCC ] ; then echo LIB_GCC; else echo; fi`
  32851.   #endif /* __GNUC__ <= 1 */
  32852.   #else
  32853. ! GNULIB_VAR = 
  32854.   #endif
  32855.   
  32856.   #ifdef MAINTAIN_ENVIRONMENT
  32857. --- 270,276 ----
  32858.   GNULIB_VAR = `if [ -f LIB_GCC ] ; then echo LIB_GCC; else echo; fi`
  32859.   #endif /* __GNUC__ <= 1 */
  32860.   #else
  32861. ! GNULIB_VAR =
  32862.   #endif
  32863.   
  32864.   #ifdef MAINTAIN_ENVIRONMENT
  32865. ***************
  32866. *** 270,280 ****
  32867.   #define UNEXEC unexec.o
  32868.   #endif
  32869.   
  32870.   /* lastfile must follow all files
  32871.      whose initialized data areas should be dumped as pure by dump-emacs. */
  32872.   obj=    dispnew.o scroll.o xdisp.o window.o \
  32873. !     term.o cm.o $(XOBJ) \
  32874. !     emacs.o keyboard.o macros.o keymap.o sysdep.o \
  32875.       buffer.o filelock.o insdel.o marker.o \
  32876.       minibuf.o fileio.o dired.o filemode.o \
  32877.       cmds.o casefiddle.o indent.o search.o regex.o undo.o \
  32878. --- 282,300 ----
  32879.   #define UNEXEC unexec.o
  32880.   #endif
  32881.   
  32882. + termobjs= term.o cm.o
  32883. + #ifdef AMIGA
  32884. + SYSDEP= amiga_sysdep.o
  32885. + #else
  32886. + SYSDEP= sysdep.o
  32887. + #endif
  32888.   /* lastfile must follow all files
  32889.      whose initialized data areas should be dumped as pure by dump-emacs. */
  32890.   obj=    dispnew.o scroll.o xdisp.o window.o \
  32891. !     $(termobjs) $(XOBJ) \
  32892. !     emacs.o keyboard.o macros.o keymap.o $(SYSDEP) \
  32893.       buffer.o filelock.o insdel.o marker.o \
  32894.       minibuf.o fileio.o dired.o filemode.o \
  32895.       cmds.o casefiddle.o indent.o search.o regex.o undo.o \
  32896. ***************
  32897. *** 360,376 ****
  32898. --- 380,422 ----
  32899.   #ifdef CANNOT_DUMP
  32900.       mv temacs xemacs
  32901.   #else
  32902. + #ifdef AMIGA
  32903. +     -delete ${etcdir}EMACS-DATA xemacs force
  32904. +     temacs -nl -batch -l inc-vers
  32905. +     temacs -nl -batch -l loadup.el dump
  32906. +     -touch xemacs
  32907. +     -delete /temacs force
  32908. +     makelink from /temacs temacs
  32909. + #else
  32910.       ./temacs -batch -l inc-vers
  32911.       ./temacs -batch -l loadup.el dump
  32912. + #endif /* not AMIGA */
  32913.   #endif /* not CANNOT_DUMP */
  32914.   #endif /* not HAVE_SHM */
  32915.   
  32916.   ${etcdir}DOC: ${etcdir}make-docfile ${obj} ${lisp}
  32917. + #ifdef AMIGA
  32918. + REDIRECT_IN= <
  32919. +     -delete force ${etcdir}DOC
  32920. +     ${etcdir}make-docfile >${etcdir}DOC $(REDIRECT_IN) < <
  32921. + ${obj}
  32922. + ${lisp}
  32923. + ${lispdir}version.el
  32924. + ${lispdir}amiga-menu.elc ${lispdir}amiga-init.elc ${lispdir}amiga-mouse.elc
  32925. + OBJECTS_SYSTEM
  32926. + <
  32927. + #else
  32928.       rm -f ${etcdir}DOC
  32929.       ${etcdir}make-docfile ${obj} ${lisp} ${lispdir}version.el > ${etcdir}DOC
  32930. + #endif
  32931.   
  32932. + #ifdef AMIGA
  32933. + ${etcdir}make-docfile: ${etcdir}make-docfile.c
  32934. +     sc link /etc/make-docfile
  32935. + #else
  32936.   ${etcdir}make-docfile:
  32937.       cd ${etcdir}; ${MAKE} ${MFLAGS} make-docfile
  32938. + #endif
  32939.   
  32940.   /* Some systems define this to cause parallel Make-ing.  */
  32941.   #ifndef MAKE_PARALLEL
  32942. ***************
  32943. *** 378,384 ****
  32944. --- 424,453 ----
  32945.   #endif
  32946.   
  32947.   temacs: MAKE_PARALLEL $(LOCALCPP) $(SHORT) $(STARTFILES) $(OLDXMENU) ${obj} ${otherobj} OBJECTS_SYSTEM OBJECTS_MACHINE
  32948. + #ifdef AMIGA
  32949. +     slink <with <
  32950. + from ${STARTFILES} $(obj) OBJECTS_SYSTEM OBJECTS_MACHINE $(otherobj)
  32951. + to temacs
  32952. + lib LIB_STANDARD
  32953. + nodebug
  32954. + batch
  32955. + <
  32956. + #endif
  32957. + demacs: MAKE_PARALLEL $(LOCALCPP) $(SHORT) $(STARTFILES) $(OLDXMENU) ${obj} ${otherobj} OBJECTS_SYSTEM OBJECTS_MACHINE
  32958. + #ifdef AMIGA
  32959. +     slink <with <
  32960. + from ${STARTFILES} $(obj) OBJECTS_SYSTEM OBJECTS_MACHINE $(otherobj)
  32961. + to demacs
  32962. + lib LIB_STANDARD
  32963. + map ram:emacs.map,h,x
  32964. + addsym
  32965. + swidth 16
  32966. + batch
  32967. + <
  32968. + #else
  32969.       $(LD) ${STARTFLAGS} ${LDFLAGS} -o temacs ${STARTFILES} ${obj} ${otherobj} OBJECTS_SYSTEM OBJECTS_MACHINE ${LIBES}
  32970. + #endif
  32971.   
  32972.   /* These are needed for C compilation, on the systems that need them */
  32973.   #ifdef NEED_CPP
  32974. ***************
  32975. *** 460,510 ****
  32976.      it is so often changed in ways that do not require any recompilation
  32977.      and so rarely changed in ways that do require any.  */
  32978.   
  32979. ! abbrev.o : abbrev.c buffer.h commands.h config.h 
  32980. ! buffer.o : buffer.c syntax.h buffer.h commands.h window.h config.h 
  32981. ! callint.o : callint.c window.h commands.h buffer.h config.h 
  32982. ! callproc.o : callproc.c paths.h buffer.h commands.h config.h 
  32983. ! casefiddle.o : casefiddle.c syntax.h commands.h buffer.h config.h 
  32984.   cm.o : cm.c cm.h termhooks.h config.h
  32985. ! cmds.o : cmds.c syntax.h buffer.h commands.h config.h 
  32986.   crt0.o : crt0.c config.h
  32987.       $(CC) -c $(CFLAGS) C_SWITCH_ASM crt0.c
  32988.   dired.o : dired.c commands.h buffer.h config.h regex.h
  32989.   dispnew.o : dispnew.c commands.h window.h buffer.h dispextern.h termchar.h termopts.h cm.h config.h lisp.h
  32990.   doc.o : doc.c buffer.h config.h paths.h
  32991.   doprnt.o : doprnt.c
  32992. ! editfns.o : editfns.c window.h buffer.h config.h 
  32993. ! emacs.o : emacs.c commands.h config.h 
  32994.   #ifdef MAINTAIN_ENVIRONMENT
  32995.   environ.o : environ.c buffer.h commands.h config.h
  32996.   #endif /* MAINTAIN_ENVIRONMENT */
  32997. ! fileio.o : fileio.c window.h buffer.h config.h 
  32998.   filelock.o : filelock.c buffer.h paths.h config.h
  32999. ! filemode.o : filemode.c 
  33000.   indent.o : indent.c window.h indent.h buffer.h config.h termchar.h termopts.h
  33001. ! insdel.o : insdel.c window.h buffer.h config.h 
  33002. ! keyboard.o : keyboard.c termchar.h termhooks.h termopts.h buffer.h commands.h window.h macros.h config.h 
  33003. ! keymap.o : keymap.c buffer.h commands.h config.h 
  33004. ! lastfile.o : lastfile.c 
  33005.   macros.o : macros.c window.h buffer.h commands.h macros.h config.h
  33006.   malloc.o : malloc.c config.h
  33007. ! marker.o : marker.c buffer.h config.h 
  33008. ! minibuf.o : minibuf.c syntax.h window.h buffer.h commands.h config.h 
  33009.   mocklisp.o : mocklisp.c buffer.h config.h
  33010. ! process.o : process.c process.h buffer.h window.h termhooks.h termopts.h commands.h dispextern.h config.h 
  33011. ! regex.o : regex.c syntax.h buffer.h config.h regex.h 
  33012.   scroll.o : scroll.c termchar.h config.h dispextern.h termhooks.h
  33013. ! search.o : search.c regex.h commands.h buffer.h syntax.h config.h 
  33014. ! syntax.o : syntax.c syntax.h buffer.h commands.h config.h 
  33015.   sysdep.o : sysdep.c config.h dispextern.h termhooks.h termchar.h termopts.h window.h
  33016.   term.o : term.c termchar.h termhooks.h termopts.h config.h cm.h
  33017.   termcap.o : termcap.c config.h
  33018.   terminfo.o : terminfo.c config.h
  33019.   tparam.o : tparam.c config.h
  33020. ! undo.o : undo.c buffer.h commands.h config.h 
  33021.   UNEXEC : config.h getpagesize.h
  33022.   window.o : window.c indent.h commands.h window.h buffer.h config.h termchar.h
  33023. ! xdisp.o : xdisp.c macros.h commands.h indent.h buffer.h dispextern.h termchar.h window.h config.h 
  33024.   xfns.o : xfns.c xterm.h window.h config.h
  33025.   xmenu.o : xmenu.c xterm.h window.h config.h
  33026.   xterm.o : xterm.c xterm.h termhooks.h termopts.h termchar.h \
  33027. --- 529,579 ----
  33028.      it is so often changed in ways that do not require any recompilation
  33029.      and so rarely changed in ways that do require any.  */
  33030.   
  33031. ! abbrev.o : abbrev.c buffer.h commands.h config.h
  33032. ! buffer.o : buffer.c syntax.h buffer.h commands.h window.h config.h
  33033. ! callint.o : callint.c window.h commands.h buffer.h config.h
  33034. ! callproc.o : callproc.c paths.h buffer.h commands.h config.h
  33035. ! casefiddle.o : casefiddle.c syntax.h commands.h buffer.h config.h
  33036.   cm.o : cm.c cm.h termhooks.h config.h
  33037. ! cmds.o : cmds.c syntax.h buffer.h commands.h config.h
  33038.   crt0.o : crt0.c config.h
  33039.       $(CC) -c $(CFLAGS) C_SWITCH_ASM crt0.c
  33040.   dired.o : dired.c commands.h buffer.h config.h regex.h
  33041.   dispnew.o : dispnew.c commands.h window.h buffer.h dispextern.h termchar.h termopts.h cm.h config.h lisp.h
  33042.   doc.o : doc.c buffer.h config.h paths.h
  33043.   doprnt.o : doprnt.c
  33044. ! editfns.o : editfns.c window.h buffer.h config.h
  33045. ! emacs.o : emacs.c commands.h config.h
  33046.   #ifdef MAINTAIN_ENVIRONMENT
  33047.   environ.o : environ.c buffer.h commands.h config.h
  33048.   #endif /* MAINTAIN_ENVIRONMENT */
  33049. ! fileio.o : fileio.c window.h buffer.h config.h
  33050.   filelock.o : filelock.c buffer.h paths.h config.h
  33051. ! filemode.o : filemode.c
  33052.   indent.o : indent.c window.h indent.h buffer.h config.h termchar.h termopts.h
  33053. ! insdel.o : insdel.c window.h buffer.h config.h
  33054. ! keyboard.o : keyboard.c termchar.h termhooks.h termopts.h buffer.h commands.h window.h macros.h config.h
  33055. ! keymap.o : keymap.c buffer.h commands.h config.h
  33056. ! lastfile.o : lastfile.c
  33057.   macros.o : macros.c window.h buffer.h commands.h macros.h config.h
  33058.   malloc.o : malloc.c config.h
  33059. ! marker.o : marker.c buffer.h config.h
  33060. ! minibuf.o : minibuf.c syntax.h window.h buffer.h commands.h config.h
  33061.   mocklisp.o : mocklisp.c buffer.h config.h
  33062. ! process.o : process.c process.h buffer.h window.h termhooks.h termopts.h commands.h dispextern.h config.h
  33063. ! regex.o : regex.c syntax.h buffer.h config.h regex.h
  33064.   scroll.o : scroll.c termchar.h config.h dispextern.h termhooks.h
  33065. ! search.o : search.c regex.h commands.h buffer.h syntax.h config.h
  33066. ! syntax.o : syntax.c syntax.h buffer.h commands.h config.h
  33067.   sysdep.o : sysdep.c config.h dispextern.h termhooks.h termchar.h termopts.h window.h
  33068.   term.o : term.c termchar.h termhooks.h termopts.h config.h cm.h
  33069.   termcap.o : termcap.c config.h
  33070.   terminfo.o : terminfo.c config.h
  33071.   tparam.o : tparam.c config.h
  33072. ! undo.o : undo.c buffer.h commands.h config.h
  33073.   UNEXEC : config.h getpagesize.h
  33074.   window.o : window.c indent.h commands.h window.h buffer.h config.h termchar.h
  33075. ! xdisp.o : xdisp.c macros.h commands.h indent.h buffer.h dispextern.h termchar.h window.h config.h
  33076.   xfns.o : xfns.c xterm.h window.h config.h
  33077.   xmenu.o : xmenu.c xterm.h window.h config.h
  33078.   xterm.o : xterm.c xterm.h termhooks.h termopts.h termchar.h \
  33079. ***************
  33080. *** 517,529 ****
  33081.   
  33082.   /* The files of Lisp proper */
  33083.   
  33084. ! alloc.o : alloc.c window.h buffer.h config.h 
  33085. ! bytecode.o : bytecode.c buffer.h config.h 
  33086. ! data.o : data.c buffer.h config.h 
  33087.   eval.o : eval.c commands.h config.h
  33088.   fns.o : fns.c buffer.h commands.h config.h
  33089. ! print.o : print.c process.h window.h buffer.h dispextern.h termchar.h config.h 
  33090. ! lread.o : lread.c buffer.h paths.h config.h 
  33091.   
  33092.   /* System-specific programs to be made.
  33093.      OTHER_FILES, OBJECTS_SYSTEM and OBJECTS_MACHINE
  33094. --- 586,598 ----
  33095.   
  33096.   /* The files of Lisp proper */
  33097.   
  33098. ! alloc.o : alloc.c window.h buffer.h config.h
  33099. ! bytecode.o : bytecode.c buffer.h config.h
  33100. ! data.o : data.c buffer.h config.h
  33101.   eval.o : eval.c commands.h config.h
  33102.   fns.o : fns.c buffer.h commands.h config.h
  33103. ! print.o : print.c process.h window.h buffer.h dispextern.h termchar.h config.h
  33104. ! lread.o : lread.c buffer.h paths.h config.h
  33105.   
  33106.   /* System-specific programs to be made.
  33107.      OTHER_FILES, OBJECTS_SYSTEM and OBJECTS_MACHINE
  33108. ***************
  33109. *** 533,535 ****
  33110. --- 602,619 ----
  33111.   
  33112.   ${etcdir}emacstool: ${etcdir}emacstool.c
  33113.       cd ${etcdir}; ${MAKE} ${MFLAGS} emacstool
  33114. + SimpleRexx.o: SimpleRexx.c SimpleRexx.h
  33115. + amiga_clipboard.o: amiga_clipboard.c termchar.h amiga.h config.h
  33116. + amiga_dump.o: amiga_dump.c termchar.h buffer.h dispextern.h regex.h amiga.h config.h
  33117. + amiga_menu.o: amiga_menu.c amiga.h config.h
  33118. + amiga_processes.o: amiga_processes.c amiga.h config.h
  33119. + amiga_rexx.o: amiga_rexx.c SimpleRexx.h amiga.h config.h
  33120. + amiga_screen.o: amiga_screen.c termchar.h dispextern.h amiga.h config.h
  33121. + amiga_serial.o: amiga_serial.c amiga.h config.h
  33122. + amiga_sysdep.o: amiga_sysdep.c termopts.h termhooks.h termchar.h dispextern.h \
  33123. +         amiga.h config.h
  33124. + amiga_term.o: amiga_term.c termopts.h termhooks.h  termchar.h config.h
  33125. + amiga_tty.o: amiga_tty.c termhooks.h termchar.h amiga.h config.h
  33126. + amiga_malloc.o: amiga_malloc.c amiga.h config.h
  33127. +     $(CC) $(CFLAGS) parms=both amiga_malloc.c
  33128.