s 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068
  1. .\"
  2. .\" Copyright 2005 Sun Microsystems, Inc. All rights reserved.
  3. .\" Use is subject to license terms.
  4. .\"
  5. .\" CDDL HEADER START
  6. .\"
  7. .\" The contents of this file are subject to the terms of the
  8. .\" Common Development and Distribution License, Version 1.0 only
  9. .\" (the "License"). You may not use this file except in compliance
  10. .\" with the License.
  11. .\"
  12. .\" You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
  13. .\" or http://www.opensolaris.org/os/licensing.
  14. .\" See the License for the specific language governing permissions
  15. .\" and limitations under the License.
  16. .\"
  17. .\" When distributing Covered Code, include this CDDL HEADER in each
  18. .\" file and include the License file at usr/src/OPENSOLARIS.LICENSE.
  19. .\" If applicable, add the following below this CDDL HEADER, with the
  20. .\" fields enclosed by brackets "[]" replaced with your own identifying
  21. .\" information: Portions Copyright [yyyy] [name of copyright owner]
  22. .\"
  23. .\" CDDL HEADER END
  24. .\"
  25. .\" University Copyright- Copyright (c) 1982, 1986, 1988
  26. .\" The Regents of the University of California
  27. .\" All Rights Reserved
  28. .\"
  29. .\" University Acknowledgment- Portions of this document are derived from
  30. .\" software developed by the University of California, Berkeley, and its
  31. .\" contributors.
  32. .\"
  33. .\" from OpenSolaris "s 1.10 05/06/08 SMI"
  34. .\"
  35. .\" Portions Copyright (c) 2005 Gunnar Ritter, Freiburg i. Br., Germany
  36. .\"
  37. .\" Macros .QS and .QE copied from Plan9 sys/lib/tmac/tmac.s
  38. .\" (Lucent Public License Version 1.02)
  39. .\"
  40. .\" Sccsid @(#)s.in 1.4 (gritter) 11/13/06
  41. .\"
  42. .ds // /home/lich/git/scriptsanddotfiles/tmac/
  43. . \" IZ - initialize (before text begins)
  44. .de IZ
  45. .nr HM 1i
  46. .nr M1 \\n(HMu/2
  47. .nr FM 1i
  48. .nr M4 \\n(FMu/2
  49. .nr YY -\\n(FMu
  50. .nr XX 0 1
  51. .nr IP 0
  52. .nr PI 5n
  53. .nr QI 5n
  54. .nr FI 2n
  55. .nr I0 \\n(PIu
  56. .if n .nr PD 1v
  57. .if t .nr PD .3v
  58. .if n .nr DD 1v
  59. .if t .nr DD .5v
  60. .nr PS 10
  61. .nr VS 12
  62. .ps \\n(PS
  63. .vs \\n(VSp
  64. .nr ML 3v
  65. .nr IR 0
  66. .nr TB 0
  67. .nr SJ \\n(.j
  68. .nr PO \\n(.o
  69. .nr LL 6i
  70. .ll \\n(LLu
  71. .lt 6i
  72. .ev 1
  73. .nr FL 5.5i
  74. .ll \\n(FLu
  75. .ps 8
  76. .vs 10p
  77. .ev
  78. .ds CH - \\\\n(PN -
  79. .if n .ds CF \\*(DY
  80. .wh 0 NP
  81. .wh -\\n(FMu FO
  82. .ch FO 16i
  83. .wh -\\n(FMu FX
  84. .ch FO -\\n(FMu
  85. .wh -\\n(M4u BT
  86. ..
  87. . \" RT - reset (at new paragraph)
  88. .de RT
  89. .if !\\n(1T .BG
  90. .if !\\n(IK .if !\\n(IF .if !\\n(IX .if !\\n(BE .di
  91. .if \\n(TM .ls 2
  92. .ce 0
  93. .ul 0
  94. .if \\n(QP \{\
  95. . ll +\\n(QIu
  96. . in -\\n(QIu
  97. . nr QP -1
  98. .\}
  99. .if \\n(NX<=1 .if !\\n(AJ .ll \\n(LLu
  100. .if !\\n(IF \{\
  101. . ps \\n(PS
  102. . if \\n(VS>=40 .vs \\n(VSu
  103. . if \\n(VS<=39 .vs \\n(VSp
  104. .\}
  105. .if !\\n(IP .nr I0 \\n(PIu
  106. .if \\n(IP \{\
  107. . in -\\n(I\\n(IRu
  108. . nr IP -1
  109. .\}
  110. .ft 1
  111. .TA
  112. .fi
  113. ..
  114. . \" TA - set default tabs
  115. .de TA
  116. .if n .ta 8n 16n 24n 32n 40n 48n 56n 64n 72n 80n
  117. .if t .ta 5n 10n 15n 20n 25n 30n 35n 40n 45n 50n 55n 60n 65n 70n 75n
  118. ..
  119. . \" BG - begin (at first paragraph)
  120. .de BG
  121. .ll \\n(LLu
  122. .nr M1 \\n(HMu/2
  123. .nr M4 \\n(FMu/2
  124. .ch BT -\\n(M4u
  125. .br
  126. .nr YE 1
  127. .di
  128. .ce 0
  129. .nr KI 0
  130. .hy 14
  131. .nr 1T 1
  132. .S\\n(ST
  133. .rm S0 S1 S2 SY TX AX WT RP
  134. .\"redefs
  135. .de TL
  136. .ft 3
  137. .ce 99
  138. .sp
  139. .LG
  140. \\..
  141. .de AU
  142. .ft 2
  143. .if n .ul 0
  144. .ce 99
  145. .sp
  146. .NL
  147. \\..
  148. .de AI
  149. .ft 1
  150. .if n .ul 0
  151. .ce 99
  152. .if n .sp
  153. .if t .sp .5
  154. .NL
  155. \\..
  156. .RA
  157. .rm RA
  158. .rn FJ FS
  159. .rn FK FE
  160. .nf
  161. .ev 1
  162. .ps \\n(PS-2
  163. .vs \\n(.s+2p
  164. .ev
  165. .if !\\n(KG .nr FP 0
  166. .nr KG 0
  167. .if \\n(FP \{\
  168. . FS
  169. . FG
  170. . FE
  171. .\}
  172. .br
  173. .if \\n(TV .if n .sp 2
  174. .if \\n(TV .if t .sp 1
  175. .fi
  176. ..
  177. . \" RA - redefine abstract
  178. .de RA
  179. .de AB
  180. .br
  181. .if !\\\\n(1T .BG
  182. .ce
  183. .sp
  184. .if !\\\\n(.$ ABSTRACT
  185. .if \\\\n(.$ .if !\\\\$1no \\\\$1
  186. .if !\\\\n(.$ .sp
  187. .if \\\\n(.$ .if !\\\\$1no .sp
  188. .sp
  189. .nr AJ 1
  190. .in +\\\\n(.lu/12u
  191. .ll -\\\\n(.lu/12u
  192. .RT
  193. .if \\\\n(TM .ls 1
  194. \\..
  195. .de AE
  196. .nr AJ 0
  197. .br
  198. .in 0
  199. .ll \\\\n(LLu
  200. .if \\\\n(VS>=40 .vs \\\\n(VSu
  201. .if \\\\n(VS<=39 .vs \\\\n(VSp
  202. .if \\\\n(TM .ls 2
  203. \\..
  204. ..
  205. . \" RP - released paper format
  206. .de RP
  207. .nr ST 2
  208. .if \\$1no .nr ST 1
  209. .pn 0
  210. .br
  211. ..
  212. . \" TL - source file for cover sheet
  213. .de TL
  214. .rn TL @T
  215. .so \*(//ms.cov
  216. .TL
  217. .rm @T
  218. ..
  219. . \" PP - regular paragraph
  220. .de PP
  221. .RT
  222. .if \\n(1T .sp \\n(PDu
  223. .ne 1.1
  224. .ti +\\n(PIu
  225. ..
  226. . \" LP - left paragraph
  227. .de LP
  228. .RT
  229. .if \\n(1T .sp \\n(PDu
  230. .ne 1.1
  231. .ti \\n(.iu
  232. ..
  233. . \" IP - indented paragraph
  234. .de IP
  235. .RT
  236. .if \\n(1T .sp \\n(PDu
  237. .ne 1.1
  238. .if !\\n(IP .nr IP +1
  239. .if \\n(.$-1 .nr I\\n(IR \\$2n
  240. .in +\\n(I\\n(IRu
  241. .ta \\n(I\\n(IRu
  242. .if \\n(.$ \{\
  243. .ds HT \&\\$1
  244. .ti -\\n(I\\n(IRu
  245. \\*(HT\t\c
  246. .if \w\\*(HTu>(\\n(I\\n(IRu+1n) .br
  247. .\}
  248. ..
  249. . \" XP - exdented paragraph
  250. .de XP
  251. .RT
  252. .if \\n(1T .sp \\n(PDu
  253. .ne 1.1
  254. .if !\\n(IP .nr IP +1
  255. .in +\\n(I\\n(IRu
  256. .ti -\\n(I\\n(IRu
  257. ..
  258. . \" QP - quote paragraph
  259. .de QP
  260. .ti \\n(.iu
  261. .RT
  262. .if \\n(1T .sp \\n(PDu
  263. .ne 1.1
  264. .nr QP 1
  265. .in +\\n(QIu
  266. .ll -\\n(QIu
  267. .ti \\n(.iu
  268. .if \\n(TM .ls 1
  269. ..
  270. .\" Macros QS and QE copied from Plan9 sys/lib/tmac/tmac.s
  271. .de QS
  272. .br
  273. .LP
  274. .in +\\n(QIu
  275. .ll -\\n(QIu
  276. ..
  277. .de QE
  278. .br
  279. .ll +\\n(QIu
  280. .in -\\n(QIu
  281. .LP
  282. ..
  283. . \" SH - section header
  284. .de SH
  285. .ti \\n(.iu
  286. .RT
  287. .if \\n(1T .sp
  288. .RT
  289. .ne 3.1
  290. .B
  291. ..
  292. . \" NH - numbered header
  293. .de NH
  294. .SH
  295. .nr NS \\$1
  296. .if !\\n(.$ .nr NS 1
  297. .if !\\n(NS .nr NS 1
  298. .nr H\\n(NS +1
  299. .if !\\n(NS-4 .nr H5 0
  300. .if !\\n(NS-3 .nr H4 0
  301. .if !\\n(NS-2 .nr H3 0
  302. .if !\\n(NS-1 .nr H2 0
  303. .if !\\$1 .if \\n(.$ .nr H1 1
  304. .if \\$1S \{\
  305. . nr NS \\n(.$-1
  306. . nr H1 \\$2 0
  307. . nr H2 \\$3 0
  308. . nr H3 \\$4 0
  309. . nr H4 \\$5 0
  310. . nr H5 \\$6 0
  311. .\}
  312. .ds SN \\n(H1.
  313. .if \\n(NS-1 .as SN \\n(H2.
  314. .if \\n(NS-2 .as SN \\n(H3.
  315. .if \\n(NS-3 .as SN \\n(H4.
  316. .if \\n(NS-4 .as SN \\n(H5.
  317. \\*(SN
  318. ..
  319. . \" H - fancy header
  320. .de H
  321. .ie \\$1no .SH
  322. .el .NH \\$1
  323. \\$2
  324. .XS \\\\n(PN \\$1u-1u*\\n(PIu
  325. .if \\$1<2 .sp \\n(PDu
  326. .if !\\$1no \\*(SN\0
  327. \\$2
  328. .XE \\$3
  329. ..
  330. . \" LS - listing start
  331. .de LS
  332. .ie \\$1no .ID \\$2
  333. .el .DS I \\$1
  334. .nr PQ \\n(.f
  335. .ft H
  336. .ps -\\n(dP
  337. .vs -\\n(dV
  338. .nr @ \\w'x'u*8
  339. .if \\n(.$ .nr @ \\w'x'u*\\$2
  340. .if \\n(.$ .if \\$1no .nr @ \\w'x'u*\\$3
  341. .ta \\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u +\\n@u
  342. ..
  343. . \" LE - listing end
  344. .de LE
  345. .ft \\n(PQ
  346. .ps \\n(PS
  347. .if \\n(VS>=40 .vs \\n(VSu
  348. .if \\n(VS<=39 .vs \\n(VSp
  349. .DE
  350. ..
  351. . \" DS - display with keep (L=left I=indent C=center B=block)
  352. .de DS
  353. .KS
  354. .nf
  355. .\\$1D \\$2 \\$1
  356. .ft 1
  357. .ps \\n(PS
  358. .if \\n(VS>=40 .vs \\n(VSu
  359. .if \\n(VS<=39 .vs \\n(VSp
  360. ..
  361. .de D
  362. .ID \\$1
  363. ..
  364. . \" ID - indented display with no keep
  365. .de ID
  366. .XD
  367. .if t .in +.5i
  368. .if n .in +8
  369. .if \\n(.$ .if !\\$1I .if !\\$1 \{\
  370. . in \\n(OIu
  371. . in +\\$1n
  372. .\}
  373. ..
  374. . \" LD - left display with no keep
  375. .de LD
  376. .XD
  377. ..
  378. . \" CD - centered display with no keep
  379. .de CD
  380. .XD
  381. .ce 999
  382. ..
  383. . \" XD - real display macro
  384. .de XD
  385. .nf
  386. .nr OI \\n(.i
  387. .sp \\n(DDu
  388. .if \\n(TM .ls 1
  389. ..
  390. . \" DE - end display of any kind
  391. .de DE
  392. .ce 0
  393. .if \\n(BD .DF
  394. .nr BD 0
  395. .in \\n(OIu
  396. .KE
  397. .if \\n(TM .ls 2
  398. .sp \\n(DDu
  399. .fi
  400. ..
  401. . \" BD - block display: center entire block
  402. .de BD
  403. .XD
  404. .nr BD 1
  405. .nf
  406. .in \\n(OIu
  407. .di DD
  408. ..
  409. . \" DF - finish block display
  410. .de DF
  411. .di
  412. .if \\n(dl>\\n(BD .nr BD \\n(dl
  413. .if \\n(BD<\\n(.l .in (\\n(.lu-\\n(BDu)/2u
  414. .nr EI \\n(.l-\\n(.i
  415. .ta \\n(EIuR
  416. .DD
  417. .in \\n(OIu
  418. ..
  419. . \" KS - begin regular keep
  420. .de KS
  421. .nr KN \\n(.u
  422. .if !\\n(IK .if !\\n(IF .KQ
  423. .nr IK +1
  424. ..
  425. . \" KQ - real keep processor
  426. .de KQ
  427. .br
  428. .nr KI \\n(.i
  429. .ev 2
  430. .TA
  431. .br
  432. .in \\n(KIu
  433. .ps \\n(PS
  434. .if \\n(VS>=40 .vs \\n(VSu
  435. .if \\n(VS<=39 .vs \\n(VSp
  436. .ll \\n(LLu
  437. .lt \\n(LTu
  438. .if \\n(NX>1 .ll \\n(CWu
  439. .if \\n(NX>1 .lt \\n(CWu
  440. .di KK
  441. .nr TB 0
  442. ..
  443. . \" KF - begin floating keep
  444. .de KF
  445. .nr KN \\n(.u
  446. .if !\\n(IK .FQ
  447. .nr IK +1
  448. ..
  449. . \" FQ - real floating keep processor
  450. .de FQ
  451. .nr KI \\n(.i
  452. .ev 2
  453. .TA
  454. .br
  455. .in \\n(KIu
  456. .ps \\n(PS
  457. .if \\n(VS>=40 .vs \\n(VSu
  458. .if \\n(VS<=39 .vs \\n(VSp
  459. .ll \\n(LLu
  460. .lt \\n(LTu
  461. .if \\n(NX>1 .ll \\n(CWu
  462. .if \\n(NX>1 .lt \\n(CWu
  463. .di KK
  464. .nr TB 1
  465. ..
  466. . \" KE - end keep
  467. .de KE
  468. .if \\n(IK .if !\\n(IK-1 .if !\\n(IF .RQ
  469. .if \\n(IK .nr IK -1
  470. ..
  471. . \" RQ - real keep release
  472. .de RQ
  473. .br
  474. .di
  475. .nr NF 0
  476. .if \\n(dn-\\n(.t .nr NF 1
  477. .if \\n(TC .nr NF 1
  478. .if \\n(NF .if !\\n(TB .sp 200
  479. .if !\\n(NF .if \\n(TB .nr TB 0
  480. .nf
  481. .rs
  482. .nr TC 5
  483. .in 0
  484. .ls 1
  485. .if !\\n(TB \{\
  486. . ev
  487. . br
  488. . ev 2
  489. . KK
  490. .\}
  491. .ls
  492. .ce 0
  493. .if !\\n(TB .rm KK
  494. .if \\n(TB .da KJ
  495. .if \\n(TB \!.KD \\n(dn
  496. .if \\n(TB .KK
  497. .if \\n(TB .di
  498. .nr TC \\n(TB
  499. .if \\n(KN .fi
  500. .in
  501. .ev
  502. ..
  503. . \" KD - keep redivert
  504. .de KD
  505. .nr KM 0
  506. .if \\n(.zKJ .nr KM 1
  507. .if \\n(KM \!.KD \\$1
  508. .if !\\n(KM .if \\n(.t<\\$1 .di KJ
  509. ..
  510. . \" EM - end macro (process leftover keep)
  511. .de EM
  512. .br
  513. .if !\\n(TB .if t .wh -1p CM
  514. .if \\n(TB \{\
  515. \&\c
  516. ' bp
  517. . NP
  518. . ch CM 160
  519. .\}
  520. .if \\n(IF .FE \" End footnote if still pending
  521. .if !"\\n(.z"" .DI \" End any left over diversions
  522. ..
  523. . \" DI is used to properly end all diversions, otherwise a bug in
  524. . \" [nt]roff may cause an infinite loop if the page footer (or
  525. . \" macros that it calls) happens to start a new diversion.
  526. .de DI
  527. .di
  528. .if !"\\n(.z"" .DI
  529. ..
  530. .de XK
  531. .nr TD 1
  532. .nf
  533. .ls 1
  534. .in 0
  535. .rn KJ KL
  536. .KL
  537. .rm KL
  538. .if \\n(.zKJ .di
  539. .nr TB 0
  540. .if \\n(.zKJ .nr TB 1
  541. .br
  542. .in
  543. .ls
  544. .fi
  545. .nr TD 0
  546. ..
  547. . \" NP - new page
  548. .de NP
  549. .if \\n(FM+\\n(HM>=\\n(.p \{\
  550. . tm HM + FM longer than page
  551. . ab
  552. .\}
  553. .if !\\n(LT .nr LT \\n(LLu
  554. .if t .CM
  555. .po \\n(POu
  556. .nr PF \\n(.f
  557. .nr PX \\n(.s
  558. .ft 1
  559. .ps \\n(PS
  560. 'sp \\n(HMu/2u
  561. .lt \\n(LTu
  562. .PT
  563. .lt \\n(.lu
  564. .if \\n(HM 'sp |\\n(HMu
  565. .HD \"undefined
  566. .ps \\n(PX
  567. .ft \\n(PF
  568. .nr XX 0 1
  569. .nr YY 0-\\n(FMu
  570. .ch FO 16i
  571. .ch FX 17i
  572. .ch FO -\\n(FMu
  573. .ch FX \\n(.pu-\\n(FMu
  574. .if \\n(MF .FV
  575. .nr MF 0
  576. .mk
  577. .os
  578. .ev 1
  579. .if !\\n(TD .if \\n(TC<5 .XK
  580. .nr TC 0
  581. .ev
  582. .nr TQ \\n(.i
  583. .nr TK \\n(.u
  584. .if \\n(IT \{\
  585. . in 0
  586. . nf
  587. . TT
  588. . in \\n(TQu
  589. . if \\n(TK .fi
  590. .\}
  591. .ns
  592. .mk #T
  593. ..
  594. . \" PT - page titles
  595. .de PT
  596. .pc %
  597. .nr PN \\n%
  598. .nr PT \\n%
  599. .if \\n(P1 .nr PT 2
  600. .if \\n(PT=1 .tl 
  601. .if \\n(PT>1 .if !\\n(EH .if !\\n(OH .tl \\*(LH\\*(CH\\*(RH
  602. .if \\n(PT>1 .if \\n(OH .if o .tl \\*(O1
  603. .if \\n(PT>1 .if \\n(EH .if e .tl \\*(E2
  604. ..
  605. . \" OH - odd page header
  606. .de OH
  607. .nr OH 1
  608. .if !\\n(.$ .nr OH 0
  609. .ds O1 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
  610. ..
  611. . \" EH - even page header
  612. .de EH
  613. .nr EH 1
  614. .if !\\n(.$ .nr EH 0
  615. .ds E2 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
  616. ..
  617. . \" P1 - PT on 1st page
  618. .de P1
  619. .nr P1 1
  620. ..
  621. . \" FO - footer
  622. .de FO
  623. .rn FO FZ
  624. .if \\n(IT .nr T. 1
  625. .if \\n(IT .if !\\n(FC .T# 1
  626. .if \\n(IT .br
  627. .nr FC +1
  628. .if \\n(NX<2 .nr WF 0
  629. .nr dn 0
  630. .if \\n(FC<=1 .if \\n(XX .XF
  631. .rn FZ FO
  632. .nr MF 0
  633. .if \\n(dn .nr MF 1
  634. .if !\\n(WF .nr YY 0-\\n(FMu
  635. .if !\\n(WF .ch FO \\n(YYu
  636. .if !\\n(dn .nr WF 0
  637. .if \\n(FC<=1 .if !\\n(XX \{\
  638. . if \\n(NX>1 .RC
  639. . if \\n(NX<2 'bp
  640. .\}
  641. .nr FC -1
  642. .if \\n(ML .ne \\n(MLu
  643. ..
  644. . \" BT - bottom title
  645. .de BT
  646. .nr PF \\n(.f
  647. .nr PX \\n(.s
  648. .ft 1
  649. .ps \\n(PS
  650. .lt \\n(LTu
  651. .po \\n(POu
  652. .if \\n(TM .if \\n(CT \{\
  653. . tl ''\\n(PN''
  654. . nr CT 0
  655. .\}
  656. .if \\n% .if !\\n(EF .if !\\n(OF .tl \\*(LF\\*(CF\\*(RF
  657. .if \\n% .if \\n(OF .if o .tl \\*(O3
  658. .if \\n% .if \\n(EF .if e .tl \\*(E4
  659. .ft \\n(PF
  660. .ps \\n(PX
  661. ..
  662. . \" OF - odd page footer
  663. .de OF
  664. .nr OF 1
  665. .if !\\n(.$ .nr OF 0
  666. .ds O3 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
  667. ..
  668. . \" EF - even page footer
  669. .de EF
  670. .nr EF 1
  671. .if !\\n(.$ .nr EF 0
  672. .ds E4 \\$1 \\$2 \\$3 \\$4 \\$5 \\$6 \\$7 \\$8 \\$9
  673. ..
  674. . \" 2C - double column
  675. .de 2C
  676. .MC
  677. ..
  678. . \" 1C - single column
  679. .de 1C
  680. .MC \\n(LLu
  681. .hy 14
  682. ..
  683. . \" MC - multiple columns, arg is col width
  684. .de MC
  685. .nr L1 \\n(LL*7/15
  686. .if \\n(.$ .nr L1 \\$1n
  687. .nr NQ \\n(LL/\\n(L1
  688. .if \\n(NQ<1 .nr NQ 1
  689. .if \\n(NQ>2 .if (\\n(LL%\\n(L1)=0 .nr NQ -1
  690. .if !\\n(1T \{\
  691. . BG
  692. . if n .sp 4
  693. . if t .sp 2
  694. .\}
  695. .if !\\n(NX .nr NX 1
  696. .if !\\n(NX=\\n(NQ \{\
  697. . RT
  698. . if \\n(NX>1 .bp
  699. . mk
  700. . nr NC 1
  701. . po \\n(POu
  702. .\}
  703. .if \\n(NQ>1 .hy 12
  704. .nr NX \\n(NQ
  705. .nr CW \\n(L1
  706. .ll \\n(CWu
  707. .nr FL \\n(CWu*11u/12u
  708. .if \\n(NX>1 .nr GW (\\n(LL-(\\n(NX*\\n(CW))/(\\n(NX-1)
  709. .nr RO \\n(CW+\\n(GW
  710. .ns
  711. ..
  712. .de RC
  713. .if \\n(NC>=\\n(NX .C2
  714. .if \\n(NC<\\n(NX .C1
  715. .nr NC \\n(ND
  716. ..
  717. .de C1
  718. .rt
  719. .po +\\n(ROu
  720. .nr ND \\n(NC+1
  721. .nr XX 0 1
  722. .if \\n(MF .FV
  723. .nr MF 0
  724. .ch FX \\n(.pu-\\n(FMu
  725. .ev 1
  726. .if \\n(TB .XK
  727. .nr TC 0
  728. .ev
  729. .nr TQ \\n(.i
  730. .if \\n(IT .in 0
  731. .if \\n(IT .TT
  732. .if \\n(IT .in \\n(TQu
  733. .mk #T
  734. .ns
  735. ..
  736. .de C2
  737. .po \\n(POu
  738. 'bp
  739. .nr ND 1
  740. ..
  741. . \" RS - right shift
  742. .de RS
  743. .nr IS \\n(IP
  744. .RT
  745. .nr IP \\n(IS
  746. .if \\n(IP .in +\\n(I\\n(IRu
  747. .nr IR +1
  748. .nr I\\n(IR \\n(PIu
  749. .in +\\n(I\\n(IRu
  750. ..
  751. . \" RE - retreat left
  752. .de RE
  753. .nr IS \\n(IP
  754. .RT
  755. .nr IP \\n(IS
  756. .if \\n(IR .nr IR -1
  757. .if \\n(IP<=0 .in -\\n(I\\n(IRu
  758. ..
  759. . \" CM - cut mark
  760. .de CM
  761. .po 0
  762. .lt 7.6i
  763. .ft 1
  764. .ps 10
  765. .vs 4p
  766. .tl '--''--'
  767. .po
  768. .vs
  769. .lt
  770. .ps
  771. .ft
  772. ..
  773. .rm CM
  774. . \" I - italic font
  775. .de I
  776. .nr PQ \\n(.f
  777. .if t .ft 2
  778. .ie \\$1 .if n .ul 999
  779. .el .if n .ul 1
  780. .if t .if !\\$1 \&\\$1\|\f\\n(PQ\\$2
  781. .if n .if \\n(.$=1 \&\\$1
  782. .if n .if \\n(.$>1 \&\\$1\c
  783. .if n .if \\n(.$>1 \&\\$2
  784. ..
  785. . \" B - bold font
  786. .de B
  787. .nr PQ \\n(.f
  788. .if t .ft 3
  789. .ie \\$1 .if n .ul 999
  790. .el .if n .ul 1
  791. .if t .if !\\$1 \&\\$1\f\\n(PQ\\$2
  792. .if n .if \\n(.$=1 \&\\$1
  793. .if n .if \\n(.$>1 \&\\$1\c
  794. .if n .if \\n(.$>1 \&\\$2
  795. ..
  796. . \" R - Roman font
  797. .de R
  798. .if n .ul 0
  799. .ft 1
  800. ..
  801. . \" L - listing font
  802. .de L
  803. \%\&\\$3\fH\\$1\fP\&\\$2
  804. ..
  805. . \" LB - bold listing font
  806. .de LB
  807. \%\&\\$3\f(HB\\$1\fP\&\\$2
  808. ..
  809. . \" UL - underline in troff
  810. .de UL
  811. .if t \\$1\l'|0\(ul'\\$2
  812. .if n .I \\$1 \\$2
  813. ..
  814. . \" SM - smaller
  815. .de SM
  816. .ps -2
  817. ..
  818. . \" LG - larger
  819. .de LG
  820. .ps +2
  821. ..
  822. . \" NL - normal
  823. .de NL
  824. .ps \\n(PS
  825. ..
  826. . \" DA - force date
  827. .de DA
  828. .if \\n(.$ .ds DY \\$1 \\$2 \\$3 \\$4
  829. .ds CF \\*(DY
  830. ..
  831. . \" ND - no date or new date
  832. .de ND
  833. .if \\n(.$ .ds DY \\$1 \\$2 \\$3 \\$4
  834. .rm CF
  835. ..
  836. . \" \** - numbered footnote
  837. .ds * \\*([.\\n+*\\*(.]
  838. . \" FJ - replaces FS after cover
  839. .de FJ
  840. 'ce 0
  841. .di
  842. .ev 1
  843. .ll \\n(FLu
  844. .da FF
  845. .br
  846. .if \\n(IF .tm Nested footnote
  847. .nr IF 1
  848. .if !\\n+(XX-1 .FA
  849. .if !\\n(MF .if !\\n(.$ .if \\n* .FP \\n*
  850. .if !\\n(MF .if \\n(.$ .FP \\$1 no
  851. ..
  852. . \" FK - replaces FE after cover
  853. .de FK
  854. .br
  855. .in 0
  856. .nr IF 0
  857. .di
  858. .ev
  859. .if !\\n(XX-1 .nr dn +\\n(.v
  860. .nr YY -\\n(dn
  861. .if !\\n(NX .nr WF 1
  862. .if \\n(dl>\\n(CW .nr WF 1
  863. .if (\\n(nl+\\n(.v)<=(\\n(.p+\\n(YY) .ch FO \\n(YYu
  864. .if (\\n(nl+\\n(.v)>(\\n(.p+\\n(YY) \{\
  865. . if \\n(nl>(\\n(HM+1.5v) .ch FO \\n(nlu+\\n(.vu
  866. . if \\n(nl+\\n(FM+1v>\\n(.p .ch FX \\n(.pu-\\n(FMu+2v
  867. . if \\n(nl<=(\\n(HM+1.5v) .ch FO \\n(HMu+(4u*\\n(.vu)
  868. .\}
  869. ..
  870. . \" FS - begin footnote on cover
  871. .de FS
  872. .ev 1
  873. .br
  874. .ll \\n(FLu
  875. .da FG
  876. .if !\\n(.$ .if \\n* .FP \\n*
  877. .if \\n(.$ .FP \\$1 no
  878. ..
  879. . \" FE - end footnote on cover
  880. .de FE
  881. .br
  882. .di
  883. .nr FP \\n(dn
  884. .if !\\n(1T .nr KG 1
  885. .ev
  886. ..
  887. . \" FA - print line before footnotes
  888. .de FA
  889. .in 0
  890. .if n _________________________
  891. .if t \l'1i'
  892. .br
  893. ..
  894. . \" FP - footnote paragraph
  895. .de FP
  896. .sp \\n(PDu/2u
  897. .if \\n(FF<2 .ti \\n(FIu
  898. .if \\n(FF=3 \{\
  899. . in \\n(FIu*2u
  900. . ta \\n(FIu*2u
  901. . ti 0
  902. .\}
  903. .if !\\n(FF \{\
  904. . ie "\\$2"no" \\$1\0\c
  905. . el \\*([.\\$1\\*(.]\0\c
  906. .\}
  907. .if \\n(FF .if \\n(FF<3 \{\
  908. . ie "\\$2"no" \\$1\0\c
  909. . el \\$1.\0\c
  910. .\}
  911. .if \\n(FF=3 \{\
  912. . ie "\\$2"no" \\$1\t\c
  913. . el \\$1.\t\c
  914. .\}
  915. ..
  916. . \" FV - get leftover footnote from previous page
  917. .de FV
  918. .FS
  919. .nf
  920. .ls 1
  921. .FY
  922. .ls
  923. .fi
  924. .FE
  925. ..
  926. . \" FX - divert leftover footnote for next page
  927. .de FX
  928. .if \\n(XX .di FY
  929. .if \\n(XX .ns
  930. ..
  931. . \" XF - actually print footnote
  932. .de XF
  933. .if \\n(nlu+1v>(\\n(.pu-\\n(FMu) .ch FX \\n(nlu+1.9v
  934. .ev 1
  935. .nf
  936. .ls 1
  937. .FF
  938. .rm FF
  939. .nr XX 0 1
  940. .br
  941. .ls
  942. .di
  943. .fi
  944. .ev
  945. ..
  946. . \" TS - source file for tbl
  947. .de TS
  948. .rn TS @T
  949. .so \*(//ms.tbl
  950. .TS \\$1 \\$2
  951. .rm @T
  952. ..
  953. . \" EQ - source file for eqn
  954. .de EQ
  955. .rn EQ @T
  956. .so \*(//ms.eqn
  957. .EQ \\$1 \\$2
  958. .rm @T
  959. ..
  960. . \" ]- - source file for refer
  961. .de ]-
  962. .rn ]- @T
  963. .so \*(//ms.ref
  964. .]-
  965. .rm @T
  966. ..
  967. . \" [< - for refer -s or -e
  968. .de ]<
  969. .rn ]< @T
  970. .so \*(//ms.ref
  971. .]<
  972. .rm @T
  973. ..
  974. .if \n(.V>19 .ds [. \f1[
  975. .if \n(.V>19 .ds .] ]\fP
  976. .if \n(.V<20 .ds [. \f1\s-2\v'-.4m'
  977. .if \n(.V<20 .ds .] \v'.4m'\s+2\fP
  978. .ds <. .
  979. .ds <, ,
  980. .if n .ds Q \&"
  981. .if n .ds U \&"
  982. .if n .ds - \%--
  983. .if t .ds Q ``
  984. .if t .ds U ''
  985. .if t .ds - \(em
  986. .ds ' \h'\w'e'u/5'\z\'\h'-\w'e'u/5'
  987. .ds ` \h'\w'e'u/5'\z\`\h'-\w'e'u/5'
  988. .ds ^ \h'\w'o'u/10'\z^\h'-\w'e'u/10'
  989. .ds , \h'\w'c'u/5'\z,\h'-\w'e'u/5'
  990. .ds : \h'\w'u'u/5'\z"\h'-\w'e'u/5'
  991. .ds ~ \h'\w'n'u/10'\z~\h'-\w'e'u/10'
  992. .ds C \h'\w'c'u/5'\v'-.6m'\s-4\zv\s+4\v'.6m'\h'-\w'c'u/5'
  993. . \" AM - better accent marks
  994. .de AM
  995. .so \*(//ms.acc
  996. ..
  997. . \" TM - thesis mode
  998. .de TM
  999. .so \*(//ms.ths
  1000. ..
  1001. . \" BX - word in a box
  1002. .de BX
  1003. .if t \(br\|\\$1\|\(br\l'|0\(rn'\l'|0\(ul'
  1004. .if n \(br\\kA\|\\$1\|\\kB\(br\v'-1v'\h'|\\nBu'\l'|\\nAu'\v'1v'\l'|\\nAu'
  1005. ..
  1006. . \" B1 - source file for boxed text
  1007. .de B1
  1008. .rn B1 @T
  1009. .so \*(//ms.tbl
  1010. .B1 \\$1
  1011. .rm @T
  1012. ..
  1013. . \" XS - table of contents
  1014. .de XS
  1015. .rn XS @T
  1016. .so \*(//ms.toc
  1017. .XS \\$1 \\$2
  1018. .rm @T
  1019. ..
  1020. . \" IX - index words to stderr
  1021. .if \n(.X .do nr IXcount 0 1
  1022. .de IX
  1023. .ie \\n(.X&\\n(.k \{\
  1024. .do de IX-\\n+[IXcount]
  1025. .tm \\$1\t\\$2\t\\$3\t\\$4 ... \\\\n(PN
  1026. \\..
  1027. .do nr IXsaveX \\n(.X
  1028. .do xflag 3
  1029. \\P[IX-\\n[IXcount]]\c
  1030. .do xflag \\n[IXsaveX]
  1031. .\}
  1032. .el \{\
  1033. .tm \\$1\t\\$2\t\\$3\t\\$4 ... \\n(PN
  1034. .\}
  1035. ..
  1036. . \" UX - UNIX macro
  1037. .de UX
  1038. .ie \\n(UX \s-1UNIX\s0\\$1
  1039. .el \{\
  1040. \s-1UNIX\s0\\$1\(dg
  1041. .FS
  1042. \(dg \s-1UNIX\s0 is a registered trademark of The Open Group in the
  1043. U.S. and other countries.
  1044. .FE
  1045. .nr UX 1
  1046. .\}
  1047. ..
  1048. .co
  1049. .if \n(mo-0 .ds MO January
  1050. .if \n(mo-1 .ds MO February
  1051. .if \n(mo-2 .ds MO March
  1052. .if \n(mo-3 .ds MO April
  1053. .if \n(mo-4 .ds MO May
  1054. .if \n(mo-5 .ds MO June
  1055. .if \n(mo-6 .ds MO July
  1056. .if \n(mo-7 .ds MO August
  1057. .if \n(mo-8 .ds MO September
  1058. .if \n(mo-9 .ds MO October
  1059. .if \n(mo-10 .ds MO November
  1060. .if \n(mo-11 .ds MO December
  1061. .nr _Y 1900+\n(yr
  1062. .ds DY \*(MO \n(dy, \n(_Y
  1063. .nr * 0 1
  1064. .IZ
  1065. .em EM
  1066. .rm IZ //