home *** CD-ROM | disk | FTP | other *** search
/ Usenet 1994 January / usenetsourcesnewsgroupsinfomagicjanuary1994.iso / sources / games / volume16 / nethack31 / patch2z < prev    next >
Internet Message Format  |  1993-06-16  |  63KB

  1. Path: uunet!gatech!howland.reston.ans.net!ux1.cso.uiuc.edu!uwm.edu!ogicse!news.tek.com!saab!billr
  2. From: billr@saab.CNA.TEK.COM (Bill Randle)
  3. Newsgroups: comp.sources.games
  4. Subject: v17i101:  nethack31 - display oriented dungeons & dragons (Ver. 3.1), Patch2z/33
  5. Message-ID: <1v8iut$j8a@ying.cna.tek.com>
  6. Date: 11 Jun 93 00:17:33 GMT
  7. Article-I.D.: ying.1v8iut$j8a
  8. Organization: Tektronix, Inc, Redmond, OR, USA
  9. Lines: 1412
  10. Approved: billr@saab.CNA.TEK.COM
  11. NNTP-Posting-Host: saab.cna.tek.com
  12. Xref: uunet comp.sources.games:1764
  13.  
  14. Submitted-by: izchak@linc.cis.upenn.edu (Izchak Miller)
  15. Posting-number: Volume 17, Issue 101
  16. Archive-name: nethack31/Patch2z
  17. Patch-To: nethack31: Volume 16, Issue 1-116
  18. Environment: Amiga, Atari, Mac, MS-DOS, Windows-NT, OS2, Unix, VMS, X11
  19.  
  20.  
  21.  
  22. #! /bin/sh
  23. # This is a shell archive.  Remove anything before this line, then unpack
  24. # it by saving it into a file and typing "sh file".  To overwrite existing
  25. # files, type "sh file -c".  You can also feed this as standard input via
  26. # unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  27. # will see the following message at the end:
  28. #        "End of archive 26 (of 33)."
  29. # Contents:  sys/mac/NHrsrc.hqx sys/unix/snd86unx.shr
  30. # Wrapped by billr@saab on Thu Jun 10 16:55:07 1993
  31. PATH=/bin:/usr/bin:/usr/ucb ; export PATH
  32. if test -f 'sys/mac/NHrsrc.hqx' -a "${1}" != "-c" ; then 
  33.   echo shar: Renaming existing file \"'sys/mac/NHrsrc.hqx'\" to \"'sys/mac/NHrsrc.hqx.orig'\"
  34.   mv -f 'sys/mac/NHrsrc.hqx' 'sys/mac/NHrsrc.hqx.orig'
  35. fi
  36. echo shar: Extracting \"'sys/mac/NHrsrc.hqx'\" \(32969 characters\)
  37. sed "s/^X//" >'sys/mac/NHrsrc.hqx' <<'END_OF_FILE'
  38. X(This file must be converted with BinHex 4.0)
  39. X:$%jPG%KKBfXZFR0bB`"bFh*M8P0&4!%!!!!!!!!!AUL0L3!!!!!"!!!!9[d!!&A
  40. Xp!!!(U`!!!!!0!"!!,3!`S!)!U!!!!!!!&J!i!#F!iBJB8h4[$%jPG%KKBfXZFR0
  41. XbB`m#!!!!FR0bBe*6483"!2rrrrm!!(*cFQ058d9%!3$rrrrr!!!!!!!!!!!!!!!
  42. X!!!!!!!!!U""X)J!!!!!!!&kS!!$)!6!!!3!!!!!!!!!!#lN!!!!!&3!!!!!!jJ&
  43. XF!!%!!!!!!!!!!!Zi!!!!!"8!8!"Z!2S"Z!!"!!!!!!!!!!!(e!!!!!!9!&!!EJ$
  44. Xk!EJ!!3!!!!!!!!!!"p-!!!!!&3"3!'i!qJ'i!!%!!!!!!!!!!!I5!!!!!"8!8!"
  45. XZ!2S"Z!!!!"`"#!!)!8S!m!!!!!!!!!!!!!!(6@9cFf&RC6J+!!!!(!%Z!!3"8J(
  46. X+!!!!!!!!!!!!!!C6G'&dGA0V1!S!!!!@!(`!fJ$i!BS!!!!!!3!!!!!!!%di#J!
  47. X!!"S![J!'!9!"-J!!!!!"!!!!!!!%5@jQEb!i#J!!!#)!+!!S!)`!SJ!!!!!"!!!
  48. X!!!!06R9XE#"AD@jNEhFJ)6J+!!!!2!j1G@eLCA)JEfBJDf9jFdp$6P3&+LSU+LT
  49. X-8e4$"dYPH@0[C'9)3PP8"%0SBA*$5%&5"5SU+LSU6&0843!!!#!!+!!S!8S"lJ!
  50. X!!!!!!!!!!!!,4(9ZCf9[EL"0BA!i#J!!!#!!+!!S!+`"c!!!!!!"!!!!!!!,4'P
  51. XKCfj[Fh4TBh-i#J!!!"B!!400B@-J6Q9d5'&MDb")C@a`b5mr!!!!J!!!!!!!!!!
  52. X!!!!!$rm!!!!!r`$a!I!!!!$lm!m3(`!!!!qr$`%"m!!!!2[r%"$`!!$`$lrrmI!
  53. X!$`rrqr!2!!!2%"$r[`!!!!m"!I$lm!!!!2!3m!qr!!!!$`%2!2[`!!!!rr!!$lm
  54. X!!!!!!!!!qr!!!!!!!!!2[`!!!!!!!!$r!!!!J!rrrrrrr`!!$``-$!`2m!!2`-$
  55. X!`-r2!!m-$!rr$rr`$mr`ca$``2!2$lm2!3m-m!r!qrm3(m$`$``2[rrr$2!2rrr
  56. Xlm-$!m!ra!Iqr$!c`$r!3m2[``2!2$`(m$lm-m!r!rr$!qr$`$``-$!`2[r!2`-$
  57. X!`-$lm!rrrrrrrrr`!!!!3!!!!F!ci#R`&IJ,q#AiIT!!Id"qS$j3(bJ1&!!+!!8
  58. X!!`(!Fq"rm(ri2r`rr(rmrrMrm2r`IrJrr"mq$Km!$`!(!!!!3(r`3"K!&%(H@H*
  59. X9mN[b4I*qJRp#IU*H8NiU3"C!#RrqIr"rq(rmIrjrrRrqIrjrrRrqIrjrrRrqIrj
  60. XrrRrqIri!!!%!!!!!!!!2J!!!2q!!%$r`!"`Iq!!+(rJ!#4rm!!5Ir!!#Ir`!!6r
  61. Xm!!#Ir!!`cr`!IqBB!(rb!!"rq3!!Irb!!(rb3!"rm5!!2r#3!!!rm%J!(rJN!!r
  62. Xi%J!$i!N!!!!%J!!!!N!!!!%J!!!!N!!!!!")!!!!*!!!!")!!!!+!!!!"!!2J!!
  63. X!2q!!%(r`!$arq!!q2r`!(crm!"qrrJ!2rri!"rrq!!2rrJ!arri!Irrq!2rrr!$
  64. XrraJ!rrq!!2rr`!$rrq!!rr[`!(rjq!"rq2`!2raq!"rm2`!2q"q!!q!2`!!!"q!
  65. X!!!2`!!!"q!!!!2`!!!"q!!!!2`!!!"m!!!!1!!!"!"rrrJ!3!!-!%!!#J"!!!N!
  66. X3!!)J%!!#%"!$iJJ3"r[i%BIm#"&$r!J4)ri)%*2q#""2rJJ3*ri)%"2q#"-CM!J
  67. XAr)!)&rj!#"Ir)!JAr*!!#"Im5!J6r#3)%ri5#"(q#3J3I!5)%!!#5"!!!5J3!!#
  68. XB%!!!5"!!!#J3!!!B(rrrq"rrrJ!Irrm!(rrrJ"rrrm!IrrrJ(rrrm"rrrrJIrrr
  69. Xi(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrr
  70. Xi(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrr
  71. Xi!!!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$rrr!!!!!!!!!!!!!!!!$r%"!Im!!
  72. X!!!!!!!!2!!!!m3%"!3m!!!!!!!!!$rm!!!m3%"!3m!!!!!!!!!$lm!!2!3%"!I!
  73. X!!!!!!!!!qlm!$a!3%"!I!!!!!!!!!!qlm!m"!3%"$`!!!!!!!!!!qlrr%"!3%"m
  74. X!!!!!!!!!!!qlm3%"!3%2!!!!!!!!!!!!qlm3%"!3(`!!!!!!!2m!!2qlmIrrm3m
  75. X!!!!!!!m3rrm3qlr`!!r`!!!!!!!2!3%"!3qlm!!!!!!!!!!!$a!3%"!3qlm!!!!
  76. X!!!!!!!m"!3%"!Iqlm!!!!!!!!!!2%"!3%"m!qlm!!!!!!!!!$`%"!3%2!!qlm!!
  77. X!!!!!!!$`%"!3(`!!qlm!!!!!!!!!m3%"!3m!!!qlm!!!!!!!!!m3%"!3m!!!qlm
  78. X!!!!!!!!!r`%"$r!!!!qlm!!!!!!!!!$rrr!!!!!!qlm!!!!!!!!!!!!!!!!!!!q
  79. Xlm!!!!!!!!!!!!!!!!!!!qlm!!!!!!!!!!!!!!!!!!!qlm!!!!!!!!!!!!!!!!!!
  80. X!qlm!!!!!!!!!!!!!!!!!!!qlm!!!!!!!!!!!!!!!!!!!qlm!!!!!!!!!!!!!!!!
  81. X!!!qlm!!!!!!!!!!!!!!!!!!!qr!!!!!!!!!!!!!!!!!!!!m!!!!#!!!2rrrrrrr
  82. Xrrrrrm!!!!!!!$``-$!`-$!`-$2m!!!!!!!r!`-$!`-$!`-$mm!!!!!!2$!`-$!`
  83. X-$!`-r-m!!!!!$m$!`-$!`-$!`2c-m!!!!!m-$!`-$!`-$!cmc-m!!!!2`-$!`-$
  84. Xrrr$!r-c-m!!!$``-$!`2!3%2r2rrrr!!!!r!cr$!ca!3%2r!`-$`!!!2$!qr$!c
  85. Xa!3%2$!`-m!!!$m$2Zr$!m"!3%2$!`2!!!!m-$2Zr$2%"!3(m$!c`!!!2`-$2Zrr
  86. X`%"!3m-$!m!!!$``-$2Zr!3%"!I`-$2!!!!r!`-$2Zr$rra$``-$`!!!2$2m-$rZ
  87. Xrr!cr$!`-m!!!$mm3rrmIZr$!`-$!`2!!!!m2!3%"!IZr$!`-$!c`!!!2ca!3%"r
  88. XrZr$!`-$!m!!!$`m"!3%2$2Zr$!`-$2!!!!r2%"!3(m$2Zr$!`-$`!!!2$2%"!3m
  89. X-$2Zr$!`-m!!!$m$`%"!3m-$2Zr$!`2!!!!m-$r%"!I`-$2Zr$!c`!!!2`-$2rrr
  90. X!`-$2Zr$!m!!!$``-$!`-$!`-$2Zr$2!!!!r!`-$!`-$!`-$2Zr$`!!!2$!`-$!`
  91. X-$!`-$2Zrm!!!$m$!`-$!`-$!`-$2Zr!!!!m-$!`-$!`-$!`-$2[`!!!2`-$!`-$
  92. X!`-$!`-$2m!!!$rrrrrrrrrrrrrrrrr!!!!!!$!"D!'i!lJ'5!)&%4!!!!%`!!J!
  93. X!!!!!H!$'!)S"%!3#6dX!!!!!!!S!4J"c!4#)(%0[G@aN)'j[G#"H-L"LC@0KGA0
  94. XP)&i`,L!JAM%!!!!!!!S!&!!U!$5J!J!!!!!"!!!!!!!!!!!!2rrrm#!!!"JJ"m!
  95. XB)!r`'#-2q"JLKrJB)NIm'#%Rr"JJRr`B)%rm'#!Rr"JQ-aJB,rN!'#rmJ"J[rN!
  96. XB,rNJ'#riN!!B*rK)'#Im*"JMr")B)2J*'#!!"*JJ!!*B)!!"1#!!!*JJ!!"B)!!
  97. X!1$rrrrJIrrri!!!!!!!!!!!!!!!!2rrrm$rrrrJrrrri2rrrq$rrrrJrrrri2rr
  98. Xrq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rr
  99. Xrq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq$rrrrJrrrri2rrrq"rrrrJ!!!!!!!!
  100. X!3!!!Ira$KP['AqC2jRrQIiCraPlQ6RC!2N!H3!jrrMrq!!"rr(rqIrjrrRrqIrj
  101. XrrRrqIrjrrRrqIrjrrRrq2ri!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  102. X!!!!!!!!!rrrrrrrrrrrrrrrrr`!!!2c-c-c-c-c-c-c-c-r`!!$mc-c-c-rrrmc
  103. X-c-c2m!!!r-c-c-ca!3(rc-c-cr!!!2c-rmc-m"!3%2c-c-r`!!$mc2[mc-m"!3(
  104. Xmc-c2m!!!r-cl[mc2%"!3(mc-cr!!!2c-cl[mc`%"!3r-c-r`!!$mc-cl[r!3%"!
  105. XIc-c2m!!!r-c-cl[a!3%"$mc-cr!!!2c-c-cl[a$rm"r-c-r`!!$mcrc-rl[rc-r
  106. Xmc-c2m!!!r2!Ira$l[mc-c-c-cr!!!2ca!3%"$l[mc-c-c-r`!!$mm"!3%"rl[mc
  107. X-c-c2m!!!r2%"!3(mcl[mc-c-cr!!!2c`%"!3r-cl[mc-c-r`!!$mc`%"!Ic-cl[
  108. Xmc-c2m!!!r-m3%"!Ic-cl[mc-cr!!!2c-r`%"$mc-cl[mc-r`!!$mc-crrrc-c-c
  109. Xl[mc2m!!!r-c-c-c-c-c-cl[mcr!!!2c-c-c-c-c-c-cl[mr`!!$mc-c-c-c-c-c
  110. X-cl[rm!!!r-c-c-c-c-c-c-cl[r!!!2c-c-c-c-c-c-c-clr`!!$mc-c-c-c-c-c
  111. X-c-crm!!!rrrrrrrrrrrrrrrrrr!!!!rrrrrrrrrrrrrrrrr`!!!!!!!!!!!!!!!
  112. X!!!!!!!!!!!!L!!%!!!!!!&!"4!"N!Ai%!Np,!!!!!!!'!$J!4J&mL!*H-!!!!"J
  113. X!@J"H!1J"T`!&!!!!!!!!!!!!JJ!"F!S!!!!B!%)!A!$$!GF!"3!!!!!!!!!!!)F
  114. X!!(!+!!!!'!"#!&`!``(A!!8!!!!!!!!!!!#'!!"`#J!!!"J!3J"F!--"e`!&!!!
  115. X!!!!!!!!!K3!!F!S!!!"5!!3!!!!!!'-",3"h!@F%!ePPF`!!!!!!!'-!j`"h!5%
  116. X%!Nj[!!!!!!!,!%`!9!&QL!*H-!!!!!!!$!!8!#`!0+!#!!%!!!!!!&d"+!"p!8L
  117. X!!!!!!'3!"3!!!!!!B`%Y!(F"C`3$@@9c!!!!!!!!B`$R!(F")33#6Qm!!!!!!'-
  118. X!S3"h!0X%"&&eDA3!!!!!!!X!6!"8!@D)!Pi`!!!!!!!-!"3!,!!dS!)!!3!!!!!
  119. X!A3%S!(d"5)!!!!!!GJ!'!!!!!!"M!5d!G`&R"!0CCA-!!!!!!!"M!1F!G`%K"!*
  120. X1E`!!!!!!B`#K!(F!f`3$3@aX!!!!!!!!B`"E!(F!P33%8A9TG!!!!!!!#`"-!&3
  121. X"CSJ#AM!!!!!!!!`!&!!X!$5J!J!"!!!!!!"I!5N!I`&*J!!!!!!B!%)!A!$$!GF
  122. X!"3!!!!!!!!!!!)J!!(!+!!!!K!!(!!!!!!"M!5d!G`&R"!0CCA-!!!!!!!"M!1F
  123. X!G`%K"!*1E`!!!!!!B`#K!(F!fj!!!!!!!!!!B`"E!(F!P33$3@aXG!!!!!!!B`!
  124. X9!(F!6`3%8A9TG!!!!!!!#`"-!&3"CSJ#AM!!!!!!!!`!&!!X!$5J!J!"!!!!!!"
  125. XH!5J!IJ&)J!!!!!"L!!8!!!!!!'S!q3"q!6-%!Np,!!!!!!"U!+8!IJ$I"!C$B@j
  126. XMC@`!!!!!!!S!93!k!6Z)!Pi`!!!!!!"%!&F!9!%f%!!!!!!!!!S!(!!U!$bJ!J!
  127. X"!!!!!!"N!23!K!%8J!!!!!!B!,`!QJ%E!A-!"3!!!!!!!!!!!)N!!'J+!!!!E!!
  128. X&!!!!!!"#!%d!9J#("!*25`!!!!!!3J!,!&B!433'3f&ZBf9X!!!!!!!(!$3!0`$
  129. X8L!*H-!!!!!!!4!#B!&3!c"!*4@4TG#"8CAKd!!!!!!!!#!!+!#J!+U!#!!%!!!!
  130. X!!$d!53"G!'Q!!!!!!)!!!!!!!!!!!!rrrrrrrrm!$mc-rrc-cr!2crca$mc2m!r
  131. X2[r!3r-r`$mclm3(mcr!2rrqrrrc2m!ra!I[mc-r`$r!3rlr-cr!2c`(mqrc2m!r
  132. X-rrc2[mr`$mc-c-clrr!2c-c-c-qrm!r-c-c-c2r`$rrrrrrrrr!!rrrrrrrrm!!
  133. X!#BL3!!!!!!$q!!B!!2rh!!B!#`1l!!N!!J!!!$m!!!!!!!!!!!!!!!!!!!!!!!!
  134. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$B!!!!!!!!&%%!!!!!!#P
  135. X!!!!`!!!D!!!#'%!&DeL*3!IJ183JJ%!%PF"`(!(#&!!9!"3JMm$rm!(i!!!!Fi!
  136. XJ!!!!!!!J!!!1B!%!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  137. X!!!!!!!!!!!!!!!!!F!"3L!)B"!%#J+)!"!))J!!!B!"")K0X!!!#+)!!!IL*3!@
  138. XJ+83JJ%!%P8"3&!&#&!!9!"3JMm$rm!d)!!!!*%"3![2!!!3J!`!*N!!'e6RX6#!
  139. X!"FZF,l[ZF!!1Flc[Iqk2$'%BZmlc[aM'-ImD!J3!%"JK--!!!!!#!!!!!+QZq45
  140. XK*!T3V9c[JHT4&%8k)*4m3N3PSZa!!NNJ"@YBL8!&S#P%))"!"*9!8"3"3K3!&3!
  141. X8))r!rr!6!$i!0R4F3!Am)")D)!5!#5$dhpDbNUN!"MaLD%!aL##4M'-B`K'+$+'
  142. XmaM'-54M&83d0!33!%#!J%%!!!!!#!!!!!+V4q!!!'!!!!#-B!S!!!!"'*)+L3!!
  143. X!-c)!!US!!!(iL8!&S#P%))"!"*9!8"3"3K3!&3!8))r!rr!M!")!#DaL)$hm2j%
  144. XU*!bi18#9K9,8)A%!#QK#VhJaM9p"l'-)`K#+$5&DaM'-#4M%N45)!(qFph2p-Re
  145. XRHICraM@-IUJ38jlh[FjcNQ-B1SjcSaM',ZILjmk0Uc*!!99J"@YBq8(p[qPm))"
  146. X!"29rhrIrIjAi&IJ9q)r!rrGP"mMmL+rLlF[m)(c))(0m+IkAMlP))Dr2LUL0)-4
  147. X1L)!LVrd)qp2k$L%Cap(cL4M%LL5)!)aM'+4M0'ZBaMQ#4M9843339'-BaM'-8Rr
  148. Xr9p'-BaM'0B%m50'1CZb2rKPTN!!"ripq-E'2arrrrrqA-``c$#"q"rmRrLIrrrr
  149. XiT3+&&)LXBaV,r$q4+$q)I%!1N!#&&E8K)3!6+32`a*&iAd6dB`M#%BU0)4M'%BK
  150. X*'05%4%J!M'%IT'-mDaM'-(*'054)U""hiaM'(rr5BaKqNBaM'-BdKq4)dBaL!3J
  151. X%)I*0DeMj5rfpq$a!!N!%pIIrGrprJIP"r4Ai6rrm#+-#L45)G'-Gdr`J%KJJF(p
  152. X!$T!!!&Db%J%!%LSL+-54###!K'-B`K'+M+%BaK'-549Y4)4)!*aK'#4M-QXBaM!
  153. X+69988+J4*#FjcK#%%Q-B8T'-CcM'0BNZ5G'FBrmB"%"b5!(iL8SPT3!!3!*!"*3
  154. X8!93"3!!K3#88)%rrr!LM!T-8L#49%&2m2i!)*)!iJ!#3!)!k63`!%'(2h#FiMR8
  155. X!"(4mlhi1Mh4r',S1LiML4L6q12a[R[HMic&V&hR`mE5+LrkS$L2DeVA[Hp*M(pl
  156. XZFjVAZFla*%E1E')!i!"`DC9V@)P+*D8!!%!#3!58&!&8!8!!)8!P&#"2rr`(E3+
  157. XqjdKcYZ!pr#"rq5!!!)!!m!!3!!!!%#!!!!!!!!%!!!!!!!!!!!!!!!!"!!!!!!!
  158. X!)!!!!!!!3#!!!%!J!!!!!%"`!R!!!!#!!!!!!!!!!!!!J!3!"N!!!!!!!!!!!!!
  159. X"q)P+*D8!!%!#3!58&!&8!8!!)8!P&#"2rr`!)!!!"!!!!!!Krq!!#5!!!!!!!!!
  160. X!!!!!)!!!!!!!!!)!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$J-!!!%!J!!!!!i!
  161. X!"!!!!!%!!!!!!!!!!!!(!!!!!B!!!!!!!!!!!!9V@)P+*qF!!%!#3!58(!(F!F!
  162. X!)8!P&#"2rr`!!!!!"!!!!!"!!!!!#-!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  163. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  164. X!!!%!"!!*!!i!%`!B!"S!(3!J!#8!+J!X!$%!-J!f!$X!23"#!%F!6!"4!&B!@`"
  165. XJ!'8!CJ"S!'X!F!"c!(J!I3##!)F!M!#4!*B!Q`#J!+8!U!#Y!,)!Y`#m!-%!aJ$
  166. X,!0!!e3$D!0m!j!$T!1i!m`$i!2d!r`%$!38"#!%1!4!"&3%D!4m"*!%T!5d"-J%
  167. Xh!6J"1`&!!8)"4`&-!9%"9J&E!@!"C3&T!@i"F`&i!Ad"JJ'(!BS"L`'1!C-"N`'
  168. XB!Cd"SJ'R!D`"X3'f!EX"`!(&!FS"c3(3!G)"e`(F!H%"jJ(V!I!"p3(k!Im#"!)
  169. X*!Ji#%`)B!Kd#)J)R!L`#-3)c!MJ#23*#!NF#5`*2!P3#@3*H!Q3#DJ*V!R!#G3*
  170. Xk!Rm#K!+&!SN#M3+5!TF#Q`+J!U-#U!+Y!V)#YJ+k!Vd#``,*!X`#dJ,B!YX#h`,
  171. XM!ZF#l3,c![F#r3-$!`N$$`-9!aX$(`-L!b8$+3-[!c8$13-m!d)$5!0,!di$9!0
  172. XD!em$C30U!fm$G30k!i!$K31+!im$P!1C!jm$T31V!l%$YJ1j!l`$[`2$!mJ$c32
  173. X4!pB$e`2F!q!$j!2R!qd!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!
  174. X'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'"JB#"J%'!!B!"J!'!!B#"J%
  175. X'!JB!"J!'!3B!"J)'!3B!"J)'!!B!"J!'!!B!"J!'!!B!"J)'!3B""J!'!3B!"J!
  176. X'!!B!"J!'!!B!"J!'!!B!"J%'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!
  177. X'!!B!"J)'!3B#"J%'!!B""J!'!!B!"J!'!!B""J!'!!B#"J!'!!B""J!'!!B!"J!
  178. X'!!B!"J!'!3B!"J!'!!B!"J!'!!B#"J)'!3B!"J!!!!B!"J!'!!B!"J!'!!B!"J!
  179. X'!!B!"J%'!3B""J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!'!!B!"J!
  180. X'!JB!"J!'!!B!"J%'!3B!"J!'!!B!"J!'!`B!"J!'!!B!"J!'!`B!"J!'!!B!"J!
  181. X'!!B#"J!'!!B!"J!'!!B$"J!'!!B$"J!'!!B$"J)'!JB#"J!'!!B#"J!'!!B!"J!
  182. X'!!B!"J)'!`B$"J)'!!B!"J!'!`B!"J!'!!B$"J!'!!B!"J!'!!B!"J!'!!B!"J!
  183. X'!!B!"J!'!!B!"J!'!!B!"J!'!3B""J-'!!B!"J!'!3B!"J)'!!B!"J!'!3B!"[r
  184. Xr!!!,hT!!!!!!!2m!"`!!rrd!"`!2"18!$!!$!!!!3J!!!!!!!!!!!!!!!!!!!!!
  185. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!$J!!!!
  186. X!!!!!!!!!!!!'J!!!!!!!9DY@)P!"q!j4#"!#!!L+F!F!F!(""3!!T!!+#"$q!rr
  187. Xi!!!!!!!!!!!!!!!!!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  188. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"84!!!!!!!T3!!!-!!!,!!!
  189. X!))!!!!(q)P!"D!T4#"!#!!L+8!8!8!&""3!!T!!+#"$q!rri!!!!!!!!!!!!!m!
  190. X!!#!!!!TJ!!!3!!`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!F(!!!!!!!!!
  191. X!!!!!!!!!!!!!(!!!!!!'!!!!!%5!!!!!!!!!!!!3!!!!!!!!))!!9DY@)P!"D!T
  192. X4#"!#!!L+8!8!8!&""3!!T!!+#"$q!rri!!!!!!!i!"J!p#!!!#!!!!f3!!$915a
  193. X5)!!#jFiAcIFi!!(!1mlhrZM`aK',[1mlmBaM(mJ5!)%!"!B)6!!!!!!!!!!!!#T
  194. XVJ#)!L3%!J+Fli(X!JL!1L!dI%%L%f,h%!#++!!!"rL*3!@J+83J3!J!)LP!&!&!
  195. X"338!!+3!#JJ3rJ2rq!li2J!!%FiJ!I`J!#!J!`!j)(hIeV*5U!!$(M%d%"M%##)
  196. XJ4M'-)4LJbKZ-BaM%NBaM%-J9!%%!"!J)6$!!!!!!J!!!!#Ud9%8S53+85eM'!+5
  197. X844&4L"#SN!#4#@M'*!!NNJ"9UeBL8!&S#P%)%!)!#)T3"3"3!8%&!!#N!!S)%2i
  198. X$rrJ45#)!'j)a)!Am)!4-)!5!+8p%e9,5BA%!"43K9#!Ba"!3,dBaM#%)S0)9c'-
  199. XB`*'-Ba$%')!"!!3)#!33!!!!!)!!!!!U"%!!!!B!!!!)aJ#J!!!!%BN4q*!!!!!
  200. X-aL!!##!!!!(q)P!"D!T4#"!#!!L+8!8!8!&""3!!T!!+#"$q!rrlF8!3!#3k-4!
  201. X&r$mLNL3%J#Rr4)8ae#&a!!8d*THm*dDRb&$(d)`K#+$L%DaM'-#4M&844"!!(qF
  202. Xph2p-RhRHICh4M@-IUJ3Ljlh[FjcNQ-B1SjcSaM',N!")ZI1MDXBN!"C+@P@V9Mj
  203. X3IfrkA`J3!J!)qPrprprrIq8rJ+Ii#Rm3rJ2rr**(b2a%4M&i(I`J)9)J5cJJ$d5
  204. X2Q)JKVm!*9%(iBNM'`!5@rM#2[6qJ`K'FI4miNBa)SN)3!#-BaLNBc4V'-BjLNBe
  205. X9%8N%)aM'-BaM&*M(eIaM'-BaMARr%M4MQEh%rqQDT3!"rq2IM'aMmIrrrrrrLmB
  206. X`B-B-%"r!Ira(riMrrrrrr**#K54%4r'1kr`rqM!rX(`J$d5&&93K)3q*P)%3BNL
  207. Xm*mL@aM#-)4LJiK'-B4L%NBa84%)3!#-B4qNBcKV'-BaFNBe*%LS%)rM'-BIrp*r
  208. Xq&k4M'-BaM4")%M4M')!)J%%V3Y@V9Mj5rfpq$a!!)J!)qRlrqprrIq!rP!Ip#Rm
  209. X)rrrm!h&#L54%4M'0Dr`J*"%J5(iJ$d3!&E+K!3!4&3%3BNL%%"!AaM#-)4LSdK'
  210. X-B4L%NBeL5%%3!#-B4JNBc4V'-B`#NBe*&#S%)`M'-B3K"*M'&+4M'-BaM4**%M4
  211. XM'2r`J%*r3S!"rL*5L@P!!"!!)J!)LJ+!#P!"3!!%&!"&#JJ)rrrm!"&#N54%4LU
  212. X1kr`r)2%NX(fJ$d5!9V%5!""4&K%8BNL+L##3!%BaM#%BU-S4M'%Ba*&@iNK"%!!
  213. XR'-BT'-bDaM'-)T0994JU"'FCcR1-B45BaK@NBaR1-Be55j*dCaL!%3!%#U99UeB
  214. XL8SPT3!!3!#)!#)S#J!T3!8!!""3!43S)#2rrr!!43U-Na$SUL#[m)!F3`!!iB!"
  215. X%J$T1NJ!3B1IZ%ja(-S!!MdI1pq$SpdIaLk$SZ)iNBNr!N!"r'qFpb2M-@XAHI"a
  216. XY)U,rUJ1DjV@YFjlNQ-IZZjcQYHjc[%N4XjXBJ!i!$`TD!!(q)P+*D8!!%!!L!!L
  217. X+!S!+8!&!!!38!%8+#!Mrrr`!&N+qad)4fh!Grq$i%!!!!#!!I3!3!!`!%#!!!!!
  218. X!!!#!!!!!!!!!!!!!!!!!3!!!!!!!F2!!!!!!!"!)!!!3#!!!!!!3(!%!!!!!)!!
  219. X!!!!!!!!!!#!"!!%3!!!!!!!!!!!!9DY@)P+*D8!!%!!L!!L+!S!+8!&!!!38!%8
  220. X+#!Mrrr`!%!!!"!!3!!!4q!!!%!!!!!!!!!!!!!!!)!!!!!!!!!%!!!!!!!!!!!!
  221. X!!!!!)!!!!!!!!!!!!!!!!4!)!!!3#!!!!!%3!!%!!!!!)!!!!!!!!!!!!#!!!!(
  222. XJ!!!!!!!!!!!!!!(q)P+*D8!!%!!L!!L+!S!+8!&!!!38!%8+#!Mrrr`!!!!!"!!
  223. Xi!!!3!!!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  224. X!!!!!!1!`!!!!!!!!!!$J!!)!!!!!3!!!!!!!!!!!!F!!!!!!!!!!!!!!!!!!9DY
  225. X@)P+*qF!!%!!L!!L+!i!1F!(!!!38!%8+#!Mrrr`!!!!!!!!!!!!!!!!!%!!!!!!
  226. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  227. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!"!!*!!i!%`!C!"S!(3!J!#8!+J!X!$%
  228. X!-J!h!$`!2J"$!%J!63"5!&F!A!"K!'B!C`"T!'d!FJ"f!(X!J3#'!)X!N!!!P3#
  229. XD!*m!T!#T!+`!X3#f!,X!`!$&!-S!c`$8!0N!hJ$M!1J!l3$b!2F!r!%"!33"#3%
  230. X-!4%"'!%D!4m"*!%T!5i"-`%h!6`"33&#!88"5J&-!9%"9J&E!@!"C3&U!@m"F`&
  231. Xi!Ad"JJ'(!B`"N3'8!C8"Q!'G!Cd"SJ'R!D`"X3'f!EX"`!(&!FS"c`(8!GF"fJ(
  232. XF!H%"jJ(V!I!"p3(k!Im#"!)*!Ji#%`)B!Kd#)J)R!L`#-3)f!MX#23*#!NF#6!*
  233. X4!PB#@`*J!Q8#DJ*`!RB#G`*m!S%#L!+2!TB#P`+E!Tm#T!+T!Ud#XJ+e!VS#[`,
  234. X%!XJ#c!,3!YF#hJ,L!ZN#m!,d![N#rJ-$!`S$%3-@!ad$*!-V!c)$130!!d8$530
  235. X0!e)$@30J!f3$D!0[!hB$HJ0q!i8$L`13!!19!jS$R`1P!kS$X31f!lX$`!2&!mS
  236. X$c`29!pX$i!2P!qJ$k`2[!r-$q!2p"!%%"J3("!`%%!38""J%'!3I!!F!"`!(!!F
  237. X!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F!"`!(!!F
  238. X!"`!(!!F!"`!(!`F#"`%(!3F""`!(!`F#"`)(!3F""`)(!3F$"`%(!3F#"`%(!3F
  239. X""`%(!3F""`%(!3F$"`)(!3F""`)(!3F!"`%(!3F""`%(!3F""`%(!3F#"`%(!3F
  240. X""`%(!3F""`%(!3F""`%(!3F""`%(!3F""`%(!3F#"`%(!JF""`!(!`F""`%(!3F
  241. X""`%(!JF""`%(!`F""`%(!JF""`%(!3F""`%(!3F""`%(!3F""`%(!3F""`%(!JF
  242. X$"`)(!3F!!!%(!3F""`%(!3F""`%(!3F""`%(!3F#"`)(!JF""`%(!3F""`%(!3F
  243. X""`%(!3F""`%(!3F""`%(!3F""`%(!3F""`-(!3F""`%(!3F""`%(!3F""`%(!3F
  244. X""`-(!3F""`!(!!F!"`-(!!F!"`!(!!F!"`!(!JF!"`!(!!F!"`!(!`F!"`!(!`F
  245. X!"`!(!`F#"`)(!JF!"`!(!JF!"`!(!!F!"`!(!!F#"`-(!`F#"`!(!!F!"`-(!!F
  246. X!"`!(!`F!"`%(!3F""`%(!3F""`%(!!F""`%(!3F""`%(!3F""`%(!3F""`)(!JF
  247. X$"`!(!3F""`%(!3F$"`%(!!F!"`%(!!%!"rrr!!!!3J$`!*F!!!!!!!!!!!!!!!!
  248. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!3!*!!",L3!-!!"
  249. X,M!!!!"B!#PPj@fYFG9CS9fpBE&0L9'T9EP)X!!!!&J!+@9PE5ea99NKAEeK-8d*
  250. X85P918L`!!!"#B!!!Q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  251. X!!!!!!!!!!!!!!!!!!3!"!!N!!$J*!!`!!$J-!!!)`T!!!!!!!1m!#J!!rrB!#J!
  252. X-!fF!#J!#!!!!0!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  253. X!!!!!!!!!!!!!!!!$J%d!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"q"`!!
  254. X!!!!!!(!F"`"`!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  255. X!!!!!!!!!!!!!!!!!!!!!!!!!!&4!PP+!!!'!!!!!!!!!!!!!!!!!!!!!!!!!!U!
  256. X!!!!!&S&!!!!!!)!!8"3&!&!!!!!!!!!!!!!&%!$!`!!!J!!!!!!!!!!!!!!!!!!
  257. X!!!!!!!!!!!!!!FB!!!!!!!!!!!!!!!!!!!1!!i!!!!N)&N#4!C!!8N3&*%"-!$J
  258. X!!H(J!!!!!!!!!!!!&S&1!!!!$3!!8"3&!&!!!99!!!!22!$IZIdP*3!!ZAI&mhh
  259. X1!!'1%mlRqk--BJjGjhRIM'$'2d+!JJ"!`K-B!!!!"!!!!!90)4hjG DB%+TQf
  260. XN+TT#UI*$4!pb%KH,3$jfS!#)-rq@q9%!!+!*!!"AP!8!8!!#PN!L3"r$q09@58B
  261. X5%!&(L)d%"M%%%P%5-C4%B`bM(Q-BaL5-B-BM)d"#!%%#!3J!!!!%!!!!"9BK)aQ
  262. X-3!!!!!!!!!!!!!!!8Z4"eBh-bY`%8)J%*&5*+AE2B)!d!"%%J&cf"B(B!!+UL&!
  263. X2Rm-)Mp*3JKq3!!&AS#M'Vk'DU-)a%)`dLV@-BaJ5-95P&)J!EQGZIYbpZERY
  264. Xr-B-Cp8"bS4@-AGhGfCQEpZCQCTQC693lpBdY#UJq8*UN3[b8L8EXB,j)S"1iK-h
  265. X$r2m,B!!!!)S`Am-)K6Qj8K*mmN86T"m*ca!%UU[3Mh6r$L*0BqMja)U9%)N5!!C
  266. XQC5C66*QCR)8U9+NS)(+KeBaQCQCQCQ95QCQCQCP"6NIeYFd+L!MmU"q"*+4*GUr
  267. XJb9NrS89*IAm0`pb3!!!!2`B`rm-)J"4Q)K83!N8JIKL5)3[T+[i`M%4MM5)-i`M
  268. X3*)U++*%5!"jLI5C6M*QCQ'8U9%P&32rK%iaQCQCMrre5QCQCQCN"9$[[M5c)!$k
  269. X3!-UN3[bNL4DS%8pU)U%j8J8"hAj8rr`!!)S`Im-)!&5Q8K!3"%9%44L5)J33*dB
  270. XaP%4MM+)-i`V+*)N+4*%+!#CQB5C66*QCQ"8N++Q&3)aM%iaQCQCQ)L&5QCQCQCN
  271. X!j)A&LK)3!"%3L!3N*+8T&UJ+5%TL38)T"3"9!&5!!!!)8LqI``L!14Q*)!%-1IZ
  272. X%ja(-S!%34mlR`k0dIJaG"dA%F3T%R`Sr(jRC(P-XQ@jiiZ3T&r9!M&haFjhGhGR
  273. XCR9+@CQChG`"24!@aiH!!!4pb[rmR@qN@Z"XqXD""!q5(!&8!8q!!!!!Kk*r$q!!
  274. X3!!$!!3!!!!!!!!!J!!i!!!!!!!!!!!!"!!!!!!!"KJ!!!!!%!J!!#"!!!!!"!i!
  275. X!#!!!!!!!#!!!!!!!!!!!!!!i!!!!!!!!!!!!!!3!!"q!!!!!!!%!!!!!9`"`!!!
  276. X!!!!J(ri!!!!!!!!#!!!!!!!!!%!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"J-!!!
  277. X)%!!!!!B!!!!3!!!!!!!3!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!!!!!!!!!!!J!
  278. X!!!"`!!!!!!!!!F!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  279. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!3!#3!1!"B!(3!
  280. XH!#%!*!!T!#i!-!!d!$8!13!q!%!!43"+!%m!9!"C!&i!B`"S!'N!D`"Z!(-!GJ"
  281. Xk!)%!KJ#,!*!!!*8!Q3#G!+)!T`#S!+d!XJ#f!,d!`J$(!-`!d3$@!0X!i!$P!1S
  282. X!m3$f!2X!r`%"!38""`%+!4!"%J%@!4S"(J%L!5B"+J%Z!6)"0!%h!6X"23&%!8J
  283. X"6!&3!93"@!&F!9m"B`&S!@m"G!&i!A`"I`'!!B-"L!')!Bd"NJ'A!CX"S!'P!DS
  284. X"VJ'b!EB"ZJ'q!F)"aJ(+!Fi"dJ(@!GJ"fJ(G!H!"j!(S!H`"m!(d!IJ"r!)!!J3
  285. X##!),!Jm#&!)C!Ki#)`)S!Ld#03)p!N8#4`*+!Nm#9`*H!Q-#D!*X!R!#G3*k!Ri
  286. X#J`+*!Si#N3+9!TS#S3+S!Ui#XJ+c!VF#[J,"!XB#b`,4!Y8#f3,I!Z8#k3,[![8
  287. X#r!-!!`B$#J-1!a!$%J-A!ai$)`-V!bX$+`-V!bX$+`-V!bX$+`-V!bX$+`-V!bX
  288. X$+`-V!bX$+`-V!bX$+`-a!cF$2J!!!!!!!!!!!!!!!2rrrrrrr`B'rrrrrrrr!!$
  289. Xrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr!!Irrrrrrrm$!`%$!38""`!'!!N
  290. X!#!%$!!3!"!%(!!B""!!&!3-""J!'!3B!"J!'!!B!"J!'!!B!"J!'!J3""!%&!!B
  291. X""3%'!!J""`!'!!B!"J!&!!8!"J!'!3-!"J!'!!8!#!!'!!B!"J!'!!B!"J!'!!B
  292. X!"J!)!!B!"J!&!33""J%%!!3!"J!$!!8!"3!&!!8!"3!%!!8!"3!$!!3!"3!$!!J
  293. X!"3!&!!8!"3!&!!8!"!!&!!B!#!!'!!B!"3!%!!)!"!!'!!!!"J%(!!B!"3!'!!B
  294. X!"J!&!!8!"3!&!!8!"3!&!!8!"3!&!!8!!`!$!!3!"!!&!!8!"3!&!!8!"3!&!!8
  295. X!"3!&!!3!"3!'!!B!"J!'!!B!"J!*!!N!#3%%!!3!"J!*!!F"#J!'!!8!"3!'!!B
  296. X!"3!'!!F$#!)&!38!"3!)!3N!"J%'!3-!"3!)!38!"J%(!!J!#!%)!!B!"`-(!!B
  297. X!#3!)!!8!"`%(!JF""!%%!!B!#!!'!!Rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr
  298. Xrrrrrrrrrrrrrrrrrrrrr!!B!"J!(!!!!!!XQN!!!!!!!l`!2!!$rp!!2!!m%Q3!
  299. X-!!-!!3!q!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  300. X!!!!!!!!!!!!!!!!!!!!!!!"`!6)!!!!!"J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  301. X"9!!!!!!!(i$J!!!!!!!!!!!!!!i!1!!!!!!!!!!!!!!!"3!!!!!!!!!!!!!!!!!
  302. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!SL!*
  303. X-NN!!!!N!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!"D!S!!!!!!!!!!1I1!
  304. X+!#J!!!!!!!!!!2!!!!8!"!!!-!!!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  305. X!!!!!"``!!!!!!!!!!!!!!!!!!!!!!!F!!)J!!!!%)3$C!)JJ'3D*"!0%JJ%!!!!
  306. X!!!!!!!!!!!&8!!!!!!!@r+!!!!!!$!!!#N5J#J!S!!!*5S!!!`(l`!!&d8jqB8N
  307. XJ!!6%lm&qGqmm!!$`!)qHmrpk'$$#$LpmpmprKJ`'-Id&!%#!!J-%%``!!!!!!J!
  308. X!!!!+Q4"alq,d+"+9CJ%%8UEE%)T9L%8VX!ai!mi!!(4D!(jk!!!4!-rrPX5RJ!!
  309. X%J!L!!!TFS!S!+!!!%Nb!"%B"r#r`"GIeNT&)`!!*,4#$3)!``J!"#H#)BBS3KKJ
  310. Xa3ai`````L)B-"M%-KS!JJ!)%"!%%!!!!!!)!!!!!#UB3)KKM$#!!!!!!!!!!!!!
  311. X!!!!!!8N5K!94(KiQi!#JK93!#J!N84EdU%!!!!!4!#!+8+!+!#J!!"+9!%!-!I`
  312. XS%!@#P*5JKr)!#KB4"8%!8-)%%3S45'#'%))B-N+Y-----!L'$%94&)3!$[1HlRf
  313. Xh&XeRHIGh4M%BaqU!+&))8``ZFjcR1FjcT5XjcR1M'-9,N!#"k9%K)59!!+#-!)5
  314. XI4")4&T5`,Z1NJ"%!)!T3TrS!+1i!!!!3T&rer#J3"Br-D%#%`J!5&"-*II"23dJ
  315. X)&1P2S)B3JKJd3Nd`````#)8558S84!!4M'-8MP-R-jM'1)T'-4M%+S!S8JK6$$'
  316. X-BaM'-BaP,-BaM'-Ba693HrP5A-bN3"%JP95)4%4a%ADAX$%84)!MXP!+8+3EJ1m
  317. X4!!!!!44rrI`S%!@&"K#JK5qI%K3JN3-)N!$#%q3P+LKJKpkIq$K#$,$p$mm)K4+
  318. XSLL4%!!q-)a5-8dBM'-B`JNBUT8453%5+$dX-,h[Hpm)aM'8SaM'-BaM%"6L(q9&
  319. X5d)!"qIbN!r!r4*!!N8D@-#m8b2`K6&#Edlpiri-4!!!!IJarqI`S%!@!"5d8K!)
  320. X!)K4!B3-)N!#q)!*&+LKJKK#''$4#$,$"$3#)K++T4%3N!"'-)r5-8iBM'-B`FN9
  321. X+SN5+J%5+#%X--BaM'-2rrq8SaM'-BaM%"4#(p9$Fd)!!)L$&9)K%44%4GTIS8I9
  322. X3KN%!L5M5#8["larri!!#$%2jr#J3"B!&8`L%!J!L&)"rJ`N3JK!%42IiB)B3KK`
  323. Xb3Ja``3b!L)5K%84%*!!4M#-%M&0')aM'-!T&4%9&#S$rrJK($$'-BaM#%)3P+-B
  324. XaM'-Ba!83Hr23dXb!!%)JK!#%K%85%4D8#&%'8B9"-ST2mrP+IbN3!!!!%44'(r`
  325. XS%!8!&C-85!!!358)J8-*%)3,k!)%'''+%)BF-8)-F-%X8)L%34)NK"3!%BaM&)a
  326. X6*L-BaM#+6)4)aJU!J`BB4``aM'-BaM'-C5M'-BaR1F`&83AK85%K!!(m)B98!!4
  327. X&*&%@R!54&&'!J8d&)!!"5J!T%3!!!!#N5!(m+"!&J!k-iNJ!)-$(p`%mm3mj4""
  328. X"a"qHmr"k'p$q$#p!p#m)H%%5*2`8IircRZ4m8aBM&hR`FE5%5,rUJ)-&lm,cch[
  329. XHplR1Fk8SZFjcQYDd!lk%!ABH(J!!K$ji!rrNHXr4&S!-cZZ1J)%"r*!!!!&+!#M
  330. XZ!!!!!%2!!I`[m!8!"!!!-!!J!!!!!!!!!!"!!!!!!!!!!!!!!!!!!!!)!!!!!!!
  331. X!"J`!!!!!!!J#!!!!3#!!!!!!"!F!!!"!!!!!!!!!%!!!!!!!!!!!!!!"!(J!!!!
  332. X!!!!!!!&8!!"!!!!@J!!!!!!!!3!!!!!"5J!S!!!!!!!!3!!(i!!&!!!!!!!!3!!
  333. X!!!!!!!!!J!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!#)!J!!!%!J!!!!!%3
  334. X!!!!!)!!!!!!!!#!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!J!!!&S!!!!!!!!%
  335. X!!!!!!FS!+!!!!!!!"%!!!!!!"3!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  336. X!!!!!!!!!!!!!!!!!!!!!F!`!!!!!!!!!!!!i!!!!!%!!!!!!!!!!!!!!!!!!!!!
  337. X!!!!!!!!!!!!!!!!!!93!!!!!!"q!!!!!!!!#!!!!!!!1!$J!!!!!!!1!!!!!!!8
  338. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
  339. X!!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!3!#`!3!"F!(`!J!#-!*J!X!$%!-`!i!$N
  340. X!2J"%!%B!6!"5!&N!A`"P!'X!F3"h!(J!HJ"q!)-!K`#0!*8!R!#L!+J!VJ#c!,J
  341. X![J$%!-8!b`$4!0B!h3$M!1N!l`$e!2X"!3%)!3i"&3%H!5-"+!%Y!5m"0!%f!6N
  342. X"33&$!8J"63&5!9F"A!&J!@8"DJ&X!@m"G!&f!Am"K!'*!Bi"N`'B!Cd"S3'Q!DX
  343. X"Y!'j!Ei"``('!FF"bJ(3!G!"e`(H!H3"k3([!I8"q`)!!J8##J)2!K3#'3)H!L-
  344. X#+!)Y!M)#0!)f!MN#2!*"!NB#5`*3!P8#@J*I!Q3#D3*Z!R%#G3*k!S!#KJ+-!T)
  345. X#Q3+K!UN#XJ+d!VF#[3,(!Xm#eJ,E!Ym#i`,S!Zm#p!,k!`%$"J-*!`i$%`-E!b3
  346. X$+`-`!c%$0J-q!d%$4`01!e3$@30H!f8$E!0a!hJ$I`1)!i`$N`1B!jd$R`1K!kB
  347. X$V31b!lm$[`1r!lm$[`1r!lm$[`1r!lm$[`1r!lm$[`1r!lm$[`1r!lm$[`1r!m8
  348. X$b`29!!$rr`!!!!!!!!!!rrrrrrrr#!Mrrrrrrrm!!2rrrrrrrrrrrrrrrrrrrrr
  349. Xrrrrrrrrrrrrrrrrrrrrrrrrrr`3%!3-""3%*!3F"#3!*!3-""3%&!3J""`%%!3F
  350. X"!`%(!3J$#!%)!3J"#!%)!3J"#!%)!3J"!`%%!3B""`%'!3J"#J%*!3J"#!%)!3F
  351. X""`%)!3J#"3!(!3J""`%*!3J"#!%)!3J"#!%)!!J"#!%*!3X""`%(!3F""!%(!33
  352. X""!!)!33""`%(!3F""`%(!3B""`%(!38""J%(!38"#`%(!3F""`%(!3B""`%'!3F
  353. X""`%,!3F""`%(!38"!`%&!3J!!!%*!3N"#!%(!3J"#!%)!3F""`%(!3F""`%(!3F
  354. X""`%(!3F""`)&!38""3%&!3F""`%(!3F""`%(!3F""`%(!3F""3%'!3F"#!%)!3J
  355. X"#!%*!3S"#J%,!33""3%)!3`!#!!,!3F""J%'!3F"#3%(!3J"#3)+!38!"J!'!3S
  356. X"#`!(!3J#"!%(!3S""3%)!3N"#!%)!JS!#!%*!JN"#!--!3X""J%*!3F""`%%!33
  357. X""`%*!3J"$rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrm
  358. X##3)*!!Uff`!!!%3!!!!!!!!!!!!)!!`!HJ""!(S!$!!)!!!!!!!!!!!!!!!!!!!
  359. X!!!!!!!J!$!"q!(m!IJ!-!!J!!!!!!!!!!!!!!!F!#3!!!%3!!!!!!!!!!!!!!!!
  360. X!!!!!!!!"`!&!!8!(F!)J!8!!J!!!!!!!!!!!!!!!!!!!!!!!!!(!!F!"`!I`!q!
  361. X"`!#!!!N!#!!!!%3!!!!!!!!!!!!!%!!`!&i!JJ"H!$!!%!!!!!!!!!!!!!!!!!!
  362. X!!!!!!!!3!$!!IJ$q!(i!-!!3!!!!!!!!!!!!!!J!"J!!!%3!!!!!!!!!!!!!!!!
  363. X!!!!!!!!!!!!3!#N!&`!*!!N!(`!!!!!!!!!!!!!!!!!!!!!!!!!!!"!!13!I!!m
  364. X!$`!I!!X!#`!!!%3!!!!!!!!!!!!!!!!!!!!!!!!!!!J!P!$S!*!!!*!!!2J!!!!
  365. X!!!!!!!!!!!!!!!!!!!!!!!!)!*`!q!$`!2!!q!!!#`!%!!!!42J!N!!!N!!!k!#
  366. X8!!J!!!!!!!!!!!!!!!!!!!!!!!!!!!$i!2!!m!$i!*`!#!!!!!!!!!!!!!!!!!!
  367. X!!!!!!!!!!!!%!!3!!!"%!!!!!!r`#"!)%!J3#"!)%!J3#"!)%!J3$r!!!!!!!!!
  368. X!!!r`(rJB'"JB'"JB'"JB'"JB'"JB'"JIq!r`!!!!!!!(!!F!!!"%!3!#J!4!$Z!
  369. X#J!+!!i!!!!!!!!!!!!!!!!!!!!!!!!!"!!1!"m!2i!1!!i!$J!!!!!!!!!!!!!!
  370. X!!!!!!!!!!!!'!!F!!!"%!"m!#3!*!"F!+3!3!!!!!!!!!!!!!!!!!!!!!!!!!!!
  371. X!(`!2!!m!(`!j!"!!!!!!!!!!!!!!!!!!!!!!!!!!!!!%!!X!!!!3$djPG%KKBfX
  372. XJ9fPZC'phF`!!!#!!-!!3!8)"l3!%!!!!!!!!!!!,4(9ZCf9[EL"0BA!S#J!!!$S
  373. Xj6Q9d5'&MDb"f-bia,L"*BfpZFb"LH5"%EfjKE'3J6#iJ6Q&cD#!Y)%3Z6Q&cD%"
  374. XeG'9iBA-ZC@4e!!!!J!rrrrrrr`!!$``-$!`2m!!2crr!rrr2!!m-$!rr$rr`$mr
  375. X`ca$``2!2$lm2!3m-m!r!qrm3(m$`$``2[rrr$2!2rrrlm-$!m!ra!Iqr$rc`$r!
  376. X3m2[``2!2$`(m$lm-m!r!rr$!qr$`$`m-$rm2[r!2`-$!`-$lm!rrrrrrrrr`!!!
  377. X!J!rrrrrrr`!!$``-$``2m!!2cm$lm-r2!!rar2[mrrr`$r!Iqrm3m2!2m3(lm3(
  378. Xmm!r`(r[r%2$`$r(mqrcar2!2cm$lm-r!m!m-$2[m$!c`$m$`qr$``2!2$!rlr``
  379. X-m!r!`2[``-$`$``2qrm-$2!2`2$lm2$!m!rrrrrrrrr`!!!!3(r`3"KFp%(H@H*
  380. XGmNrb4r*rJRrDIZ*HFNik8Gj!$RrqIr"rq(rmIrjrrRrqIrjrrRrqIrjrrRrqIrj
  381. XrrRrqIri!!!"!Ir"!'&18HVjqqRlkI[TkZP+53S*+SNE#3S*'`NULIrjrm(riIra
  382. XrrRrqIrjrrRrqIrjrrRrqIrjrrRrqIrjrrJ!!!3!Irri!%!!$!"!!!S!A2I*!%!!
  383. X#)"!!!K!AZq))%!Ilq"'(r!JAIrq)%52q#"#6rJJAcrr)%#Iq#"!6rJJ6'Bc)&rb
  384. X!#"Iq3!JArc[)&rb3!!JAr%J)%rrRD"2q%JJ4rJN)&(hFL"!!!NJ3!!%S&mrJQ"!
  385. X!!%J3!!!S%!!!'"rrrrJIrri!(rrr!"rrri!Irrr!(rrri"rrrr!Irrri(rrrq"r
  386. XrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"r
  387. XrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq!!
  388. X!!3!Irri!%!!$!"%"!S!6!S*!%i+#)"H#JK!A`SIi&r+Ib"rqrqJIr[rS(rlrk"r
  389. XqrqJIr[rS&r+Ib"I#KmJAJS2)%i+$L"-kZBJ4HVd)%(lm#""qr!J3([!)%!lJ#"!
  390. X'`!J3$Z!)%"l`#""qr!J3I[`)%(Um#"!kZ!J3!S!)(rrrq"rrrJ!Irrm!(rrrJ"r
  391. Xrrm!IrrrJ(rrrm"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"r
  392. XrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"rrrrJIrrri(rrrq"r
  393. XrrrJIrrri(rrrq"rrrrJIrrri!!!#!!!2rrrrrrrrrrrrm!!!!!!!$``-$!`-$!`
  394. X-$2m!!!!!!!r!`-$!`-$!`-$mm!!!!!!2$rm-rrm2rrm-r-m!!!!!$m$!`-$!`-$
  395. X!`2c-m!!!!!m-$!`-$!`-$!cmc-m!!!!2crr`rr$rrr$!r-c-m!!!$``-$!`2!3%
  396. X2r2rrrr!!!!r!cr$!ca!3%"r!`-$`!!!2$rqrrrra!3%2rr`-m!!!$m$2Zr$!m"!
  397. X3%2$!`2!!!!m-$2Zr$2%"!3(m$!c`!!!2crrrZrm3%"!3rrr!m!!!$``-$2Zr!3%
  398. X"!I`-$2!!!!r!`-$2Zr!Ira$``-$`!!!2$2m-$rZrr!cr$2m-m!!!$mm3rr!IZr$
  399. X!`-$!`2!!!!m2!3%"!IZr$!`-$!c`!!!2ca!3%"$rZrr`rrr!m!!!$`m"!3%2$2Z
  400. Xr$!`-$2!!!!r2%"!3(m$2Zr$!`-$`!!!2$2%"!3rrrrZrr`rmm!!!$m$`%"!3m-$
  401. X2Zr$!`2!!!!m-$r%"!I`-$2Zr$!c`!!!2cm$2rrr2rmrrZr$!m!!!$``-$!`-$!`
  402. X-$2Zr$2!!!!r!`-$!`-$!`-$2Zr$`!!!2$rrr$2rrrr`-$2Zrm!!!$m$!`-$!`-$
  403. X!`-$2Zr!!!!m-$!`-$!`-$!`-$2[`!!!2`-$!`-$!`-$!`-$2m!!!$rrrrrrrrrr
  404. Xrrrrrrr!!!!!#!!!2rrrrrrrrrrrrm!!!!!!!$``-$!`-$!`-$2m!!!!!!!r!cm$
  405. X!`-r!`-$mm!!!!!!2$2m-$!clr!`-r-m!!!!!$m$`m-$!qr$!`2c-m!!!!!m2!I`
  406. X-$2[m$!cmc-m!!!!2ca!I`-$lm-$2rrrrm!!!$`m"!Im-qr`2m3%2$2!!!!r`%"!
  407. X3rr[rm"!3%2$`!!!2m3%"!3(lm3%"!3(mm!!!$r!3%"!3qr!3%"!3m2!!!!ra!3%
  408. X"!I[a!3%"!Ic`!!!2m"!3%2rlrr!3%"$`m!!!$`m"!Im-qr`2m3%2$2!!!!r2%"r
  409. X!`2[``-m3(m$`!!!2$`(m$!clr!`-m3m-m!!!$m$`m-$!qr$!`2$``2!!!!m-r`c
  410. Xrr2[mrr`2r!c`!!!2`-r2m2$lm2$rcm$!m!!!$``-$`!Iqrm!(``-$2!!!!r!`-r
  411. X`!2[`!2r!`-$`!!!2$!`-$`$lm"m-$!`-m!!!$m$!`-$`qr$``-$!`2!!!!m-$!`
  412. X-$r[r$!`-$!c`!!!2`-$!`2$lm2$!`-$!m!!!$``-$!m!qr!I$!`-$2!!!!r!`-r
  413. X`!2[`!2r!`-$`!!!2$!`2!"rlr`!I$!`-m!!!$m$!cr$`qr$`rm$!`2!!!!m-$!c
  414. Xrr2[mrr`-$!c`!!!2`-$!`-$lm-$!`-$!m!!!$rrrrrrrrrrrrrrrrr!!!!!!"d&
  415. X38%`!!!!!!!!(8d&@43!"!!!!!!G38N9'!!)!!!!!"e4&@&3!!`!!!!!(3Np143!
  416. X%!!!!!$aZD$-a!!!!!8C548B!"!!!!)!!!3#"!!)!JJ!$!)-!"!#%5801)`!%!!!
  417. X$k!!"!qN!!J2U!!-$k`!%!q`!!!!1!$i!6J#k!E)6L3!%-!S!!!!9!%)!,J$D!E)
  418. X!"3!!!!!!!!!!&h!!!!!!X`#"!!!!!!!!!!$rrp8p"%CTE'8)6h"PEL"0BA!!6`!
  419. X!#P*PC(*KGb"0BA!!8K%!$&"bCACTEh9c)%ecC`"3%3!+8Q9`Eh0TG'P[EJ"1!!!
  420. X&3fa[Ff8!9`!!!5d!!!!!"e*PCh9XBA)!'mJ!$89ZG'9b)%9iF'a[FQ8!!&J!!5d
  421. X!!!!!$%p`G'P[EL"&C'Pdb3"&!!!",3!!!!!%8f&fC3"68`!",3!!!!!%8A9TG!"
  422. X483!!!!!!5!##!!!!!!!!!!$rrrrl"%9NDA3%9@jNE`"D!!!",3!!!!!$3h9d!&J
  423. X!!!4$Eh"j!%-!!!93BA0dC3"@!!!&3faPBA)!!!!!!!!!!+`!J`!!!!!!!!!!rrr
  424. Xpr`0,BQ3-3fpZG(*[E#",CAPc!"[*!!Y3G@jMG(9KG'P[EJ!EbJ!)3R*KBfYPG(-
  425. X!'mX!"@%J,5"Y!"[-!!9Z)#dJHJ!Ec3!&35!Y)%d!'mi!"8iJ,5"D!"[2!!8`)#d
  426. XJ13!Ed!!",3!!!!!)+'9cBf&`C5N!!!!!"bKcF'&MC5N!!!!!##KNC@aPG'8T!!!
  427. X!!!JSFQ9dGA*Z+3!!!!!!!!!!F`#%!!!!!!!!!!$rrrrE"%KPE(!(6h"dD@pZF`!
  428. X!6`!",3!!!!!%5'9XF!!!2`!-4'9cBh*TBQ8J5f9j!!!Q!!%Y!!!!!!G@CA*cD@p
  429. XZ!!"f!!G)DA0dEh*j!!"@!""@CA*cD@pZ)%CPBA4eFQ9c!!!M!!!!!!!U!)!!!!!
  430. X!!!!!!2rrrrX"&!j"BQpeG#"1CA4)B@0Vb3!!!!!",3!!!!!!!!!!aJ#&!!!!!!!
  431. X!!!$rrrh["%PZCQm05@jfC@jdEh*j)%&XE!!!D3!35@jfC@jdEh*j)&0PE'9MG!!
  432. X!53!'3@4UGA0d!!!M!!%Y!!!!!!P-EfpV)%4[Gfi!!$S!$%4PFf0bD@*P)%pZC3!
  433. X!1`!04'9cBh*TBQ8J6@&ZH3!!,`!04'9cBh*TBQ8J9(*KF!!!AJ!",3!!!!!-3f&
  434. XXE#"0EfjcG'9b!!"$!!Y1B@eP)%pLDQ9MG!!!)`!,4'PcBfpfCA*TCA-!!&`!!!!
  435. X!!*)!KJ!!!!!!!!!!rrrlZ`9&FA9TF!G$GA*bC@jd!"[4!!%Y!!!!!!9AD@9XC!!
  436. X!G`!&9'KbEhF!!(3!"8&`F'aj!!"K!!%Y!!!!!!TAC@&b)%&bE@pb!!"A!!K8B@Y
  437. XP)%pQCJ!!9!!+3A0V)&*PE@pfC3!!33!",3!!!!!'8(9d)%pZ!!"3!!C5C@e[GQ8
  438. X!!&)!!!!!!*-!K`!!!!!!!!!!rrrrH`0"Bh3%9f&TG!!!,J!",3!!!!!)9'9XCA"
  439. X[FR3!9"%!"%TeEA!!!#-!"de[ER0dCA)!!#-!">F'8!!#-!!5d!!!!!"8&`F'a
  440. Xj!!"K!!03BAN!!(!!"%YTBfX!4"%!"%0SBA3!!#-!"8pQCQ9b!!!M!!43FQ&j!!!
  441. XM!!48GA*Z!!!M!!!!!!#j!)J!!!!!!!!!!2rrqpm&6@&RD@-*4(*[F#"*G'9Y!!"
  442. XN!!Y%FQp`)&0PE'9MG!!!4!!'8'PMDh9`!!!X!!e8EfGRE'8JF'PMDh9`!!"!!!%
  443. XY!!!!!!0&BA3!!'8!"&*PB@3!!()!"9&eB@CQ!!"a!!0%DA!!!#-!!5d!!!!!#da
  444. XTFh3J8h"PE'ac!!"i!!T$BA0d)&0`C@aX!!"D!!0DBA!!!(S!"NPZGQpVC3!!)`!
  445. X$8R9L!!!M!!!!!!#h!)N!!!!!!!!!!2rrZlm%3QPdF`C6C@&bBfJ!!(-!#N0XEh0
  446. XP)%4[Eh)!!'-!#8p`C@iJ4'p[FJ!!E`!&3A"`E(N!!'%!"%YTBfX!4"%!!5d!!!!
  447. X!"P9ZG(*KF!!!)`!&4QpbBf8!!#-!"%a[Eh3!!#-!!5d!!!!!"d9ZCh*KGQ8!!%8
  448. X!!d4TF!!!)`!$8fPd!!!M!!%Y!!!M!JK$E'PYF#"9F!!!2!!+3faTE@)J4'phEJ!
  449. X!2J!!!!!!L`$+!!!!!!!!!!$rrrrr#h"eEQ0dG@&dD@pZ!L!Z!!!!!!)J,!!!!!!
  450. X#)$X!!!!!!L!k!!!!!!)J)3!!!!!#)$m!!!!!!L!V!!!!!!)J,3!!!!!#)$d!!!!
  451. X!!L!M!!!!!!)J*!!!!!!#)%!!!!!!!L!Q!!!!!!)J+J!!!!!#)(i!!!!!!L"I!!!
  452. X!!!!!!!"i!-X!!!!!!!!!!2rrrrm)BR*KBfYPG(-"@`!!!!!"A3!!!!!"+!!!!!!
  453. X"+3!!!!!"H`!!!!!"I3!!!!!"2!!!!!!"2J!!!!!"AJ!!!!!"B!!!!!!"*`!!!!!
  454. X")J!!!!!"A!!!!!!",`!!!!!"I!!!!!!"*3!!!!!!!!!!B`$-!!!!!!!!!!$rrrr
  455. Xr"@%J,5"Y!@%!!!!!!@)!!!!!!@-!!!!!!@3!!!!!!@8!!!!!!@B!!!!!!@F!!!!
  456. X!!@J!!!!!!@N!!!!!!@S!!!!!!@X!!!!!!@`!!!!!!@d!!!!!!!!!!'-!c3!!!!!
  457. X!!!!!rrrrr`9Z)#dJHJ&Z!!!!!!&[!!!!!!&`!!!!!!&a!!!!!!&b!!!!!!&c!!!
  458. X!!!&d!!!!!!&e!!!!!!&f!!!!!!&h!!!!!!&i!!!!!!&j!!!!!!&k!!!!!!!!!!"
  459. XM!-i!!!!!!!!!!2rrrrm&35!Y)%d"33!!!!!"3J!!!!!"3`!!!!!"4!!!!!!"43!
  460. X!!!!"4J!!!!!"4`!!!!!"5!!!!!!"53!!!!!"5J!!!!!"5`!!!!!"6!!!!!!"63!
  461. X!!!!!!!!!B`$2!!!!!!!!!!$rrrrr"8iJ,5"D!8i!!!!!!8m!!!!!!9!!!!!!!9%
  462. X!!!!!!9)!!!!!!9-!!!!!!93!!!!!!98!!!!!!9B!!!!!!9F!!!!!!9J!!!!!!9N
  463. X!!!!!!9S!!!!!!!!!!'S!b3!!!!!!!!!!rrrpr`aMEfjdFQpX)'YPHA-"BJ!a!!!
  464. X"DJ!b!!!"EJ!c!!!"D!!d!!!"E!!f!!!"H3!h!!!"D`!i!!!"G3!j!!!",3!!!!!
  465. X"C!"%!!!"F!"3!!!"FJ"5!!!"G!"8!!!!!!!!83$3!!!!!!!!!!$rrrrr"6!J,5!
  466. Xj!6!!!!!!!6%!!!!!!6)!!!!!!6-!!!!!!63!!!!!!68!!!!!!6B!!!!!!6F!!!!
  467. X!!6J!!!!!!6N!!!!!!!!!!*%!b!!!!!!!!!!!rrrrr`ChDATKFQ3+3A4dFQPLGA4
  468. XPF`!!H!!04'9dC@0d)&9ZFf9PEJ!!C3!*4Qa[Eh)J6@&`!!"Q!""(C@jPFQ&dC5"
  469. X0EfjcG'9b!!"R!!K*C'9ZG'PQH3!!D3!*6'pMBA4TEfjc!!"[!!j-CACPE#"8C@a
  470. XPF'pbG!!!GJ!%9fPcD!!!G`!!!!!!A`$4!!!!!!!!!!$rrrrr"f0eFR*PER3'9f9
  471. XKF'pZ!!!T!!9"FQe[FJ!!@`!&8QPZCh-!!$d!"N&YG@aPG!!!)J!&9'p[E(-!!#J
  472. X!"%G[E'3!!#3!"P0`C@aXF`!!+`!!!!!!,!#!!!S!J!!!!)%!!!##!!!!J`!!!)3
  473. X!!!#&!!!!KJ!!!)F!!!#)!!!!L3!!!!!!,!$)!!S!b!!!!-N!!!$+!!!!b`!!!-`
  474. X!!!$0!!!!cJ!!!-m!!!$3!!!!d3!!!!!!N!!!$4'P-M!a)%0[ER4bEf`J5f9jFa#
  475. XP-M!b)&"eEQ0dG@&dD@pZ$D8b-$-J3R*KBfYPG(-+T6)`0#"K)#dJE3UP-M!e)'i
  476. XJ,5"k#U8b-$BJ35!Y)%d+T6)`0b"1)#dJ@JUP-M!i)$!J,5!j!U8Y#"ZPCA0MBA"
  477. XP"b#PFh"KBf8)#+9NC@aPG'8)$D9bCA4eFQi!!!!S!!`-T6)`15"$GA*bC@jd!U8
  478. XY!AF"G!&K!U8Y!9F"9!&"!U8Y!9!"8J!!!'8!$3F#T@0dE#eL"`UPBh4X,@S($U9
  479. XMG'`YEJF)T@0dE#eS"`bPBh4X,@`('D9MG'`YH3F,T@0dE#eV"a@PBh4X,A8#T5d
  480. X("+9MG'`YC!F3T@0dE#e`"a+PBh4X,A)(&+9MG'`YG!!!!#)!%!%Z!5`"1`%k!5%
  481. X"2`%V!5d"23%M!53"3!%Q!5S"IJ&I!!!!)J!3!9X"A3%S!5N"H`&p!6`"2J&H!@!
  482. X"*`%L!9`",`&m!58!!!!F!!d"B3&L!@-"C!&P!@B"C`&S!@N"DJ&V!@`"E3!!!"`
  483. X!$3&Z!@m"F!&a!A)"F`&d!A8"GJ&h!AJ"H3&k!!!!(!!0!8%"3J&$!83"43&'!8F
  484. X"5!&*!8S"5`&-!8d!!!!F!!d"6J&2!9!"83&5!9-"9!&9!9B"9`&B!9N"@J!!!"B
  485. X!#J%`!6%"-J%c!63"03%f!6F"1!%j!!!!3J!)"aLPBh4X,AJ("D9MG'`YC3F'T@0
  486. XdE#eQ"`HPBh4X,@F(#D9MG'`YD3F2T@0dE#e["aDPBh4X,AB(&k9MG'`YG`!!!"!
  487. X!"`%T!9X"23%L!5J"*!%V!!!!5`XaFh3JE@9ZG5"*4%4A8N3+)b"[CL"048j9Fdp
  488. X$6P3&+LSU+LT-8e4$"P*PFb"*4%4A8N3)8Q9cCA*fC@4'9e*%"5SU+LSU6&0843!
  489. X!!#X$%S!!!!!&-bia,M)H8h4TBfKdD@jR)%eKG'KPE@&dDA0MD#"$C@jdFR9Y!!!
  490. X!+`-5J!!!!!8c,M%Z-Kic,M%Z-JfT-6Ni05da16Nc)%dZ)&0dCA"SC@jcEfi!!!$
  491. X8!!X!!!!!!(3!rJ#)!@)%"&"XBAN!!!!!!(3!9J#)!,S%"&&eDA3!!!!!!(!!qJ#
  492. X-!@D!!!!!!!!!6J"j!&m!QJ!!!!!!!!"1!0S!A`$l!!!!!!!!!%i"43"I!@B!!!!
  493. X!!!!!6J"9!&i!HBJ&8QpXC6S%!!!!!!"1!,S!AJ$DL!46CAJk!!!!!!"1!4N!AJ&
  494. X&L!90Ef4P1J!!!!!!!"-!93!N!@@)$&GSEb"KFQ8JH@pe2`!!!!!!+3"C!$N"Ba!
  495. X%6Q&YC3!!!!!!$`!B!#m!1+!#!!%!!!!E!!J"6`+P,3%r!5B#T5d"GJ&@##0fCA*
  496. XcD@pZ!!!!*J!-!@N"53FMB@4UGA0d!U8Y!6S"1`%[!9i#T5d"3`8MEQ&YC3&F!!!
  497. X!63!1!5i#T5d)&+8JBh4X,A3&)fTeEA!))fe[ER0dCA)&)hGTF'8#T5d"B3&`"`5
  498. XPBh4X,@3&)f0SBA3')fpQCQ9b"50`FQ&j"50dGA*Z!!!!,J!2!@3"4!%X!8!#T5d
  499. X"C3&b!A%%)f4TF!+P,3&i!9S"HJFMD@jfEfYP"#0bG@)!!!!d!!)!!!!!!'F""!"
  500. Xl!93%!Np,!!!!!!!,!&%!@!&JL!4H-&ia!!!!!!!+!"J!+J!iS!)!!3!!!%3!!`!
  501. X!!!!!A3%1!(%"5J3#6Qm!!!!!!&d!A3"a!*N%!ePPF`!!!!!!!!S!6`"3!91)!Pi
  502. X`!!!!!!!+!"B!+J!fS!)!!!!!!!i!4!"%!,)"e3#!4%3`#J!!!!i!5J"U!0-"ea1
  503. X)!!3`#J!!!%!!%!&c!@-"E`&K"`5PBh4X,@3#T5d()h9ZG(*KF!BMCQpbBf8&)fa
  504. X[Eh3#T5d"433MC'P`"#0cDA3#T5d"2!%q!!!"!!!!9[d!!&Ap!!!(U`"L!LJ2%!!
  505. X!!"`'@J!89dP14!!(!+T869"-!!%"#NjeEA!!!3%L38a59!!$!6T%594-!!S"DP0
  506. X88L-!%3(ZD@0c0!!%!XCTBh-M!!3$!NP$6L-!"!-qD@0X0!!%!hT%6%p(!!B$YNC
  507. X26P3!!`3+4Np14!!""$T$99*6!!J%8P088L!!!!5qEQJc-3!!"-T'8N9'!!3%eN*
  508. X14%`!!!85689193!6"4j06P8M!!%'$RCPFR-!!3BQ!)!!,3!!!(J!!!!!!)%!!!!
  509. X!!!!!!!!!!))!#!!!!#!!!!!!!)-!$`!!!0i!!!!!!)3!&`!!!%!!!!!!!)8!(!!
  510. X!!&S!!!!!!)B!)3!!!3)!!!!!!)F!Z3!!25i!!!!!!)!!-J!!!*i!!!!!!)%"4J!
  511. X!8X3!!!!!!)!!0`!!*LJ!!!!!!)%!33!!*N)!!!!!!)(rrb!!#1!!!!!!!)$rr`!
  512. X!9C8!!!!!%iMrr`!!9DF!!!!!%iRrr`!!4DF!!!!!!)(rrb!!#2!!!!!!!)$rr`!
  513. X!$)`!!!!!!),rr`!!$[i!!!!!!)Mrr`!!$RB!!!!!!)Arr`!!$5)!!!!!!)Err`!
  514. X!$AJ!!!!!!)Irr`!!$H!!!!!!!)Rrr`!!$i!!!!!!%iMrr`!!948!!!!!%iRrr`!
  515. X!98d!!!!!&h$rr`!!8h%!!!!!!)!!Ub!!!5B!BJ%-!)-!e!!!8&X!BJ%8!)3!f!!
  516. X!9%N!BJ%)!)8!h3!!9'J!BJ%%!)B!iJ!!81m!BJ%!!)F!k!!!9*)!BIqJ!)J!l!!
  517. X!91-!BJ$i!)N!mJ!!9EN!BJ$d!-N!p`!!84X!BJ$`!-S""!!!8B3!BJ$X!-X"%!!
  518. X!8DS!BJ$S!-`"'3!!8G!!BJ$N!-d"(`!!8I!!BJ$J!-i"*3!!8K!!BJ$F!-m"+`!
  519. X!8M!!BJ$B!0!"-3!!8P!!BJ$8!-J"0`!!8QS!BJ$3!0%"2J!!8V!!BJ$-!qMrr`!
  520. X!!8!!!!!!!qRrr`!!!F3!!!!!!qVrr`!!$r!!!!!!!q[rrb!!2C!!!!!!!!2Xrrm
  521. XJ!$i8!!!!!!2Srrm!!!*)!!!!!!2Trrm!!!+-!!!!!!2Urrm!!!T%!!!!!!2Vrrm
  522. XJ!$kB!!!!!!2XrrmJ!$lF!!!!!!2Srrm!!!,3!!!!!!2Trrm!!!28!!!!!!2Urrm
  523. X!!!P!!!!!!!2VrrmJ!$mJ!!!!!!2XrrmJ!%!N!!!!!!2Srrm!!!6B!!!!!!2Trrm
  524. X!!!EF!!!!!!2Urrm!!!U)!!!!!!2VrrmJ!%%S!!!!!!2XrrmJ!%-X!!!!!!#)!%N
  525. X!!!jD!!!!!!#(!&B!!!c1!!!!!!#'!&)!!!cU!!!!!!#&!%m!!!d'!!!!!!#*!&X
  526. X!!!pN!!!!!!##!'N!!!bb!!!!!"G`!8X!!%@j!!!!!%Z*rrmJ!""d!!!!!%Z-rrm
  527. X!!"S!!!!!!%`*!)3J!#DL!!!!!%`-!*%J!#pS!!!!!!#A!(!%!#AL!!!!!!#B!(N
  528. X%!#CF!!!!!!)!rrmJ!$a#!!!!!!)$rrmJ!$b+!!!!!!)%rrmJ!$c5!!!!!!)&rrm
  529. XJ!$U5!!!!!!)(rrmJ!$VD!!!!!!)"rrmJ!$XL!!!!!!)'rrmJ!$YU!!!!!!))rrm
  530. XJ!$Zb!!!!!!)#rrmJ!$[k!!!!!!#!!*`!!$dD!!!!!!!!rrmJ!$e5!!!!!!#!rrm
  531. XJ!%8`!!!!!!#"rrmJ!%8l!!!!!!##rrmJ!%9'!!!!!!#$rrmJ!%94!!!!!!#%rrm
  532. XJ!%9F!!!!!!#!rrmJ!%9R!!!!!!#"rrm!!%A5!!!!!!##rrm!!%D*!!!!!!#$rrm
  533. X!!%E9!!!!!!#%rrm!!%H&!!!!!!#!rrm!!%Im!!!!!!#&rrm!!%JU!!!!!!#'rrm
  534. X!!%Md!!!!!!#(rrm!!%Q+!!!!!!#)rrm!!%SK!!!!!!#*rrm!!%VH!!!!!!$+rrm
  535. X!!%ZC!!!!!!$,rrm!!%`S!!!!!!$-rrm!!%bN!!!!!!$0rrm!!%d,!!!!!!$1rrm
  536. X!!%eb!!!!!!$2rrm!!%hC!!!!!!$*rrm!!%j!!!!!!!$3rrm!!%kZ!!!!!!$)rrm
  537. X!!%m$!!!!!!$4rrm!!%qB!!!!!!#!!-38!%rl!!!!!!#"!-`8!&!V!!!!!!!"rrm
  538. XJ!&0#!!!!!!!#rrmJ!&-6!!!!!!G0CA0cB@GP"P0dBA4eF`G%G@jRC@pZ"%ePER8
  539. X%9'9iG!Y%D@&REQpcG'PMF`4198a-"%jeEA!*9@jcD'PQG'9N"e0SD@CdC@3&H@j
  540. X1BA%#H@i$H@ja"(PZBA%08feKE'`J4f9dE'PZC3C3FQpYF(3)5'&MDdC[ER3+8&0
  541. X)B@0V4QpZG!a38dKKBfY'Efjd)$N+8&0)B@0V4QpZG!j3FQ9Q)%CTE'8J6Q&YC3e
  542. X0DA0M,L"6G(*TEQGc#P48@5"AD@jNEhF(E@9ZG@*KFJGcG@*YC@je!dYLC!4)C@a
  543. X`"%PZCQm&4A&eDA!$3@0d"8eKCfPM"%*TG(--BfpZG(*[E#"VCAPc#h"eEQ0dG@&
  544. XdD@pZ#'*bB@0VCA4c"@%J,5"Y"@iJ,5"k"8%J,5"0"8iJ,5"D"6!J,5!j"RGTHQ&
  545. XbC!GMGA*bC@jd"%e195-&8h4KFR4#q!:
  546. END_OF_FILE
  547. if test 32969 -ne `wc -c <'sys/mac/NHrsrc.hqx'`; then
  548.     echo shar: \"'sys/mac/NHrsrc.hqx'\" unpacked with wrong size!
  549. fi
  550. # end of 'sys/mac/NHrsrc.hqx'
  551. if test -f 'sys/unix/snd86unx.shr' -a "${1}" != "-c" ; then 
  552.   echo shar: Renaming existing file \"'sys/unix/snd86unx.shr'\" to \"'sys/unix/snd86unx.shr.orig'\"
  553.   mv -f 'sys/unix/snd86unx.shr' 'sys/unix/snd86unx.shr.orig'
  554. fi
  555. echo shar: Extracting \"'sys/unix/snd86unx.shr'\" \(25319 characters\)
  556. sed "s/^X//" >'sys/unix/snd86unx.shr' <<'END_OF_FILE'
  557. X#! /bin/sh
  558. X# This is a shell archive.  Remove anything before this line, then unpack
  559. X# it by saving it into a file and typing "sh file".  To overwrite existing
  560. X# files, type "sh file -c".  You can also feed this as standard input via
  561. X# unshar, or by typing "sh <file", e.g..  If this archive is complete, you
  562. X# will see the following message at the end:
  563. X#        "End of shell archive."
  564. X# Contents:  Makefile READ.ME install.bsd spkr.7 spkr.c
  565. X# Wrapped by billr@saab on Thu Jun 10 16:41:24 1993
  566. XPATH=/bin:/usr/bin:/usr/ucb ; export PATH
  567. Xif test -f 'Makefile' -a "${1}" != "-c" ; then 
  568. X  echo shar: Will not clobber existing file \"'Makefile'\"
  569. Xelse
  570. Xecho shar: Extracting \"'Makefile'\" \(378 characters\)
  571. Xsed "s/^X//" >'Makefile' <<'END_OF_FILE'
  572. XX#
  573. XX# Speaker driver package makefile
  574. XX#
  575. XXCFLAGS = -I. -O # -DDEBUG
  576. XXLDFLAGS = -s
  577. XX
  578. XXall: Driver.o
  579. XX
  580. XXinstall:
  581. XX    ./Install
  582. XX
  583. XXDriver.o: spkr.c
  584. XX    $(CC) $(CFLAGS) -c spkr.c
  585. XX    mv spkr.o Driver.o
  586. XX
  587. XXclean:
  588. XX    rm -f Driver.o *~ speaker.shar
  589. XX
  590. XXDSP =  Files Install Master Name Node Remove Size System 
  591. XXshar:
  592. XX    shar READ.ME install.bsd spkr.7 Makefile spkr.[ch] \
  593. XX        interp.c $(DSP) playtest >speaker.shar
  594. XEND_OF_FILE
  595. Xif test 378 -ne `wc -c <'Makefile'`; then
  596. X    echo shar: \"'Makefile'\" unpacked with wrong size!
  597. Xfi
  598. X# end of 'Makefile'
  599. Xfi
  600. Xif test -f 'READ.ME' -a "${1}" != "-c" ; then 
  601. X  echo shar: Will not clobber existing file \"'READ.ME'\"
  602. Xelse
  603. Xecho shar: Extracting \"'READ.ME'\" \(1372 characters\)
  604. Xsed "s/^X//" >'READ.ME' <<'END_OF_FILE'
  605. XX        Console Speaker Driver Package (v1.1)
  606. XX
  607. XX        by Eric S. Raymond (esr@snark.thyrsus.com)
  608. XX
  609. XXThis package gives 80386 machines running SVr3.2 or later the ability to play
  610. XXtunes on the console speaker. It is structured as a standard installable driver
  611. XXkit containing the following files:
  612. XX
  613. XXDocumentation and examples:
  614. XXREAD.ME        -- this file
  615. XXspeaker.7    -- man page for the driver
  616. XXplaytest    -- test script exercising familiar tunes
  617. XX
  618. XXInstallable driver kit parts:
  619. XXFiles        -- list of driver package file locations
  620. XXInstall        -- installation script for driver kit
  621. XXMaster        -- mdevice entry for speaker driver
  622. XXName        -- name entry foe speaker driver
  623. XXNode        -- /dev node specification file
  624. XXRemove        -- Driver removal script
  625. XXSize        -- installation size data
  626. XXSystem        -- sdevice entry for speaker driver
  627. XX
  628. XXDriver source code:
  629. XXMakefile    -- Makefile for driver code
  630. XXspkr.c        -- the driver source
  631. XXspeaker.h    -- ioctl interface file
  632. XX
  633. XXTo make the installable code, simply type `make' and wait. The type ./Install
  634. XXand follow its instructions. You will have to install the man pages by hand.
  635. XXBe aware that the speaker.7 man page uses tbl(1) constructs.
  636. XX
  637. XXInteresting tunes mailed to the author will be periodically posted in batches
  638. XXand added to the test script for future versions.
  639. XX
  640. XX            Revision notes
  641. XX
  642. XX1.1 -- fixed minor bug in M[LSN] interpretation, added octave-tracking.
  643. XX       Tweaked the playtest examples.
  644. XEND_OF_FILE
  645. Xif test 1372 -ne `wc -c <'READ.ME'`; then
  646. X    echo shar: \"'READ.ME'\" unpacked with wrong size!
  647. Xfi
  648. X# end of 'READ.ME'
  649. Xfi
  650. Xif test -f 'install.bsd' -a "${1}" != "-c" ; then 
  651. X  echo shar: Will not clobber existing file \"'install.bsd'\"
  652. Xelse
  653. Xecho shar: Extracting \"'install.bsd'\" \(1434 characters\)
  654. Xsed "s/^X//" >'install.bsd' <<'END_OF_FILE'
  655. XXCopy spkr.c and interp.c to /sys/i386/isa
  656. XXCopy spkr.h to /sys/sys
  657. XX
  658. XX-----------------------------------------------------------------------------
  659. XX
  660. XXFile /sys/i386/conf/YOUR_MACHINE_NAME
  661. XXadd following line:
  662. XX
  663. XXpseudo-device   speaker
  664. XX
  665. XX-----------------------------------------------------------------------------
  666. XX
  667. XXFile /sys/i386/conf/files.i386
  668. XXadd following line:
  669. XX
  670. XXi386/isa/spkr.c         optional speaker
  671. XX
  672. XX-----------------------------------------------------------------------------
  673. XX
  674. XXFile /sys/i386/i386/conf.c
  675. XX[major number 20 (hex) is registered for spkr driver, don't change it]
  676. XXadd following code:
  677. XX
  678. XX#include "speaker.h"
  679. XX#if NSPEAKER > 0
  680. XXint     spkropen(),spkrclose(),spkrwrite(),spkrioctl();
  681. XX#else
  682. XX#define spkropen  enxio
  683. XX#define spkrclose enxio
  684. XX#define spkrwrite enxio
  685. XX#define spkrioctl enxio
  686. XX#endif
  687. XX    ...
  688. XX
  689. XXstruct cdevsw    cdevsw[] =
  690. XX{
  691. XX    ...
  692. XX
  693. XX    { spkropen,     spkrclose,      enxio,          spkrwrite,      /*20*/
  694. XX      spkrioctl,    enxio,          enxio,          NULL,
  695. XX      enxio,        enxio,          enxio },
  696. XX    ...
  697. XX
  698. XX-----------------------------------------------------------------------------
  699. XX
  700. XXMake corresponding device:
  701. XX
  702. XX    mknod /dev/speaker c 32 0
  703. XX
  704. XX[major number 32 (20 hex) is registered for spkr driver, don't change it]
  705. XX
  706. XX-----------------------------------------------------------------------------
  707. XX
  708. XXGo to /sys/i386/conf and type
  709. XX    config YOUR_MACHINE_NAME
  710. XXthen go to /sys/compile/YOUR_MACHINE_NAME and type
  711. XX    make depend
  712. XX    make
  713. XX
  714. XEND_OF_FILE
  715. Xif test 1434 -ne `wc -c <'install.bsd'`; then
  716. X    echo shar: \"'install.bsd'\" unpacked with wrong size!
  717. Xfi
  718. X# end of 'install.bsd'
  719. Xfi
  720. Xif test -f 'spkr.7' -a "${1}" != "-c" ; then 
  721. X  echo shar: Will not clobber existing file \"'spkr.7'\"
  722. Xelse
  723. Xecho shar: Extracting \"'spkr.7'\" \(5193 characters\)
  724. Xsed "s/^X//" >'spkr.7' <<'END_OF_FILE'
  725. XX.TH SPKR 7
  726. XX.SH NAME
  727. XXspkr \- console speaker device driver
  728. XX.SH DESCRIPTION
  729. XXThe speaker device driver allows applications to control the PC console
  730. XXspeaker on an IBM-PC-compatible machine running UNIX.
  731. XX.PP
  732. XXOnly one process may have this device open at any given time; open() and
  733. XXclose() are used to lock and relinquish it. An attempt to open() when
  734. XXanother process has the device locked will return -1 with an EBUSY error
  735. XXindication. Writes to the device are interpreted as 'play strings' in a
  736. XXsimple ASCII melody notation. An ioctl() for tone generation at arbitrary
  737. XXfrequencies is also supported.
  738. XX.PP
  739. XXSound-generation does \fInot\fR monopolize the processor; in fact, the driver
  740. XXspends most of its time sleeping while the PC hardware is emitting
  741. XXtones. Other processes may emit beeps while the driver is running.
  742. XX.PP
  743. XXApplications may call ioctl() on a speaker file descriptor to control the
  744. XXspeaker driver directly; definitions for the ioctl() interface are in
  745. XXsys/spkr.h. The tone_t structure used in these calls has two fields,
  746. XXspecifying a frequency (in hz) and a duration (in 1/100ths of a second).
  747. XXA frequency of zero is interpreted as a rest.
  748. XX.PP
  749. XXAt present there are two such ioctls. SPKRTONE accepts a pointer to a
  750. XXsingle tone structure as third argument and plays it. SPKRTUNE accepts a
  751. XXpointer to the first of an array of tone structures and plays them in
  752. XXcontinuous sequence; this array must be terminated by a final member with
  753. XXa zero duration.
  754. XX.PP
  755. XXThe play-string language is modelled on the PLAY statement conventions of
  756. XXIBM BASIC 2.0. The MB, MF and X primitives of PLAY are not useful in a UNIX 
  757. XXenvironment and are omitted. The `octave-tracking' feature is also new.
  758. XX.PP
  759. XXThere are 84 accessible notes numbered 1-83 in 7 octaves, each running from
  760. XXC to B, numbered 0-6; the scale is equal-tempered A440 and octave 3 starts
  761. XXwith middle C. By default, the play function emits half-second notes with the
  762. XXlast 1/16th second being `rest time'.
  763. XX.PP
  764. XXPlay strings are interpreted left to right as a series of play command groups;
  765. XXletter case is ignored. Play command groups are as follows:
  766. XX.PP
  767. XXCDEFGAB -- letters A through G cause the corresponding note to be played in the
  768. XXcurrent octave. A note letter may optionally be followed by an \fIaccidental
  769. XXsign\fR, one of # + or -; the first two of these cause it to be sharped one
  770. XXhalf-tone, the last causes it to be flatted one half-tone. It may also be
  771. XXfollowed by a time value number and by sustain dots (see below). Time values
  772. XXare interpreted as for the L command below;.
  773. XX.PP
  774. XXO <n> -- if <n> is numeric, this sets the current octave. <n> may also be one
  775. XXof 'L' or 'N' to enable or disable octave-tracking (it is disabled by default).
  776. XXWhen octave-tracking is on, interpretation of a pair of letter notes will
  777. XXchange octaves if necessary in order to make the smallest possible jump between
  778. XXnotes. Thus "olbc" will be played as "olb>c", and "olcb" as "olc<b". Octave
  779. XXlocking is disabled for one letter note following by >, < and O[0123456].
  780. XX.PP
  781. XX> -- bump the current octave up one.
  782. XX.PP
  783. XX< -- drop the current octave down one.
  784. XX.PP
  785. XXN <n> -- play note n, n being 1 to 84 or 0 for a rest of current time value.
  786. XXMay be followedv by sustain dots.
  787. XX.PP
  788. XXL <n> -- sets the current time value for notes. The default is L4, quarter
  789. XXnotes. The lowest possible value is 1; values up to 64 are accepted. L1 sets
  790. XXwhole notes, L2 sets half notes, L4 sets quarter notes, etc..
  791. XX.PP
  792. XXP <n> -- pause (rest), with <n> interpreted as for L. May be followed by
  793. XXsustain dots. May also be written '~'.
  794. XX.PP
  795. XXT <n> -- Sets the number of quarter notes per minute; default is 120. Musical
  796. XXnames for common tempi are:
  797. XX
  798. XX.TS
  799. XXa a a.
  800. XX            Tempo        Beats Per Minute
  801. XXvery slow    Larghissimo    
  802. XX            Largo        40-60
  803. XX             Larghetto        60-66
  804. XX            Grave           
  805. XX            Lento           
  806. XX            Adagio           66-76
  807. XXslow        Adagietto        
  808. XX            Andante       76-108
  809. XXmedium       Andantino    
  810. XX            Moderato    108-120
  811. XXfast        Allegretto    
  812. XX            Allegro       120-168
  813. XX            Vivace        
  814. XX            Veloce        
  815. XX            Presto        168-208
  816. XXvery fast    Prestissimo    
  817. XX.TE
  818. XX.PP
  819. XXM[LNS] -- set articulation. MN (N for normal) is the default; the last 1/8th of
  820. XXthe note's value is rest time. You can set ML for legato (no rest space) or
  821. XXMS (staccato) 1/4 rest space.
  822. XX.PP
  823. XXNotes (that is, CDEFGAB or N command character groups) may be followed by
  824. XXsustain dots. Each dot causes the note's value to be lengthened by one-half
  825. XXfor each one. Thus, a note dotted once is held for 3/2 of its undotted value;
  826. XXdotted twice, it is held 9/4, and three times would give 27/8. 
  827. XX.PP
  828. XXWhitespace in play strings is simply skipped and may be used to separate
  829. XXmelody sections.
  830. XX.SH BUGS
  831. XXDue to roundoff in the pitch tables and slop in the tone-generation and timer
  832. XXhardware (neither of which was designed for precision), neither pitch accuracy
  833. XXnor timings will be mathematically exact. There is no volume control.
  834. XX.PP
  835. XXIn play strings which are very long (longer than your system's physical I/O
  836. XXblocks) note suffixes or numbers may occasionally be parsed incorrectly due
  837. XXto crossing a block boundary.
  838. XX.SH FILES
  839. XX/dev/speaker -- speaker device file
  840. XX.SH AUTHOR
  841. XXEric S. Raymond (esr@snark.thyrsus.com) Feb 1990
  842. XEND_OF_FILE
  843. Xif test 5193 -ne `wc -c <'spkr.7'`; then
  844. X    echo shar: \"'spkr.7'\" unpacked with wrong size!
  845. Xfi
  846. X# end of 'spkr.7'
  847. Xfi
  848. Xif test -f 'spkr.c' -a "${1}" != "-c" ; then 
  849. X  echo shar: Will not clobber existing file \"'spkr.c'\"
  850. Xelse
  851. Xecho shar: Extracting \"'spkr.c'\" \(13871 characters\)
  852. Xsed "s/^X//" >'spkr.c' <<'END_OF_FILE'
  853. XX/*
  854. XX * spkr.c -- device driver for console speaker on 80386
  855. XX *
  856. XX * v1.1 by Eric S. Raymond (esr@snark.thyrsus.com) Feb 1990
  857. XX *      modified for 386bsd by Andrew A. Chernov <ache@astral.msk.su>
  858. XX */
  859. XX
  860. XX#ifdef __386BSD__
  861. XX#include "speaker.h"
  862. XX#endif
  863. XX#if !defined(__386BSD__) || (NSPEAKER > 0)
  864. XX
  865. XX#ifdef __386BSD__
  866. XX#include "types.h"
  867. XX#include "param.h"
  868. XX#include "errno.h"
  869. XX#include "buf.h"
  870. XX#include "uio.h"
  871. XX
  872. XX#define CADDR caddr_t
  873. XX#define err_ret(x) return(x)
  874. XX#else /* SYSV */
  875. XX#include <sys/types.h>
  876. XX#include <sys/param.h>
  877. XX#include <sys/dir.h>
  878. XX#include <sys/signal.h>
  879. XX#include <sys/errno.h>
  880. XX#include <sys/ioctl.h>
  881. XX#include <sys/user.h>
  882. XX#include <sys/sysmacros.h> 
  883. XX#include <limits.h>
  884. XX
  885. XX#include "spkr.h"
  886. XX
  887. XX/**************** MACHINE DEPENDENT PART STARTS HERE *************************
  888. XX *
  889. XX * This section defines a function tone() which causes a tone of given
  890. XX * frequency and duration from the 80x86's console speaker.
  891. XX * Another function endtone() is defined to force sound off, and there is
  892. XX * also a rest() entry point to do pauses.
  893. XX *
  894. XX * Audible sound is generated using the Programmable Interval Timer (PIT) and
  895. XX * Programmable Peripheral Interface (PPI) attached to the 80x86's speaker. The
  896. XX * PPI controls whether sound is passed through at all; the PIT's channel 2 is
  897. XX * used to generate clicks (a square wave) of whatever frequency is desired.
  898. XX *
  899. XX * This code requires SVr3.2-compatible inb(), outb(), timeout(), sleep(),
  900. XX * and wakeup().
  901. XX */
  902. XX
  903. XX/*
  904. XX * PIT and PPI port addresses and control values
  905. XX *
  906. XX * Most of the magic is hidden in the TIMER_PREP value, which selects PIT
  907. XX * channel 2, frequency LSB first, square-wave mode and binary encoding.
  908. XX * The encoding is as follows:
  909. XX *
  910. XX * +----------+----------+---------------+-----+
  911. XX * |  1    0  |  1    1  |  0    1    1  |  0  |
  912. XX * | SC1  SC0 | RW1  RW0 | M2   M1   M0  | BCD |
  913. XX * +----------+----------+---------------+-----+
  914. XX *   Counter     Write        Mode 3      Binary
  915. XX *  Channel 2  LSB first,  (Square Wave) Encoding 
  916. XX *             MSB second
  917. XX */
  918. XX#define PPI        0x61    /* port of Programmable Peripheral Interface */
  919. XX#define PPI_SPKR    0x03    /* turn these PPI bits on to pass sound */
  920. XX#define PIT_CTRL    0x43    /* PIT control address */
  921. XX#define PIT_COUNT    0x42    /* PIT count address */
  922. XX#define PIT_MODE    0xB6    /* set timer mode for sound generation */
  923. XX
  924. XX/*
  925. XX * Magic numbers for timer control. 
  926. XX */
  927. XX#define TIMER_CLK    1193180L    /* corresponds to 18.2 MHz tick rate */
  928. XX
  929. XXstatic int endtone()
  930. XX/* turn off the speaker, ending current tone */
  931. XX{
  932. XX    wakeup(endtone);
  933. XX    outb(PPI, inb(PPI) & ~PPI_SPKR);
  934. XX}
  935. XX
  936. XXstatic void tone(hz, ticks)
  937. XX/* emit tone of frequency hz for given number of ticks */
  938. XXunsigned int hz, ticks;
  939. XX{
  940. XX    unsigned int divisor = TIMER_CLK / hz;
  941. XX    int sps;
  942. XX
  943. XX#ifdef DEBUG
  944. XX    printf("tone: hz=%d ticks=%d\n", hz, ticks);
  945. XX#endif /* DEBUG */
  946. XX
  947. XX    /* set timer to generate clicks at given frequency in Hertz */
  948. XX    sps = spl5();
  949. XX    outb(PIT_CTRL, PIT_MODE);        /* prepare timer */
  950. XX    outb(PIT_COUNT, (divisor & 0xff));    /* send lo byte */
  951. XX    outb(PIT_COUNT, (divisor >> 8));    /* send hi byte */
  952. XX    splx(sps);
  953. XX
  954. XX    /* turn the speaker on */
  955. XX    outb(PPI, inb(PPI) | PPI_SPKR);
  956. XX
  957. XX    /*
  958. XX     * Set timeout to endtone function, then give up the timeslice.
  959. XX     * This is so other processes can execute while the tone is being
  960. XX     * emitted.
  961. XX     */
  962. XX    timeout(endtone, (char *)NULL, ticks);
  963. XX    sleep(endtone, PZERO - 1);
  964. XX}
  965. XX
  966. XXstatic int endrest()
  967. XX/* end a rest */
  968. XX{
  969. XX    wakeup(endrest);
  970. XX}
  971. XX
  972. XXstatic void rest(ticks)
  973. XX/* rest for given number of ticks */
  974. XXint    ticks;
  975. XX{
  976. XX    /*
  977. XX     * Set timeout to endrest function, then give up the timeslice.
  978. XX     * This is so other processes can execute while the rest is being
  979. XX     * waited out.
  980. XX     */
  981. XX#ifdef DEBUG
  982. XX    printf("rest: %d\n", ticks);
  983. XX#endif /* DEBUG */
  984. XX    timeout(endrest, (char *)NULL, ticks);
  985. XX    sleep(endrest, PZERO - 1);
  986. XX}
  987. XX
  988. XX/**************** PLAY STRING INTERPRETER BEGINS HERE **********************
  989. XX *
  990. XX * Play string interpretation is modelled on IBM BASIC 2.0's PLAY statement;
  991. XX * M[LNS] are missing and the ~ synonym and octave-tracking facility is added.
  992. XX * Requires tone(), rest(), and endtone(). String play is not interruptible
  993. XX * except possibly at physical block boundaries.
  994. XX */
  995. XX
  996. XXtypedef int    bool;
  997. XX#define TRUE    1
  998. XX#define FALSE    0
  999. XX
  1000. XX#define toupper(c)    ((c) - ' ' * (((c) >= 'a') && ((c) <= 'z')))
  1001. XX#define isdigit(c)    (((c) >= '0') && ((c) <= '9'))
  1002. XX#define dtoi(c)        ((c) - '0')
  1003. XX
  1004. XXstatic int octave;    /* currently selected octave */
  1005. XXstatic int whole;    /* whole-note time at current tempo, in ticks */
  1006. XXstatic int value;    /* whole divisor for note time, quarter note = 1 */
  1007. XXstatic int fill;    /* controls spacing of notes */
  1008. XXstatic bool octtrack;    /* octave-tracking on? */
  1009. XXstatic bool octprefix;    /* override current octave-tracking state? */
  1010. XX
  1011. XX/*
  1012. XX * Magic number avoidance...
  1013. XX */
  1014. XX#define SECS_PER_MIN    60    /* seconds per minute */
  1015. XX#define WHOLE_NOTE    4    /* quarter notes per whole note */
  1016. XX#define MIN_VALUE    64    /* the most we can divide a note by */
  1017. XX#define DFLT_VALUE    4    /* default value (quarter-note) */
  1018. XX#define FILLTIME    8    /* for articulation, break note in parts */
  1019. XX#define STACCATO    6    /* 6/8 = 3/4 of note is filled */
  1020. XX#define NORMAL        7    /* 7/8ths of note interval is filled */
  1021. XX#define LEGATO        8    /* all of note interval is filled */
  1022. XX#define DFLT_OCTAVE    4    /* default octave */
  1023. XX#define MIN_TEMPO    32    /* minimum tempo */
  1024. XX#define DFLT_TEMPO    120    /* default tempo */
  1025. XX#define MAX_TEMPO    255    /* max tempo */
  1026. XX#define NUM_MULT    3    /* numerator of dot multiplier */
  1027. XX#define DENOM_MULT    2    /* denominator of dot multiplier */
  1028. XX
  1029. XX/* letter to half-tone:  A   B  C  D  E  F  G */
  1030. XXstatic int notetab[8] = {9, 11, 0, 2, 4, 5, 7};
  1031. XX
  1032. XX/*
  1033. XX * This is the American Standard A440 Equal-Tempered scale with frequencies
  1034. XX * rounded to nearest integer. Thank Goddess for the good ol' CRC Handbook...
  1035. XX * our octave 0 is standard octave 2.
  1036. XX */
  1037. XX#define OCTAVE_NOTES    12    /* semitones per octave */
  1038. XXstatic int pitchtab[] =
  1039. XX{
  1040. XX/*        C     C#    D     D#    E     F     F#    G     G#    A     A#    B*/
  1041. XX/* 0 */   65,   69,   73,   78,   82,   87,   93,   98,  103,  110,  117,  123,
  1042. XX/* 1 */  131,  139,  147,  156,  165,  175,  185,  196,  208,  220,  233,  247,
  1043. XX/* 2 */  262,  277,  294,  311,  330,  349,  370,  392,  415,  440,  466,  494,
  1044. XX/* 3 */  523,  554,  587,  622,  659,  698,  740,  784,  831,  880,  932,  988,
  1045. XX/* 4 */ 1047, 1109, 1175, 1245, 1319, 1397, 1480, 1568, 1661, 1760, 1865, 1975,
  1046. XX/* 5 */ 2093, 2217, 2349, 2489, 2637, 2794, 2960, 3136, 3322, 3520, 3729, 3951,
  1047. XX/* 6 */ 4186, 4435, 4698, 4978, 5274, 5588, 5920, 6272, 6644, 7040, 7459, 7902,
  1048. XX};
  1049. XX
  1050. XXstatic void playinit()
  1051. XX{
  1052. XX    octave = DFLT_OCTAVE;
  1053. XX    whole = (HZ * SECS_PER_MIN * WHOLE_NOTE) / DFLT_TEMPO;
  1054. XX    fill = NORMAL;
  1055. XX    value = DFLT_VALUE;
  1056. XX    octtrack = FALSE;
  1057. XX    octprefix = TRUE;    /* act as though there was an initial O(n) */
  1058. XX}
  1059. XX
  1060. XXstatic void playtone(pitch, value, sustain)
  1061. XX/* play tone of proper duration for current rhythm signature */
  1062. XXint    pitch, value, sustain;
  1063. XX{
  1064. XX    register int    sound, silence, snum = 1, sdenom = 1;
  1065. XX
  1066. XX    /* this weirdness avoids floating-point arithmetic */
  1067. XX    for (; sustain; sustain--)
  1068. XX    {
  1069. XX    snum *= NUM_MULT;
  1070. XX    sdenom *= DENOM_MULT;
  1071. XX    }
  1072. XX
  1073. XX    if (pitch == -1)
  1074. XX    rest(whole * snum / value * sdenom);
  1075. XX    else
  1076. XX    {
  1077. XX    sound = (whole * snum) / (value * sdenom)
  1078. XX        - (whole * (FILLTIME - fill)) / (value * FILLTIME);
  1079. XX    silence = whole * (FILLTIME-fill) * snum / (FILLTIME * value * sdenom);
  1080. XX
  1081. XX#ifdef DEBUG
  1082. XX    printf("playtone: pitch %d for %d ticks, rest for %d ticks\n",
  1083. XX            pitch, sound, silence);
  1084. XX#endif /* DEBUG */
  1085. XX
  1086. XX    tone(pitchtab[pitch], sound);
  1087. XX    if (fill != LEGATO)
  1088. XX        rest(silence);
  1089. XX    }
  1090. XX}
  1091. XX
  1092. XXstatic int abs(n)
  1093. XXint n;
  1094. XX{
  1095. XX    if (n < 0)
  1096. XX    return(-n);
  1097. XX    else
  1098. XX    return(n);
  1099. XX}
  1100. XX
  1101. XXstatic void playstring(cp, slen)
  1102. XX/* interpret and play an item from a notation string */
  1103. XXchar    *cp;
  1104. XXsize_t    slen;
  1105. XX{
  1106. XX    int        pitch, lastpitch = OCTAVE_NOTES * DFLT_OCTAVE;
  1107. XX
  1108. XX#define GETNUM(cp, v)    for(v=0; isdigit(cp[1]) && slen > 0; ) \
  1109. XX                {v = v * 10 + (*++cp - '0'); slen--;}
  1110. XX    for (; slen--; cp++)
  1111. XX    {
  1112. XX    int        sustain, timeval, tempo;
  1113. XX    register char    c = toupper(*cp);
  1114. XX
  1115. XX#ifdef DEBUG
  1116. XX    printf("playstring: %c (%x)\n", c, c);
  1117. XX#endif /* DEBUG */
  1118. XX
  1119. XX    switch (c)
  1120. XX    {
  1121. XX    case 'A':  case 'B': case 'C': case 'D': case 'E': case 'F': case 'G':
  1122. XX
  1123. XX        /* compute pitch */
  1124. XX        pitch = notetab[c - 'A'] + octave * OCTAVE_NOTES;
  1125. XX
  1126. XX        /* this may be followed by an accidental sign */
  1127. XX        if (cp[1] == '#' || cp[1] == '+')
  1128. XX        {
  1129. XX        ++pitch;
  1130. XX        ++cp;
  1131. XX        slen--;
  1132. XX        }
  1133. XX        else if (cp[1] == '-')
  1134. XX        {
  1135. XX        --pitch;
  1136. XX        ++cp;
  1137. XX        slen--;
  1138. XX        }
  1139. XX
  1140. XX        /*
  1141. XX         * If octave-tracking mode is on, and there has been no octave-
  1142. XX         * setting prefix, find the version of the current letter note
  1143. XX         * closest to the last regardless of octave.
  1144. XX         */
  1145. XX        if (octtrack && !octprefix)
  1146. XX        {
  1147. XX        if (abs(pitch-lastpitch) > abs(pitch+OCTAVE_NOTES-lastpitch))
  1148. XX        {
  1149. XX            ++octave;
  1150. XX            pitch += OCTAVE_NOTES;
  1151. XX        }
  1152. XX
  1153. XX        if (abs(pitch-lastpitch) > abs((pitch-OCTAVE_NOTES)-lastpitch))
  1154. XX        {
  1155. XX            --octave;
  1156. XX            pitch -= OCTAVE_NOTES;
  1157. XX        }
  1158. XX        }
  1159. XX        octprefix = FALSE;
  1160. XX        lastpitch = pitch;
  1161. XX
  1162. XX        /* ...which may in turn be followed by an override time value */
  1163. XX        GETNUM(cp, timeval);
  1164. XX        if (timeval <= 0 || timeval > MIN_VALUE)
  1165. XX        timeval = value;
  1166. XX
  1167. XX        /* ...and/or sustain dots */
  1168. XX        for (sustain = 0; cp[1] == '.'; cp++)
  1169. XX        {
  1170. XX        slen--;
  1171. XX        sustain++;
  1172. XX        }
  1173. XX
  1174. XX        /* time to emit the actual tone */
  1175. XX        playtone(pitch, timeval, sustain);
  1176. XX        break;
  1177. XX
  1178. XX    case 'O':
  1179. XX        if (cp[1] == 'N' || cp[1] == 'n')
  1180. XX        {
  1181. XX        octprefix = octtrack = FALSE;
  1182. XX        ++cp;
  1183. XX        slen--;
  1184. XX        }
  1185. XX        else if (cp[1] == 'L' || cp[1] == 'l')
  1186. XX        {
  1187. XX        octtrack = TRUE;
  1188. XX        ++cp;
  1189. XX        slen--;
  1190. XX        }
  1191. XX        else
  1192. XX        {
  1193. XX        GETNUM(cp, octave);
  1194. XX        if (octave >= sizeof(pitchtab) / OCTAVE_NOTES)
  1195. XX            octave = DFLT_OCTAVE;
  1196. XX        octprefix = TRUE;
  1197. XX        }
  1198. XX        break;
  1199. XX
  1200. XX    case '>':
  1201. XX        if (octave < sizeof(pitchtab) / OCTAVE_NOTES - 1)
  1202. XX        octave++;
  1203. XX        octprefix = TRUE;
  1204. XX        break;
  1205. XX
  1206. XX    case '<':
  1207. XX        if (octave > 0)
  1208. XX        octave--;
  1209. XX        octprefix = TRUE;
  1210. XX        break;
  1211. XX
  1212. XX    case 'N':
  1213. XX        GETNUM(cp, pitch);
  1214. XX        for (sustain = 0; cp[1] == '.'; cp++)
  1215. XX        {
  1216. XX        slen--;
  1217. XX        sustain++;
  1218. XX        }
  1219. XX        playtone(pitch - 1, value, sustain);
  1220. XX        break;
  1221. XX
  1222. XX    case 'L':
  1223. XX        GETNUM(cp, value);
  1224. XX        if (value <= 0 || value > MIN_VALUE)
  1225. XX        value = DFLT_VALUE;
  1226. XX        break;
  1227. XX
  1228. XX    case 'P':
  1229. XX    case '~':
  1230. XX        /* this may be followed by an override time value */
  1231. XX        GETNUM(cp, timeval);
  1232. XX        if (timeval <= 0 || timeval > MIN_VALUE)
  1233. XX        timeval = value;
  1234. XX        for (sustain = 0; cp[1] == '.'; cp++)
  1235. XX        {
  1236. XX        slen--;
  1237. XX        sustain++;
  1238. XX        }
  1239. XX        playtone(-1, timeval, sustain);
  1240. XX        break;
  1241. XX
  1242. XX    case 'T':
  1243. XX        GETNUM(cp, tempo);
  1244. XX        if (tempo < MIN_TEMPO || tempo > MAX_TEMPO)
  1245. XX        tempo = DFLT_TEMPO;
  1246. XX        whole = (HZ * SECS_PER_MIN * WHOLE_NOTE) / tempo;
  1247. XX        break;
  1248. XX
  1249. XX    case 'M':
  1250. XX        if (cp[1] == 'N' || cp[1] == 'n')
  1251. XX        {
  1252. XX        fill = NORMAL;
  1253. XX        ++cp;
  1254. XX        slen--;
  1255. XX        }
  1256. XX        else if (cp[1] == 'L' || cp[1] == 'l')
  1257. XX        {
  1258. XX        fill = LEGATO;
  1259. XX        ++cp;
  1260. XX        slen--;
  1261. XX        }
  1262. XX        else if (cp[1] == 'S' || cp[1] == 's')
  1263. XX        {
  1264. XX        fill = STACCATO;
  1265. XX        ++cp;
  1266. XX        slen--;
  1267. XX        }
  1268. XX        break;
  1269. XX    }
  1270. XX    }
  1271. XX}
  1272. XXEND-of-interp.c
  1273. XXecho x - Files
  1274. XXsed 's/^X//' >Files << 'END-of-Files'
  1275. XX/usr/include/sys/spkr.h
  1276. XXEND-of-Files
  1277. XXecho x - Install
  1278. XXsed 's/^X//' >Install << 'END-of-Install'
  1279. XX#
  1280. XX# Speaker driver installation script
  1281. XX#
  1282. XXTMP=/tmp/speaker.err
  1283. XXERR1=" Errors have been written to the file $TMP."
  1284. XXERR2=" The Speaker Driver software was not installed."
  1285. XX
  1286. XXecho "Installing Speaker Driver Software Package"
  1287. XX
  1288. XX/etc/conf/bin/idcheck -p speaker 2>$TMP
  1289. XXif [ $? != 0 ]
  1290. XXthen
  1291. XX    echo "The speaker package is already at least partly installed.
  1292. XX    Removing the old version now..."
  1293. XX    /etc/conf/bin/idinstall -d speaker
  1294. XXfi
  1295. XX
  1296. XX/etc/conf/bin/idinstall -a -k speaker 2>>$TMP
  1297. XXif [ $? != 0 ]
  1298. XXthen
  1299. XX    message "There was an error during package installation. $ERR1 $ERR2"
  1300. XX    exit 1
  1301. XXfi
  1302. XX
  1303. XX/etc/conf/bin/idbuild 2>>$TMP
  1304. XXif [ $? != 0 ]
  1305. XXthen
  1306. XX    message "There was an error during kernel reconfiguration. $ERR1 $ERR2"
  1307. XX    exit 1
  1308. XXfi
  1309. XX
  1310. XXrm -f $TMP
  1311. XX
  1312. XXcp spkr.h /usr/include/sys/spkr.h
  1313. XX
  1314. XXecho "Performing shutdown..."
  1315. XXcd /; exec /etc/shutdown -g0 -y
  1316. XXEND-of-Install
  1317. XXecho x - Master
  1318. XXsed 's/^X//' >Master << 'END-of-Master'
  1319. XXspeaker    ocwi    iocH    spkr    0    0    1    1    -1
  1320. XXEND-of-Master
  1321. XXecho x - Name
  1322. XXsed 's/^X//' >Name << 'END-of-Name'
  1323. XX386 UNIX Speaker Device Driver Package
  1324. XXEND-of-Name
  1325. XXecho x - Node
  1326. XXsed 's/^X//' >Node << 'END-of-Node'
  1327. XXspeaker    speaker    c    0
  1328. XXEND-of-Node
  1329. XXecho x - Remove
  1330. XXsed 's/^X//' >Remove << 'END-of-Remove'
  1331. XX#
  1332. XX# Speaker driver remove script
  1333. XX#
  1334. XXTMP=/tmp/speaker.err
  1335. XXRERR="Errors have been written to the file $TMP."
  1336. XX
  1337. XXecho "Removing Speaker Driver Software Package"
  1338. XX
  1339. XX/etc/conf/bin/idinstall -d speaker 2>$TMP
  1340. XXif [ $? != 0 ]
  1341. XXthen
  1342. XX    message "There was an error during package removal. $RERR"
  1343. XX    exit 1
  1344. XXfi
  1345. XX
  1346. XX/etc/conf/bin/idbuild 2>>$TMP
  1347. XXif [ $? != 0 ]
  1348. XXthen
  1349. XX    message "There was an error during kernel reconfiguration. $RERR"
  1350. XX    exit 1
  1351. XXfi
  1352. XX
  1353. XXrm -f /dev/speaker $TMP /usr/include/sys/spkr.h
  1354. XX
  1355. XXexit 0
  1356. XXEND-of-Remove
  1357. XXecho x - Size
  1358. XXsed 's/^X//' >Size << 'END-of-Size'
  1359. XXROOT=1400
  1360. XXUSR=100
  1361. XXEND-of-Size
  1362. XXecho x - System
  1363. XXsed 's/^X//' >System << 'END-of-System'
  1364. XXspeaker    Y    1    0    0    0    0    0    0    0
  1365. XXEND-of-System
  1366. XXecho x - playtest
  1367. XXsed 's/^X//' >playtest << 'END-of-playtest'
  1368. XX:
  1369. XX# Test script for the speaker driver
  1370. XX#
  1371. XX# v1.0 by Eric S. Raymond (Feb 1990)
  1372. XX#      modified for 386bsd by Andrew A. Chernov <ache@astral.msk.su>
  1373. XX#
  1374. XXreveille="t255l8c.f.afc~c.f.afc~c.f.afc.f.a..f.~c.f.afc~c.f.afc~c.f.afc~c.f.."
  1375. XXcontact="<cd<a#~<a#>f"
  1376. XXdance="t240<cfcfgagaa#b#>dc<a#a.~fg.gaa#.agagegc.~cfcfgagaa#b#>dc<a#a.~fg.gga.agfgfgf."
  1377. XXloony="t255cf8f8edc<a.>~cf8f8edd#e.~ce8cdce8cd.<a>c8c8c#def8af8."
  1378. XX
  1379. XXcase $1 in
  1380. XXreveille) echo  $reveille >/dev/speaker;;
  1381. XXcontact)  echo  $contact >/dev/speaker;;
  1382. XXdance)  echo  $dance >/dev/speaker;;
  1383. XXloony)  echo  $loony >/dev/speaker;;
  1384. XX*)
  1385. XX    echo "No such tune. Available tunes are:"
  1386. XX    echo
  1387. XX    echo "reveille -- Reveille"
  1388. XX    echo "contact -- Contact theme from Close Encounters"
  1389. XX    echo "dance -- Lord of the Dance (aka Simple Gifts)"
  1390. XX    echo "loony -- Loony Toons theme"
  1391. XX    ;;
  1392. XXesac
  1393. XXEND-of-playtest
  1394. XXexit
  1395. XEND_OF_FILE
  1396. Xif test 13871 -ne `wc -c <'spkr.c'`; then
  1397. X    echo shar: \"'spkr.c'\" unpacked with wrong size!
  1398. Xfi
  1399. X# end of 'spkr.c'
  1400. Xfi
  1401. Xecho shar: End of shell archive.
  1402. Xexit 0
  1403. END_OF_FILE
  1404. if test 25319 -ne `wc -c <'sys/unix/snd86unx.shr'`; then
  1405.     echo shar: \"'sys/unix/snd86unx.shr'\" unpacked with wrong size!
  1406. fi
  1407. # end of 'sys/unix/snd86unx.shr'
  1408. echo shar: End of archive 26 \(of 33\).
  1409. cp /dev/null ark26isdone
  1410. MISSING=""
  1411. for I in 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 ; do
  1412.     if test ! -f ark${I}isdone ; then
  1413.     MISSING="${MISSING} ${I}"
  1414.     fi
  1415. done
  1416. if test "${MISSING}" = "" ; then
  1417.     echo You have unpacked all 33 archives.
  1418.     echo "Now execute ./patchit.sh"
  1419.     rm -f ark[1-9]isdone ark[1-9][0-9]isdone
  1420. else
  1421.     echo You still need to unpack the following archives:
  1422.     echo "        " ${MISSING}
  1423. fi
  1424. ##  End of shell archive.
  1425. exit 0
  1426.