IMD 1.16: 1/09/2008 11:11:58 84-93171-06 b010 f17106 cartos pascal library release diskette 15mar83    @0{)vvЀЀsQpk)p " }fA __M@IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIOS4 MB083031509170800830315091708 830315091708AF17106 VOLPASCAL LIBRARY, CODEGENERATOR, AND SYSTEM INTERFACE   IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII_M@qGyy GGG`HX@ b G`^Y e GQ @@p@987 85P@ G:پN 8)0. * C'xC# b# }B* @0DAJL w+™ЀЀΖQA1"   i  ž} š} @EEFF)DEۄF8 џ} ԟ} ̟} * `jUBBI,v BI, # @ G7H@pܾrCHC C GTq` Lg gEXC P+s=胾P+c fQN p $Rxnj  ޔniZ ތ⊞ } }HGž Ÿ@ALS)"$ C k20j.h( +$`%ꂜ\1 !M' y %'+os慾)sY ed|{ @8 o O m J K i gN )V% t%sLn`"E F. F„ D>) =`;nrgy w"G,{Kq1 A&}E*`(t@% ;c  765y342(.OS:: SYSG @ @G6BDāCGDĀ# BC @E OBOVicEdDanon/@@X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'X'@>P P`P P* kj kjABBK kjBkjkj Bkj(z STOP (%N) e` O`Be yƣkjr# K ` ѝukj`1Alkj k>jSg A300 g!mmmm/ †kj# eec/e9S1# 9=S1# =eeS1e  e eeee[eeeS2e eee@A?S2BFG  e݃EBDF eS2# `PBp#V P *   B @kjkj kjeeeeABEF CEI `+$# BEF CExI `+%#  B CmI `+&#  #  )EG `+# BC DzF `+Bā# z # @pc # o@# mlm mmmmmmmmmmmmmmfmm@kj# kjBkjB# ` BB k#jݣk#j݇ޣk#j݄bk%jۄek&j@ek#jk&j@bk#j k#jݣk'jٌb@k#j ak#jbk#jݞţk'j@bk$j k$jܣk(e`Bfg$[fVyWfOMzeolzg+pj،b@ɣck$j a_k$j܀bk$j܄cbUk$j# õQBkj # Bkj!# BkjC@G K0HIBkjC@G 0HIBkjBB# gEmeg^gcegign eB IĀ؄GBHՄI kjIQTţkjǣkjkjBkjkjEBFBTGEkjkjkjäQF $kjkjkj;O[`gtgyfg|g=hqBCmkj҂ңkjCBkjkjƣkj# QkjkjB÷QRDkjFBGFkj kjHǢ^kjBkj` C@`KQ _`“aHǐO{h`Z<FecBN?C؃Iւ߇ԇ_k"j` CI,`Q `qI__`fCk"jޞf_fICk"j ,`Hǥ_k"jބ` I `Qt __`f@Qk"jޞh_fIQk"jޞ@B;AD|Vek"jބQsk"jބ` a `Ha `HZ k"jއk"jޟIǫk"jއk"jޞHǚ?I>k"jބak"jޞH30HNj )CWXe?eeeI̞Ђˣk"jޞlI gÿck"jއ_k"jޞ 5g Zn }x}hI `QA݀Ck"jއKfCk"j ck"jQSQk"jއKfQk"j ck"jޞIǹCk"jނaE# BCBǰKǜKeǛʛǫʙǙKǘCBIǕǢ AkjIϝQ ls mhi=FmG<cB;ef:dt>EBKG؇؇؇؄DIeE DZ DKDDEtrIDNEDI DKDEwuA@Ǵ? @IĀ IǮkj kjkjkj ykjIkjH{~njkIobcrMJf ԋԇӣkjIZQ A ʞɟɣkj# łńDQ   EFEDkjkj°DB+}EFEDkjIϤQPkjÏkjkj# [F>fE^e?h`hh}hhA;Oh<ɣhkj# BC JBJLM `+LIIkjKINONJSNIkjTSCkjNKNOkiKJJLKLLMQOJPICk jC# hfeAe !~HF ^d @ @g$ CG4 (A310) 2 ERROR: Insufficient Stack Space (%N Words Short) n1 ERROR: Insufficient Heap Space (%N Words Short) TEMP.OCDl TEMPnn.OCDTEMP.XRF TEMPnn.XRF xxxMACRO (ERR) CROSS-REFERENCE BY  PROGRAM %S  TITL %S %S Code Generation By Debug code ONSTART:: MACRO !L EQU $ SHARABLE CODE:RAM SHARABLE CODE:ROM ROMMABLE CODE:ROM SHARABLE DATA:RAM SHARABLE DATA:ROM ROMMABLE DATA:ROM COMMON GLOBVEC: SHARABLE GLOBVEC: GLOBVEC: REL 0 G:: EQU  WORD #(1) RES #(1) ORG !L CV ENDM PRESET:: MACRO LPOOL !L EQU $ !V EQU #(2) ORG G::+#(1) WORD !V ORG !L ENDM * BRTN XMACRO  RSK EXTR B:EXIT JMP B:EXIT@ ENDM SAVE  END OF NAME LISTING iBĀ;CIlBQI fBICQC *Bã,DĂ *Bã&ÃsuCăʄICQFńĆ eBɠCdĠC`IĀ fBICQOVèă CFãĄ# B  B    -B      : :;vwxjܣkj kj Ap *S cM dK eI fS iE kC lC = =[# BHIBQEkj  t# BHIBQEkj  # BÜCCHI@kjIC@kB}fhi[i hi`jCIBـCkjCCрBkjBCkjIC@XkjCBkjBCkjIC@CkjCC6kj 2kjC An *9 c? dR l3 c afffi#ՀCkjAҀBpkjBkjQBǞƞ =kj# BBCCNq@kjBkj CUBkjICQLBkjBkj C  C   Y YIBBjz fi/i6[CУkjCʞBkjB DBkjDB A{ *n ee f" i kU ldnIBBCBBkjAB /# Bڞ͠BkjBkjIBB` i=Fh BtkjB IC   DBC kjC CCDsqBJQ   X BBkjBBB As *F l* llÉBkjA# fjzBIYQ󞜣kjC@Уkjkj@ LkjkjBJB BkjkjBñQB >YkjkjC@kjCkjkj@ LkjWKiEZ}iMiT[Ai[id`kjBJB BAD# J @Jģ\kj kj  /# B@G*Kϩ@AǧkjBGIkjICBD2k jICkjCKCDpn 7# BkeIsikBkjC@GKn@A llkj DCEDBk jJDZ[kjDKDDEmkM '# Kkj@GKA@# =<;njlj2 # ^[]\QRBICDC CKCDwu CIeDƈC BÿC @ CKCCDnlB˲DZ# B Iǧ BIϢQݣCDEC IEQC EICQģ FIdž sMNlfgekj JDCkjEgkj `kjIYBX# BInϼQţkjK ïQ# FBkjBkjÞQEkjBɂkjØJǖ n kbHKi[F jIokBkj# BbkjJ Iq ğkjöJǴ kjêJǨ IGâ 6kjkjkj GI%kjkjIGI kefIoMNjstkjm kj feeIăȃbkj\]kjV kj ONNIăç G%B@ f g ɞ ˞ ̞OgLd-.# Bkj BߣJQۣg IdQT _kjGkjI ǪQIBQ J F  A   B  B  5Ikj# fMNykjvkjEkjFjBCD@ kjBCāDTkjLFQLH kjAkjEL kjkj# egBICD!kjEElkjCCBbJCB @kjIDDE E\IBCQΠEDkj kjIFDGIEE @LkjFKFiiGig# BCM MJQn ˏúǸCǵDIBQϱQăïǯCDǪ BCǦDIϣQăáǡCDǜ# BBkjC# kjs# SQRTWUVXYZ][\^BC DCĀBDCBDCă# B   B  # <=JNi; ORG $-1 :Attempt to DUPlicate %N more words than there are on stackB/Attempt to split a stack element with DUPlicate@E mkjkjkjkjkj Au _ b e hlI # B MIBQJ BGB ? D # kjBCDJQǀBIDQ gEIFGHIJK LÏMEI ψQF CI ςMJfgNiQoBICQOlkjPIDQM `JI ]QGDCKJFWM CIN QEI@HQ FMkjLILQ߃=Mƒ;8xNMkjNCJI!)QI "&FI##QC $ ÀC   JSОMkjLEQEJAJ kjIR %SITL kjL kj򟦀EDJ@AJGEQDJ JL kjHI PLQ RIQB 7 8/SI  k TQPukjp RI4S TL hkjc·Ϸ PSLQ RSQ 4 5*S  1ITQPKkjFEQDJKJ@ICQJQH8JRLSITC 0kj+? FHIFGEQDKJJICQJQ HEQT ƀKJA KJAyJB ~JICQJQLJRLS TC kjIQA kj RI%S TL kjÊRLSITI M  kj uIsQ@RLSTI ,lkjL kj`EQFJ G JX ICKJM CƌJHEJEMkjLICQ JHH6 NgN܀J̄SI7TNUI !kjNKNN iC  FCkjRòMQƒP1MI ǯkj CMJ kj RI STI kjJR &SITC kj kf:JjIEQJ JGK@G JȀEJIJQGK@G JkjC  FCJkjOFkjAAkjIC:J 8kj—ϗQR STI ,kj RI6S  g?TI kjIR 6SITI&  kjJRI&S TC kjIQB  L   kjHIEQIICJKJKJ;ICQƀIJHHIB  DPJRLS TCPkjEQEK JJL kjEQDKJJJRLSITC `kjIEQOIFKJUB UKJUBUU JICQa L  `-N@kj kjIS %TIUN "+kj Q f LR SIQB 8 72TIURQkj SI%TUN #kjNkjUJSEI I@AJRM PLQ RIQB 8 7+SJTQPkjQDEIJ/ EQ[ ɀKJ KJ JB JF@IFE[IϳQɀKJ KJ  JB  JIN OFQD NIO kj TCUJVL 'kM  jNkjOkjImQ 'kj kj TLUVI kj kjQTLUIVI kjCkjɃ< Au        jiw9Xj    ! " # $ % ? @ A B D 0ECICLCIJHŀLkjGQFL kjBGCĀJJCkj# FD$1VfۄBIǨǨ IǤǤkj Bkj Av d f h !k &Xk# []QSUW`j  i'Illegal pending type %NUnknown op %N in Pending(System error - CLEARREG(%N)@!$2BC󄀣Cākj# 逃kjkj# A IqQAH@I@ A GBB  !U@Ikj IGI 2kjkj 3kj 2kj 4kj 5kj냚kj 7kj Iă &kjgMfe!f0kjkjj ikj aIGI `kj &^kjRkjK Au $    K I G E C A q\ -# f1j!![B&C CI4BQσkj ȃkjCkjCHBkjI &kj &kj# IϦQC  kjIF %GIHI kjFI G HI kjIσM Qt I kjF GHI ,dkj ]CIZQI kj QCINQI kjGIDG EIFG 6 8"pGIHED4kj# kjɀ  kj kjIF 6GIHI& kj 8kj IˣǢ &Iăkj kj kjIF@ kj# feQSUW[]   #~Ikj ̇̇̇I ^kjE FE VkjkjI kjI kjI kjI kjI kj(Iă' %""kjkjM#uvwxf1tأkjm vE qO ʠ#7#_#)#"#_# #_#_#>#>#>#>#># BCkjAF &k j k j k jCM &NIOB k j MDNEOI& k j@`KM` Nj0#gIFk jGCM &NIOB ik j` M@`KNGFk jHIMDNEOI& Pk jFNHQLMIN OI @k jFQɀGHQE k j &k j# ef2ڄBCDFEGBTCQR FOI FQLlLIM NI kjBQSCIFQC F˄LIMSNI kjIGE F GLK MINK kj D E$y "D Fԣkj F At Q T j P Ii#   $'IkjI kjìkj Au lr# B . 1 $CBMM EID 4E_jCMjRuQC 6EI/BQE 1BBID JEK LIDkjC[# BykjBCDEJQC E kjFBD KILDMF kjBIĀBDEKD kjDKIFkjIJKDCkjBIĀB# B JQ BāBJQ %K%K# BêCI@kj K kj DJQ̃kjCBǑ kjCff4gM N &kjCH 3kj# BCbDIEBFDCQFC kjENO@ADE EEFki# BC DIEFCkjGDJD@kjDkjEEIFFEf3GcGJ£kj BkjDCă F@NDHIIDDHJ @HJDāHJDHJDăH HHIcaDǏJǎkjkj# j`Bfgju[!$!0!?""#$z$$%7%L%f0 !"%$%j!aUnknown floating operator %NG$Unknown double precision operator %NFIllegal mode %N in COPYDOUBLEUnknown complex operator %N)Attempt to split stack element in CONVERT* Stack after CONVERT is @&0+BC DIBQ IQC IQC IQAH@I A EFCCC&Z-FIϞkjÇ IBQĀC FûGFCDQ +FFGrp &EàĂDIEQǣBCāEFEFāDkjfedMOgwvsuMĞ kjkkj# BCbkj]BCQ BDICBkjD kj DCIDQ?kjEIJBKCLE kjDJCBkjCJBEkjBICJkjkjkj# BCEùFEBCQF BCQ kjE EFig# BCIϝQ BIǗCCIϑQB BCSf'edMM?rӀ SM?DeD`āBCā '# B CIBQ  ;B  .'' CIBQ  Bƒ '' DkjEC0' FEQC('bGICQ FžgLf:G؀ IFQC FEQU HiH ?IFK@Kk j#   IFĀ# EMMkjCkjIǣkj JQ̀ ?I;BQ = ((9C kjfsMJvCĀsDDkj IDQŃekj# S   T ; (`(`(`̣kj CJQЀDE@FGEDkj kj/E FGHE kjeKgkj@Np@A@kjkj# BCkjFIQɀEKFCBkj¹ϹQD ?kjkjIKF kj Iǡ kj-J@kj FIaAQP !BFI+BQC B %6kjI0C*kjDC%kjD!Cf{YZDDI JCBpkj lkjDCgkjdkj# BéQHkjXkj# BC HIJBkj# BC’ϒQEkjDICBkj# b?lGBCvkjI&EQ ʇllQ Ekj£dkj]]DCkjH EkjI˩Ǩ# BGcB BBkjBkjB Ay c o mrFstlXBGI kj# BGI% kj# Bd ɠB_kjɠBU  MBN Q L<%<%CBFJQŀBkj LC  QC <;<; B1B/,BCkjIQCFQ`li lnΞ͞2>?Jf{;lG^!Floating point code requires M490!Floating point code requires M490 %S EQU $  %S $ ESETEQU WORD WORD :%X4  JMP  JMP LPOOL * :%X4%N(Y)G%N=%N V * Code begin * End code S@?t݄BO Gu# BICD HEFGlG k CVjG !xGJQˀH D@ADCCGJQG IHG FGJQCG IHH F G1GJFO \ G G O \ G HCEJEk CVjG 5F GEFCO G Ffff 8PkjGG \PkjGGV\\ CGVFPkj\ \ GuB 'AG&GƒAO GBCkj kjDBkj ECkj kjFCkj GEBCkUjJ HIHED IxJHFKKHJ I H HIb` I# I@IB# B# @I.@`Kkj (kj nkjIC (DC  CKCDwu CIDGQBI$HCIHGkjCkjDI¬kjDkj GQBIH IHGkjCDkj# m|ecBg llfOlNllUBC dmkjEDKCDkj GI$HGE GKGGHvtEBĀICkjqGICkjGED:EICkjIGHEK KGCk jMGKk jGKGbfeHfd# KIfJl UC OCCI{ULoSL.@JeB ( B BBGkjJ|J|Z# BC D E $ KJkjFIEQ@ ETCQ FOI FQL $DI LEkj EEDIĆ BI$D` LJEJkj DI$DJELK@`KM` NKJkjFSB@ J# f|lbe_L]BHkj# BIkj# BC dkjF‚ GI$HGF GKGGHvtI FDBkjGFkjkjFID5kj CNFĀKnfmfFC@`K IIDkjr)I` @`KIDkjvHŒGGIGQ‚TGK]FIIkjvV@`K)IIkjv GJBKzGBGF @`K)@Ikjv GBG KXfbg `K,EGFkjE (GkjGŠGFĀG GkjIGQǀFkjGK# |n}Je~J}FJGJfJKlI@KӄBCkjDk jIk jIEFJ GHDQ@Bk j  k j k jIGEGD@Bk jK IGGDBk jK AKk jIGGWIBk jLIMGNLOLfONjMLYNBukjP CI PQPUMCkjIMMN NOcaMJRICkjEhINkjO I OQOTNCkjINN 1NINQIN SICkjI%k jJVek jFL# BCLrkjCI CQCCL# KfL@L>BC BIĂBCBDĄBEBFĆBGBHĉk jBk jI(IIŠIBĀI Ik jIIQ‚IL# |L@LBkjCBIBBkjCL# BkjCBIBBkjCM# }NLOM@MABCkjDIEFŠBECkjDŠCFQG @@kj ETEQH˓ @ EIĈ FFECĈFB MSMS# }|UUM@MWkjB kjBkjMf# LPMW@MjkjB kjBkjMy# MQMj@M}V } (BICB EBkjBJBCBqoI kjI kj@`KBC + ` K kjIDQŠCGBkjȠBQCJĀ BGMCK BKI@`KLIkjkj # |~[z[nkjI(BCBpDI CQŀBhkjB B # B\ CIDBQJ¹kj   kjDkjB= kjDB kjF kjkbNOlMl[jFtkjDFE CKQ@  CKQ+ @`K kjFN~ HBkjGA C@`Kkj C@`KkjFNNNNN*E-kjB &kjESC Ca~\|BJ@EkjDCkjDN# nM}MN lW-You are not allowed to close SI, SO or LOG @NIkjB‚Þ E DQE˺ @IĈE + J@`KK` LI kjIDQBD kj FIGFE FKFFGvtkjEBO#  L|[RN@OekjB‚ CIBQ B退D CQE @IĈD @BkjE@`KFA D@`Kkjy D@`KkjyD DK )zIӣkju)|F` @`KIkjyEŒCCICQ‚COz@D @`K)|@Fkjy CBCDOM|~\afX` kjIE FED EKEFwukjDBO# SO@O0B@`KC` !FBkj_BICkj[)F` @`KICkj_EŒDGIDQ‚DO @`KFkj_DO# fXcIO@OABC` D@`K$E` >H@`KIDBBٞECBОID˄H` @`KIDGŒFGIFQ‚FP9"IEI` @`KIEGŒFGIFQ‚FPZ ` IHFPe # >fB3X\!JO@Pn"kjB CIBQH–kj  kj P# L|mbXPnm0@PkjB CIBQJkj EHBkjCIąEECHEQEEBɠCCFE kj+$ kjGIFCĆG CIąCJG+ BL@ kjBĀIIkjGCBL‹kQDL|mb~fmj CI$CK ML@`KN` OLKk jIHQĠCCHĄGQ: C CCIĂCQD# ]VPm 0interlocked with @QFaBkjC DICQJԣkj EJIĆD E@AEDĀEȠDB kjE  $DDBJkjD I BQH BED ICkjFJI DCKFkj Q# M|m be~YQFm 0@QlBC @`K ekjkjF kjDKCBkjFkj dkj# BCϞΞ̞͞˞ Ȟ|xŞwl QQQބEkjIEQFEkjkjBƺR=BkjICkj`f` MOcBm mm"m2m;UmF[mMmOmSmUfFCdkjDRM(Zkjkj# mXm^ZbQcQfm WNo buffer space leftdAll streams in useOIllegal stream number selectedtNo current streamFile descriptor error I-O ERROR: %S Code = %N:%X4 on file %S , stream %N@RV=BC D @³Ā#  @HĀDC kj# E @DECāDECIE ED FECEKEMr# |TRV@RVBC` D@`K)v ܞ)ϨC )K) s€Bkjn@)vϣkjj)D` @`KI)vkjn )HQ CIC CՄCDkjn# I)Q‚ϞRC# fX\HR@RB C KQB kjR# |R@SB ) CD KQB S# |S@SB@`Kkj CF‡Ckj# cmdxnSmd FRMEM0 error @S(B @`KI@`Kkj DFˆDkjCS<# cxmkxmS(mk GTMEM0 error @S@nBI/GIkj# B :GIBkj# BC@`KE G@`KEkjIRIBkj NIGGCNE @G6FK0SGBkj GGCNE @@G!F 0SGBkjIGG NHDSGBkjN N C# fce rS@tSIfSS@S ` BIJ@`K k j KJ GKBȀK̀JK K pJS# cGJDGk CfjDDGBk CfjCFk jGaGk CfjZGBk Cfj7NI OBCk 1jGIBk j JG X K IBksjkCfj BYKZKkjZIIQOIBk [j I/GJQ  ZJ Z ENIBk jGZ;# BC @DE DkjFIG H G >FA Fk CfjIA[dQXFIHIF F DI[HEFBk CfjCDk jFGKGHDBF[4|# BkCfjCBkCfjCI:BQAH@I@ _BA G# B A BMZIH@@# B 0 BM9IH@@# BC FG@CkjHBGk jIIFFE HHIN@Ck jBGk jIDk jHN@XXCk {jI[# BCIkrj DCI@BkjjDIIBkcj# fZOZ[5[N[a[@[BCFk jGF CGDGI ċCEEDā [FF[# b@[BCDkjED 򞈀CEFC \DD\# b@\BCkjDCC IJIBkj\\CC\# b@$d@\!=0 -> absolute, <0 -> relative } nonedefined = (n______n); {%S 1} priv = (realtime, systemservices, nofileprotection, nouserprotection, memorylocked, maplocked, privu1, privu2, setsystod,  allowuids); {%S 1} loadflags = (ownmap); {%S 1} envflags = (run_real_time); {%S 1} edb = Record id: ident;  controlblock: address; flags: Set Of run_real_time; resourceblock: address; { of an erb, but not a pointer } res1: reserved; taskhead, mailhead, sem4head, sharhead, queuhead: address; { actually Heads of several chains } res2, res3: reserved; exceptionvectortable: address; inittdb: address; { of the initial Task to execute } initpriority: pridesc; check: checkedb..checkedb End; {%S 1} erb = Record priviledge: Set Of priv; maxpriority: 1..maxint; ecbadd: address; res1, res2: reserved; empsize: size; empaddress: address; maxmaps: -1..mapmax; res4: reserved; maxsmall: nolimit..smallmax; maxmedium: nolimit..mediummax; maxdoor: nolimit..doormax; res5, res6, res7: reserved; check: checkerb..checkerb End; {%S 1} taskflags = (oldbcpl, Pascaltask, u2, u3, u4, u5, u6, u7, u8, u9, u10, u11, u12, u13, u14, inityspace); {%S 1} tdb = Record peer: address; { of next TDB in this eivironment } flags: Set Of taskflags; res1: reserved; noexecutions: 1..maxint; { Maximum Number of concurrent executions } yscratch: size; { or Address of Template } stackaddress: address; stacksize: size; start: address; { of the Task } qdbaddress: address; { of QDB for each activity } id: ident; res2: reserved; check: checktdb..checktdb End; {%S 1} bpl = Record id: ident; priority: pridesc; res1: reserved; check: checkbpl..checkbpl End; {%S 1} mailflags = (subsend, subrecv, peersend, peerrecv, initmsg); {%S 1} mdb = Record peer: address; { of other MDBs in this environment } flags: Set Of mailflags; id: ident; res1,  res2: reserved; aq: Long; check: checkmdb..checkmdb End; {%S 1} mpl = Record id: ident; environment: envid; res1: reserved; check: checkmpl..checkmpl End; {%S 1} sem4flags = (event, nomaxexception); {%S 1} sdb = Record peer: address; { of other SDBs in this environment } flags: Set Of sem4flags; id: ident; res1, res2: reserved; initcount: 0..maxint; maxcount: 0..maxint; check: checksdb..checksdb End; queueflags = (peerput, subput, peerget, subget); {%S 1} qdb = Record  peer: address; { of other QDBs in this environment } flags: Set Of queueflags; id: ident;  maxqueue: 1..maxint; res1, res2, res3: reserved; check: checkqdb..checkqdb End; {%S 1} ublock1 = Array[1..12] Of Integer; { or anything that is this size } ublock2 = Array[1..12] Of Integer; { or anything that is this size } {%S 1} qmb = Record env: envid; qid: ident; id: ident; flags: nonedef ined; rqid: ident; priority: pridesc; res1: reserved; check: checkqmb..checkqmb;  msg1: ublock1; msg2: ublock2 End; {%S 1} cpl = Record id: ident; flags: nonedefined;  sem4id: ident; when: time; res1, res2: reserved; check: checkcpl..checkcpl End; {%S 1} twodigits = Packed Array[0..1] Of Char; datetime = Packed Record year, month, day, hours, minutes, seconds,  hundredths: twodigits End; {%S 1} dayofweek = (sunday, monday, tuesday, wednesday, thursday,  friday, saturday); {%S 1} shareflags = (peershare, subshare); {%S 1} smd = Record peer: address; flags: Set Of shareflags; id: ident; res1, res2: reserved; low, high: address;  check: checksmd..checksmd End; {%S 1} sml = Record res1: reserved; flags: Set Of shareflags; id: ident; env: envid; offset: size; low, { must be congruent to 0 mod 1024 } high: address; { must be congruent to 1023 mod 1024 } check: checkspl..checkspl End; {%S 1} lplflags = (uu0, uu1, uu2, uu3, uu4, uu5, uu6, uu7, uu8, uu9, uu10, uu11, uu12, uu13, noexcept); {%S 1} lpl = record unit: lun; flags: set of lplflags; offset, { ==> relocation base } high_limit, { ==> upper available memory } low_limit, { ==> lower available memory } execution, { <== -1 if not present } highest: address; { <== actually used } status: except; { <== standard error code } map: 0..15; { <== } top_down_step: address; { <== } res1: reserved; check: checklpl..checklpl end; {%S 1} gfnresult = (valid, delimiteronly, invalid); byte = 0..255; bytefile = file Of byte; pointer = ^Integer; type_of_device = (unit_record, directry, userfile); typeio = (readonly, readwrite, ro_samedir, rw_samedir); machinetype = (dos2, dos4, os4, cartos, unix, omnix); openresult = (good, bad, nonempty, created, filenotfound); cfi = Long; psucfi = Array[1..2] Of Integer; name14 = Packed Array[1..14] Of Char; name8 = Packed Array[1..8] Of Char; extensiontype = Packed Array[0..3] Of Char; pname14 = ^name14; pname8 = ^name8; psuword = Packed Array[1..2] Of byte; word = Integer; read_or_write = (read_and_write, read_only, write_only, append, just_connect); rwtypes = (formatted, prompt); rwtypeset = set of rwtypes; {%S 1} buf = packed array [0..511] of char; filestatus = (keep, delete); flagnams = (asciidevice, promptable, dirctry, rdbit, wrbit, txtbit,  elnbit, eofbit, fileopen, deleteonclose, window); flagset = Set Of flagnams; fylep = ^fyle; fyle = Record ptr : 0..maxint;  {buffer[ptr] is 1st byte of next element in file} flags: flagset; {Flags (for non-global files, compiler sets to  [])} name : name14; {Name of file (if open)} ufd : lun; {Index into IOB's in workspace} size : Integer; {size of file elements (in bytes)} buflen : Integer; {size of this buffer (in bytes)} actual : Integer;  {the actual size read (in bytes)} maxused :Integer; {the last modified byte in the buffer} cfi : long; {the current file index} u1, u2, u3, u4: Integer; {reserved for future expansion} buffer : buf; {the actual buffer} End; %SKIP 1 pism = ^ismrecord; ismrecord = Record delimit: Char; { COMMAND LINE SEPARATER }  symbollen: Integer; { LENGTH OF INPUT SYMBOL(<=14) } decflag: Integer; { TRUE IF SYMBOL IS A DECIMAL NUMBER } decvalue: Integer; { DECIMAL VALUE } hexflag: Integer; { TRUE IF HEXVALUE IS VALID } hexvalue: Integer; { VALUE OF HEX NUMBER }  symbolbuf: name14; { SYMBOL BUFFER } bufptr: Integer; { BUFFER POINTER OFFSET } bufaddr: address; { USER BUFFER ALTERNATIVE } buflen: Integer;  { LENGTH OF USER BUFFER } temp2: Integer; { RESERVED WORD } check: checkism..checkism { ISM CHECKWORD } End; {%S 1} gfnstati = (terminator_only, bad_file, dir_found, pass_found, path_found, wild_name, prot_found, name_found, lun_only, gf9, gf10, gf11, gf12, gf13, gf14, gfn_error); {%S 1} pgfn = ^gfnrecord; gfnrecord = Record nameptr: address; { NAME POINTER } passptr: address; { PASSWORD POINTER } dun: lun; { DIRECTORY LOGICAL UNIT }  flags: Set Of nonedefined; { GFN FLAG } status: Set Of gfnstati; { GFN CALL STATUS } defaultunit: lun; { DEFAULT LOGICAL UNIT } extenlen: Integer; { EXTENSION LENGTH (SET BY SYSTEM) } initiallun: lun; { INITIAL LUN } protectcode: Integer; { PROTECTION CODE } temp1: Integer; { TEMP CELL } check: checkgfn..checkgfn; { GFN CHECKWORD } filename: name14; { FILE NAME BUFFER } password: name8; { PASSWORD BUFFER } ismrec: ismrecord; { FOR INPUT SYMBOL ROUTINE } End; {%S 1} psfmrecord = ^sfmrecord; sfmrecord = Record gfnrec: gfnrecord; { GFN RECORD } unit: lun;  { LOGICAL UNIT NAME } typedevice:type_of_device; { TYPE OF DEVICE } result: gfnresult; { RESULT FROM GET FILE NAME } connectflag: Integer; { LOGICAL UNIT CONNECT FLAG } dibaddr: Integer; { POINTER TO DIB OR FCB } fno: Integer;  { OS4 ONLY --- F# OF DIRECTORY } volptr: pname14; { OS4 ONLY --- MUST BE NIL OR SYSTEM   GOES SOUTH } initext: Integer; { INITIAL EXTENT (FOR FILE OPEN) }  sectext: Integer; { SECONDARY EXTENT (FOR FILE OPEN) } ptr: fylep; { POINTER TO FILE DESCRIPTOR --- SET BY OPENFILE } End; {%S 1} piob = ^iob; iob = Record iolun: lun;  peer: address; pcfi: address; op_code: Integer; requested_count: size; buffer: address; actual_count: size; status: Integer; sem4: ident; check: checkiob..checkiob; End; {%S 1} fibflags = (semi_trunc, un1, un2, un3, un4, un5, un6, un7, by_f_number, and_create, to_parent); fibflgset = Set Of fibflags; {%S 1} filetype = (byte_stream, directory, fixed_length_record, variable_length_record, unblocked); {%S 1} ibclass = (iberror, file_manager, fm_error, hard_disk, soft_disk, mag_tape, interactive, printer, card_reader, paper_tape); {%S 1} pfib = ^fib; fib = Record class: ibclass; flags: fibflgset; kind: filetype;  res1, res2: reserved; nameptr: address; passptr: address; res3: reserved; protection: Integer; blocksize, recordsize, initialextent, secondaryextent, formsize: size; formtype: Integer; check: checkfib..checkfib End; {%S 1} Function B_dsenv (who: ident): except; External; Function B_suenv (who: ident): except; External; Function B_reenv (who: ident): except; External; Function B_ldenv (Var load: edb; Var qid: ident; a, q, x, y: register): except; External; Function B_geri (Var where: erb): except; External; {%S 1} Function B_crsmr (Var where: smd): except; External; Function B_mapin (Var where: sml): except; External; Function B_unmap (Var where: sml): except; External; {%S 1} Function B_crtask (Var who: tdb): except; External; Function B_dstask (who: ident): except; External; Function B_bgin (Var who: bpl; Var qid: ident; a, q, x, y: register): except; External; Function B_end: except; External; Function B_gpri (Var what: priority): except; External; Function B_spri (what: pridesc): except; External; Function B_paus (what: pridesc): except; External; {%S 1} Function B_crmbx (Var how: mdb): except; External; Function B_dsmbx (who: ident): except; External; Function B_send (Var where: mpl; Var what: Long): except; External; Function B_recv (Var where: mpl; Var what: Long): except; External; Function B_sendr (Var where: mpl; Var what: Long): except; External; Function B_recvr (Var where: mpl; Var what: Long): except; External; {%S 1} Function B_crsem (Var how: sdb): except; External; Function B_dssem (who: ident): except; External; Function B_sig (who: ident): except; External; Function B_wait (who: ident): except; External; Function B_waitr (who: ident): except; External; {%S 1} Function B_crq (Var how: qdb): except; External; Function B_dsq (who: ident): except; External; Function B_qput (Var message: qmb): except; External; Function B_qputr (Var message: qmb): except; External; Function B_qget (Var message: qmb): except; External; Function B_q getr (Var message: qmb): except; External; Function B_qack (Var message: qmb): except; External; {%S 1} Function B_itic (Var clock: cpl): except; External; Function B_mtic (Var clock: cpl): except; External; Function B_ctic (Var clock: cpl): except; External; Function B_awal (Var clock: cpl): except; External; Function B_iwal (Var clock: cpl): except; External; Function B_cwal (Var clock: cpl): except; External; {%S 1} Function B_gtod (Var when: time): except; External; Function B_stod (Var when: time): except; External; Function B_cdow (Var when: time; Var day: dayofweek): except; External; Function B_ctoda (Var awhen: datetime; Var when: time): except; External; Function B_catod (Var awhen: datetime; Var when: time): except; External; Function B_gstod (Var when: time): except; External; Function B_sstod (Var when: time): except; External; Function B_gelt (Var when: time): except; External; Function B_gext (Var when: time): except; External; {%S 1} Function B_gfn(Var where: gfnrecord): except; External; Function B_ism(Var where: ismrecord): except; External; Function B_io (var an_iob: iob): except; external; IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII  IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII! IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII" IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII# IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII$ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII% IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII`e830315091708830315091708830315094432e 830315091708830315091708830315091708& e830315091708830315091708830315091708e830315091708830315091708830315091708830315091708830315091708830315091708e{'1830315091924830315091952830315092304e'-830315092151830315092224830315092337e '>830315094411830315094419830315094427' . CG4 SYSPASCAL LBRPASCARTOS PSCJLOG:ON BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oc KCLS: WLN: WRS:  KWRZ: WRC: DIAG im MACRO (F380) @iiig BC EGN@A' I `' B `' ¹N  `' C `' I) `'  `' `'# tttd ttti  (iicJRUNTIME BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o KP:FATD FIND:THETELL:IT KWRS: STARDATEWLN: KWRC:  im MACRO (F380) @iiig BCI0D `'XkWj  VI-D `'XkWjV  FGVKGVnD `'XkW jGNYV [YA'XkWj I G[@D `'XkWj GVG[Z \ GZDA'XkWjB. * XW'XCkWj  GNYV[tttttd  YA'XkWrjI  G[@D `'XkWfj GVG[Z \GZ DA'XkWRjG  NA'XkWj G NYV[YA' XkWjIG[@D `'XkW#jdttd GVG[Z  \GZDA'XkW jI D `'XkWj VI-D ` 'XkWjV FGVK GVnD `'XkWj# tti  Started: Ended: Elapsed: iiJFIND:THEBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oe KSUBTRACTi( m MACRO (F380) @iiig BC DBK C H IGIdJHGAFkjB CK GIHIjB%'J G<%ȃ'JGEM  E±NMI EJk jH kjI HkjI: H kjI: Hk jI. H kjI HkjF D. # dti mmmjanfeb maraprmayjunjulaugsepoctnovdeciiJPROCENTRB=O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o)KWLN: WSH: WSI:  KWRC: WRS: P:LEX KEXTFL: im MACRO (F380) @iiig B. CAIkjDG NJEIL@CAI kj LBCAIkj EDK՞I(G F EƀD@ IIF DqGCA IkjG I CAIk j ,GD. LCA IkjI:CAIkjD . LCAIkttttttd" jD DFJF&E DjKEJDI L@CAIkXjEVDT KGCAIkKjD . LCAIkAjI:C AIk9jD. LCA Ik0jD DPI)CAIk#jCAId&kj# ti \ce   P call ,...iiJPROCEXITB[O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o$&KWLN: WRS: EXTFL: im MACRO (F380) @iiig ) B. CIH@CA Ekj HBCAEkjCAEkj# td"tti \ce   P exit ii$JINI: B+O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oj)KPCREAT POPEN ARGV: KP:CMDSCNP:BLM EXTFL: KP:SIGNALFATAL: im MACRO (F380) @iiig BCA ۠AGkjB  DDSB FB  ZB. CB.  B. E ·NE  FG kjB. D JDSAGkj. E I. EAGkj.  EI. EAGkj# tttd"ttttti \ce   PFileNotOpen iijJHLT: BWO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o+KP:HLT CLS: EXTFL: im MACRO (F380) @iiig B. DR CCN˝N  @KCN˖N @AFk jCDDCKCgBAFkj# ttti \e  Pii+JFATAL: B O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o:KCLS: HLT: FLUSH: KWLN: LINNO: WSI: KP:READ P:OPEN WRS: KWRZ: ARGV: WRC: KDIAG CURFIL: im MACRO (F380) @iiig BIc`G"N@A'7 aIV"I  `'7".  `'7"N 8 :8 `'7 BOG@JQ"»N 8 :8 `'7 "`K8 :8 `'7"˜N 8 :8 `'76tt t dt t t d( d)d, qqoGNG :@aA'7a_6D BNWDG: 8GG;IG=I8A '7A? AFEG6 CM CC E WDG:8GG;IG=C8tt A'7wCdG" N9 :G8G9 8 `'7"I G:B `'7 C %'G"N G8@8 `'7 OG"N9 :G8G96tttd-t d2 8 `'7qqo" IG:k `'7deb " `'7[Y"A '7RPB `'7KI " `'7B@# tttti \ce   Psf/pas:rte rr.sdt: file : ERROR # on source line iiJRDR: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o$'KGETINT: INCPT: NXTDIG: KFSTDIG: GETSIG: SKIPSP: KRF: P:STOREMim MACRO (F380) @iiiBAG& \dĀ # G& \d GBO \+.+GE kj# g BMAOkjBAOk jBAOkjHG NQGd G P kjMK(M.  Ȁ @%' VBAOk jIIOk'jBAOk jNIqMK(M. Ȁ @% ' ǀBAOkj򞊞ttttttt BAOksjIIOk jLJLBAOkejN InMK(M. Ȁ @%' A MK(M. Ȁ @% 'JQAI@@QPBAOk@ jLNBAPkjNLLESCEEHQKGd\d!GPt kjGNPGd# G k jE EG\d% GP kjmL SOG \GP  kjG \G * P kjG# ti \ce   PB @@B ii$JRDL: BIO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o~"KP:DSB NXTDIG: P:DAD KP:DMU P:STOREMFSTDIG: KGETSIG: SKIPSP: RF: im MACRO (F380) @iiig BAJk jBAJk j BAJk jEBAJk  jFGN IJK k  jFGG KI Lk  jF K FLk jK k  jBAJk jFTEQS  IJGG k jGN K k jKG G k jG# ttttttttti \ce   Pii~JRDI: B-O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KGETINT: SKIPSP: RF: im MACRO (F380) @iiig BAEkjBAEkjBAEkj# ttti \ce   PiiJGETINT: BfO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o."KNXTDIG: FSTDIG: GETSIG: im MACRO (F380) @iiig BAHkjDBAHk jFIEFE GFE BAHkjFpDQDECECC# tt ti \ce   Pii.JFSTDIG: B=O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o&KP:TRP im MACRO (F380) @iiig B (B. %' ЄED DM  II@QF iAFkjD# ti \ce  Pii&JNXTDIG: BAO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o(KINCPT: im MACRO (F380) @iiig BAFkjB (B.  %' ЄED  DM II@QBDD# ti \ce  Pii(JGETSIG: B\O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o4KINCPT: im MACRO (F380) @iiig BD (D. %' A CDK(D. Ȁ @%' JQAI@D (D. % ' A GFBAFkjC# ti \ce  Pii4JSKIPSP: B?O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o'KINCPT: im MACRO (F380) @iiig BCCK(C. Ȁ @%'  A CK(C. Ȁ @%' JQAI@@QGBAEkj]# ti \ce  Pii'JRLN: B|O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o9"KUPDATE:IINCPT: RF: im MACRO (F380) @iiig BCAEkjC. Y ǀBAEkjsC. D C. C. C. G C. @BAEkj# BAEkj# ttti \ce   Pii9JRDC: B'O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oKINCPT: RF: +  im MACRO (F380) @iiig BAEkjB (B.  %'CBAEkjC# tti \ce  PiiJWDW: BKO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o%KINCPT: P:TRP CURFIL: im MACRO (F380) @iiig BDD. NyXQ HAF kjD. ƀBAF kjD (D. # ttti \ce  Pii%JEFL: BQO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o%"KINCPT: P:TRP CURFIL: im MACRO (F380) @iiig BDD. NyXQ HAF kjD. ƀBAF kjD. i# ttti \ce   Pii%JGET: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KINCPT: RF: im MACRO (F380) @iiig BADkjBADkj# tti \ce   PiiJELN: B-O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KP:TRP RF: im MACRO (F380) @iiig BAEkjB. iF bAEkjB. Y# tti \ce   PiiJRF: B[O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o*"KINCPT: P:TRP CURFIL: im MACRO (F380) @iiig B y HADk jB. ) aADk jB. ƀBADkj# ttti \ce   Pii*JINCPT: B O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:ovKREAD:FILWRITE:FIUPDATE:IKP:TRP im MACRO (F380) @iiig BC iF bAEk jC. NC. G C. @BAEkjC.  ̀BAEkjBA EkjC. iA  C. EC. ̀C.  II@QF cAEkj C. ICK(C. Ȁ @% 'MII@QF jAEkj# tttti \ce  PiivJWSZ: B#O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KWSS: im MACRO (F380) @iiig BCE%E'DEKExE CJDKCBAGkj# ti \ce   PiiJWRZ: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KWRS: im MACRO (F380) @iiig BCD%D'DDKDxD CICBAFkj# ti \ce   PiiJWRR: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KWSR: im MACRO (F380) @iiig BC JGI@BAFkj# ti \ce   PiiJW, SR: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o%KWSTRIN: MDI: ECVT: im MACRO (F380) @iiig BC4FEJG_JM JG Ne  fJcGdG A'`k_j GHQE -%F' %F'FKF %G' IKI%GF' FKFG G .%F'FK FJ J%GF'F FG KGJp e%F'FKF I IFI -%Ft 'FKF +%F'F KFIOG3K0%F'F  FI0G_I I `'ak`j _%F'FKF4G 4NF@AGcbEdG bBA'`k_j# tti \ce   PUiiJWRL: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KWSL: im MACRO (F380) @iiig BC JGI@BAFkj# ti \ce   PiiJWSL: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o+KP:DDV MDL: P:DSB KWSTRIN: P:CMLONGP:STOREMim MACRO (F380) @iiig BCJIK VG  G kjGNF VGG kjG G VWkjmGG G GkjN  XWEYWBAUkj#  TUGGkjG NV kj XI YG UkjGUGFJF 0 %F'GG VI tttd%tt WkjV km jGG VWkdjA CGG VWkXjG FJF -%F'GNFX EYFBAUkCj# ti \ce   P -2147483648iiJWRI: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o "KWSI: im MACRO (F380) @iiig BC HBAEkj# ti \ce   Pii JWSI: BO0SEGMENTBLANK  CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oP)KMDI: WSTRIN: im MACRO (F380) @iiig BC EFSTQς IONDPNBALk j # F@AFE EI0KI FM k jK%E'FOG K FQAiCGEJE -%E' G NEODPEBALk j# d%tt i \ce   P-32768iiPJWRH: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o "KWSH: im MACRO (F380) @iiig BC HBAEkj# ti \ce   Pii JWSH: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oP%KWSTRIN: P:DDV im MACRO (F380) @iii BIC DGG  GIHk jB. F# B 0C 7C# g BCGNII ICX@ Kk gj%I'GN@K k EjCAhGNIND OIBAKk j# tti \ce   PiiPJWRF: BtO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o%KWSTRIN: FCVT:-  im MACRO (F380) @iiig BC4GF QIPF  G Nd  fFcGeGA'`k_ j HIQG -%G' GKGJHI0%G'G G %H'I0%G'%G 'GKGH HJJJRi FI.%G'G GJSOK JF FA 0%G'GK GoF F%Ht 'Q 0%G'% G'G GHKHa4 G4NG@AGcbEd GbBA'`k_j# ti \ce   PUiiJPAG: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KWRC:  im MACRO (F380) @iiig BI ADkjB. @B. # ti \ce   PiiJWLN: BKO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o*"KWRC: im MACRO (F380) @iiig BD ZD. CD . ED. ȊD. I BA FkjD. C# I BAFkj# ti \ce   Pii*JWRB: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o "KWSB:  im MACRO (F380) @iiig BC HBAEkj# ti \ce   Pii JWSB: BSO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o$(KWSS: im MACRO (F380) @iiig BCQOIIHDJHB AFkj# IIHD JHBAFkj# d"td%i \ce   Ptruefalseii$JWRS: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o "KWSS: im MACRO (F380) @iiig BCDIJBAFkj# ti \ce   Pii JWSC: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KWSS: im MACRO (F380) @iiig BC IIHDJHBAFkj# ti \ce   PiiJWSS: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KWSTRIN: im MACRO (F380) @iiig BCEDDDJKCBAGkj# ti \ce   PiiJWRC: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oKPUT: im MACRO (F380) @iiig BC (B. %Ā'BAEkj# ti \ce  PiiJWSTRIN: BrO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o;KOUTCPT: WF: im MACRO (F380) @iiig BCFAHkjED EFK(F. Ȁ @I %Ā 'BAHkjhD D FK(F. Ȁ @%CĀ'C  CBAHkjh# tti \ce .  Pii;JOPN: CRE: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o#KINIT:FILP:CREATEP:OPEN KARGV: ARGC: P:TRP KP:TMPFILCLS: WRITEFILKP:STOREMFLUSH: P:BLM KEXTFL: CURFIL: im MACRO (F380) @iii BCJIEIF. F @NN @B̀Q  Fn. ʞNJ  KL k jDN)XJ.  yD[BALk j IKLM kjGN BALk jBALk  jALk jJ. J.   eALk j KFA F @ALk ttt t dt t t ttt qjBALk jj D)aFKNN @J  GNO@ALk jJ . J.  dALk Gj F @N˧N @J G NO@ALk jJ.  J.  eALk %jGC DYDDOCBAttt Lk j EE# g BCIHCAEkj@# g BCIHCAEkj@# ti \   PLOCAL iiJDIAG BUO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o)KINIT:FILP:BLM STD:ERR im MACRO (F380) @iiig BC ”NC DE kjIHIBAEkj# td"tti \ce   PErrorFile iiJPOPEN BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o<"KINIT:FILP:TRP P:OPEN KCLS: im MACRO (F380) @iiig BCAGkjBE G NJ@CAGkjE.  E.  dAGkjDJ I JIBAGkj# IJIBAGkj# tttti \ce   Pii<JPCREATD BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KPCREAT im MACRO (F380) @iiig BCAEkjB. B. # ti \ce   PiiJPCREAT BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o<"KINIT:FILP:TRP P:CREATEKCLS: im MACRO (F380) @iiig BCAGkjBE G NJ@CAGkjE.  E.  eAGkjDJ IJIBAGkj# IJIBAGkj# tttti \ce   Pii<JFNAME: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o "KP:BLM im MACRO (F380) @iiig BC DE kj# ti \ce   Pii JINIT:FILBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o@"KP:STOREMMDI: im MACRO (F380) @iiig BCEQKCD D E. ċFHkjF E. E. E. E . CE. DE. ā E IFGH k j# tti \ce   Pii@JBUFF BhO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o3"KMDI: FLUSH: im MACRO (F380) @ii/ ig BC BAEk jC. C. D C. # C. DC.  FkjDC. # tti \ce   Pii3JNOBUFF B!O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KFLUSH: im MACRO (F380) @iiig BC ̀BAEk jC. DC. # ti \ce   PiiJNOTEXT BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oim MACRO (F380) @iiig B BK(B. Ȁ @I %Ā'B. B. # `i \ce  PiiJPCLOSE BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KCLS: im MACRO (F380) @iiigBADkj# ti \ce   PiiJCLS: BwO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o3"KP:TRP P:CLOSE FLUSH: KCURFIL: im MACRO (F380) @iiig BCC. NyXQeC.  SC. DC. AE kjC. AEkjF fAEkjC. # tttti \ce   Pii3JFLUSH: B]O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o2KWRITE:FIOUTCPT: im MACRO (F380) @iiig BC 9C. M II@Q\C. `  CK(C. Ȁ @I %Ā'B AEkjBAEkj# tti \ce  Pii2JPUT: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KOUTCPT: WF: im MACRO (F380) @iiig BADkjBADkj# tti \ce   PiiJWF: B6O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KP:TRP CURFIL: im MACRO (F380) @iiig B y HADk jB. 9 `ADkj# tti \ce   PiiJOUTCPT: BHO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o&"KUPDATE:IMAX im MACRO (F380) @iiig BC FC. GC.  ȊAEkjC. C.  GC. @BAEkj# tti \ce   Pii&JWRITEW BcO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o2"KPUT: WDW: im MACRO (F380) @iiig BC'.%'DBFk j D%'BEkj GN @%'DBFk j D%'BEkj# tti \ce   Pii2JREADW BHO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o&"KGET: WDW: i0 m MACRO (F380) @iiig BCEkj %C'B EkjBEkj % 'DC%'BEkj# tti \ce   Pii&JREADFILEBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oD"KP:STOREMP:DDV P:DAD KP:TRP im MACRO (F380) @iiig BC y HAFk j# BD G&GD . G Hk jD.  GHk jCG kj# tttti \ce   PiiDJWRITEFILBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KUPDATE:IP:DSB P:CMLONGKP:DAD P:STOREMP:DMU KP:LOADM P:TRP im MACRO (F380) @iiig BCG y HAI kjCH k jG.  JKk  jJ k jG.  G&G G.  LGGMk jk jHG. G.  G. GGG&G k  jӠG. G&G G.  Ltttttt GGMkpj k nj H IHHWG. GGG& G k jIF@BAIk j# G. BAIkj G JGG k 4j# tti \ce   PiiJUPDATE:IBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oKP:STOREMP:DAD WRITE:FIim MACRO (F380) @iiig BCD DK(D . Ȁ @I %Ā'D. C D. NXD.  DD. C II@E EEQvD.  CD. CD. E D. IIE  EEQPD. ED. D.  D. D.  D. BAFkjht D. C  GG&GCHk jD G kjD. D.  D. A DK(D . Ȁ @%'JQAI@@QQ D (D. %'D. @D. # tt(i \ce  PiiJWRITE:FIBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oU"KINITBUF P:TRP P:WRITE im MACRO (F380) @iiig BC C. DCK( C. HC. IC. GG& G C. LHGAFk jDIC. A D IDDF hAEkjC . C. C. C.  BAEkj# ttti \ce   PiiUJREAD:FILB O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:ow"KINITBUF P:TRP P:READ im MACRO (F380) @iiig BC )`CK(C.  GC. HC. FG&G C. KGFAEkj C. C. C. F gAEkjC. πBA EkjC. C.  C. C. C.  IQC%'JQ. @ C. CI %Ĩ'C. C. # ttt?i \ce   PiiwJRND: B7O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o&im MACRO (F380) @iiigBCG\dGG\d1 " DG\d$ D@# i \ce   P@@iiJMIN BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o "im MACRO (F380) @iiig BCBDDD# i \ce   Pii JMAX BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o "im MACRO (F380) @iiig BCBDDD# i \ce   Pii JINITBUF BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oim MACRO (F380) @iiig B FDICB ( C *%'CDQDC Cq# i \ce  PiiJABI: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"im MACRO (F380) @iiigB„CC# i \ce   PiiJABL: BkO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o2"KP:DSB P:STOREMP:CMLONGim MACRO (F380) @iiig BCGG HIk j GNHGG k  j FGGGk j GNH k jG# ttti \ce   Pii2JMDI: B*O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KP:TRP im MACRO (F380) @iiig BCRF GAFkjBOG  GB@AEBSCBCBB# ti \ce   PiiJMDL: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:of"KP:DAD P:STOREMP:DSB KP:DMU P:DDV P:TRP KP:CMLONGim MACRO (F380) @iiig BCGG JKk j F GAIkjGGG GG kjGG  kjk jJ k  jGG JKk j SGGGG k j GNJ k jJ GG k jG# ttttttti \ce   PiifJABR: BUO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o&"KP:STOREMim MACRO (F380) @iiigBCG\d HGG k jGd \GH k jG# ti \ce   Pii&JASS: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o "KP:TRP LINNO: im MACRO (F380) @iiig BCLJ DAEkj# tti \ce   Pii JASZ: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"im MACRO (F380) @iiig B DB. KE@ G@# i \2 ce   PiiJBCP: B2O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o$"im MACRO (F380) @iiig BC EDR%BC'K E@ IE B BCKCD DbE# i \ce   Pii$JSIN: COS: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oq8KFIF: P:STOREMim MACRO (F380) @iii BCXGG kjG\dQGd \GX kjDKDG\d" GX kjG\d GNZGAWkj GX kjDO  \GX kjGd6 \G ZGAW kjGX ktt{jGd \ GG\ DG  G@O GG\ GX kWjDGXDXQNGd \GX kCjD Gd \GX k1j G\G X k!jGd,\ GGd\d*\\ \d(\ GGd\d&\\ \d$ \GX kjG \d4\ \d2\ \d0\ \d. GX kjG \GX kjG# tgBCG\dNGd \GH k kj IJGAGkjG H k XjG# g BCIJGAGkjG H k @jG# i \ce   P@" LO2[KzIGX]DLINfGdDM?iGA@iqJATN: ARCTAN2 BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o@KP:STOREMim MACRO (F380) @iii BCG\G L k jGd*\\d,\\d.\\d0\\d2 G L k jG\d4\\d6\\d8\\d:\\d< G G\ G L k jG\G  L k jG# tBCG\d$ QGGkjGGN H k ijG\d"Gd&GGd \IkjGG\ GH k GjGd(GG\dG G\d G G \ Ikj\G H k jG# g BCG\\G\dJGd>G k jGd\d> GJ k jG\d_G\dGd>\d> GG\GGd \AKk jG Gtb \ GJ k ojGd\d>\d> GG\AKk ^j\ GJ k QjG\d G\AIkCjG J k 8jGd GG\GGd \AKk %jG  G\ GJ k jG# gBCG\d GAGkjGH k jGd G\AIkjGG \GH k jG# bti \ce   PA{ ?@@IB:D6xE  EލE`2RCkEEYF^E`2R@i@iJLOG LOG: BO0SEGMENTBLANK CODE:ROMOCODE:RAM3 DATA:RAMDATA:ROMOGLOBVEC:o6KFEF: P:STOREMP:TRP im MACRO (F380) @iiigBCG\dU BAPkjGd\d GQ kjG NSGAPkjG Q kjG\d$QG\d GQ kjFJFG\dGG\d GG\G Q kjG \ G Q kjGd,\ GGdttt\d*\\ \d(\ GGd\d& \G Q k`jGd\d2\ \ \d0\ GGd\d. \GG \G  Q kj€H# g BCA DJK¢L MCBAGkj# g BCA DJKŽL MCBAGkj# tttg BCA 6 DJK‹L MCBAGkjj# ti     iiJOPENTEXTOPENFILEBWO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:ob KP:BLM INIT:FILQ:OPEN KP:TMPFILQ:CONNECP:CONPARKB::IO P:STOREMWORD:ADDim MACRO (F380) @iii BCIDAQkj EGN PQR kj FLAQkj M# BCG. B. E B. lB. B. y HB. lB. I DB N XQiB. GN o"pqoAmk, jԠB. B. NB. l B. B. lBtt@$tt . B. IBA mk,jԄliI DBN  Xl llQHB. Am k,jԀiqIDBN XQE G. G. CJQ Amk,jԄliŠG. IĀ B. iĨBAmk,jԄliCGtt . IĀG.  HG. A lIl lqIk DUB UCI j jkYkB PjAm k,jԄliEG. IĀB . QÀkkkpFEAm k,jԀB EKlm k. jҠB. lE. # tttg BCDKELIMFNCBAHkj# g BCDKEL MFNCBAHkj# &i     iibJSTRTOGFNBFO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o%KB:GFN STRLEN WORD:ADDim MACRO (F380) @iiig BCEK,FAHkjF.  BXF. čBAHkj F. CAHkj# ttti     ii%JGFNTOSFMBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oKREAD:INFP:BLM im MACRO (F380) @iiig BCVWK,XCHBYCZ OkjW. CIE W. CIEW.  iCIEܠW. IC IEӠW. CIEˠW . yrW. KW. G NAZkjFY EIEH IE EIE@ Ay h l g eptt EI EV. EYV.  V. V. V . V. @ A w a d g jnV.  V. V. V.  V. W. W.  W. W. B.  YV. ID@# i     iiJP:DELETEBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oJKP:DISCONB::IO P:CLOSE KP:CONPARP:TRP im MACRO (F380) @iiig Bf y HAhk' j٠f. GNj kljAhk'jلe f. Ahk'jلeII GGN@Ahk'jلeDAhk'jلge# ttt@4tti     iiJJP:CONPARBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oPKB::IO READ:INFWORD:ADDim MACRO (F380) @iiig BCHDIEAKk jI . I. DBAKk  jGD. ¯āH. H.  H. H. DA Kk jH. H. BC . CAKk jGH. # tt@@ti     iiPJREAD:INFBCO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RA7 MDATA:ROMOGLOBVEC:o$ KB::IO WORD:ADDim MACRO (F380) @iiig BCOEIFHCAQk jI‘NC. GN@AQkj# @3tti     ii$JP:TMPFILBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oO KB::IO WORD:ADDim MACRO (F380) @iiig DE FIJLMNI OPQR·STUV³W YGN@A_kjX¨ ]A_kj^CS ÝYA_kj^C CIBTBTBB# @@dttdi     XXUFiiOJB:CREATEB O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oKQ:CONNECB:CONNECim MACRO (F380) @iiig BAFkjEDHŠBAFkjDD# tti     iiJB:CONNECBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o KQ:CONNECim MACRO (F380) @iiigBIAEkj# ti     ii JQ:CONNECBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:orKB::IO WORD:ADDim MACRO (F380) @iiig BC_`IECFIG_.  Abk!j߄J_. N)X QJ_. Abk!j߄KI K`. MINO_. P IP_. QIRST _. E_. U`.  UVWXGN@Abk! j߄Y`. Z^GN @Abk!j߄D_. UĨD# t@@ti     iirJQ:OPEN B0O0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o"KB::IO im MACRO (F380) @iiig BC EIFGHC INGN@APkj DB. EĀD# @0ti     ii"JP:READ BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oIKB::IO WORD:ADDim MACRO (F380) @iiig BCDKILAVk jMGXʴNBAVk jPCOTG N@AV kjUICIHI  HGXQLBJQ % 'QKHQHH# t@ti     iiIJP:WRITE BgO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o5KB::IO WORD:ADDim MACRO (F380) @iiig BCDIIJAUk jKGXʠLBAUk jNCMRG N@AU kjTSCSHOHH# t@ti     ii5JP:CLOSE BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o>KB::IO STD:OPR STD:ERR im MACRO (F380) @iiig BGBϴQAI@O O OQC CBE FG£H J¡NAPkjO DBSLHGN@APkjDDCC# tt@2t@Pi     i8 i>JP:DISCONBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oKB::IO im MACRO (F380) @iiig BDIEFGIMG N@AOkj# @Pti     iiJP:RCI BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o[KB:RCI CINDEX: CIBUF: KB::IO STRLEN WORD:ADDim MACRO (F380) @iiig BCτFIGH˄IDAd k#j݄KDAdk#j݄JG N@Adk#j݄bI_ aBQՂAdk#j݄^é ]Adk#j݀] ^C. ]GN@Adk# jݠC. ]IE@# d@tttttti     CIii[JB::IO BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oKB:IO im MACRO (F380) @iiig BAFkjEDŠB. C CC# ti     iiJPAS:TSK PAS:ERB PAS:ENV JSTD:OPR STD:ERR BO0SEGMENTBLANK PASCAL:SOLOWCORE:DATA:RAMojdKNOGLBVC:CURHEAP:P:MAIN: MDEBUGC NQDB: SMD: SDB: NMDB:  R:TDBL im MACRO (F380) @idigUCgUCiglllll  gg  k$#%N) 1A?d P*`P# t + P p*# 4# pP P*.# t  @Ppe p hW zP1AzatdiuiJNOGLBVC:BFO0SEGMENTBLANK DATA:RAMo im MACRO (F380) @igJP:LEX BQO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @igA # JP:CDF BUO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @igG G# JP:CFD BmO0SEGMENTBLANK CODE:ROMo  KP:TRP im MACRO (F380) @ig G 6CG# kj# tJP:CMLONGBfO0SEGMENTBLANK CODE:ROMo  im MACRO (F380) @ig j @BFAC@&A k# JP:DAD BaO0SEGMENTBLANK CODE:ROMo  im MACRO (F380) @ig jAGA@@k# JP:DSB BhO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig jC@IGAB @k# JP:DMU BO0SEGMENTBLANK CODE:ROMo 1KP:TRP im MACRO (F380) @ig j A@GC6"3AA  A@G6B3A C@ @ G6@3A @ @CGk 3Q# T= @kj# tJP:DMD P:DDV BuO0SEGMENTBLANK CODE:ROMo  KP:DDVSUBim MACRO (F380) @igjk# gjB@CAk# tJP:DDVSUBBO0SEGMENTBLANK CODE:ROMo KP:TRP im MACRO (F380) @ig )E@AG @AQ @A+ BCG @AQ BC+DB CM Dkjt @1iE"E CG " @IG@Am@ G@ANC&C  N GV@AC ^B F@ GQVGB@ EEC@ G6G @I G@AeEBC @I GC@A+BC A @D1U-@A @A Q @A71HBC @AQ BC# JP:ARCALCB~O0SEGMENTBLANK CODE:ROMo KP:TRP9  im MACRO (F380) @ig jA@ SA G@@k# Gkj# tJP:ARRCHKBrO0SEGMENTBLANK CODE:ROMo KP:TRP im MACRO (F380) @ig (I# Bkj# tJP:PTRCHKBgO0SEGMENTBLANK CODE:ROMo  KP:TRP im MACRO (F380) @ig ( Bkj# tJBTS: BO0SEGMENTBLANK CODE:ROMo *im MACRO (F380) @ig BCD. !D 4C.9D @ B.9DD K4C8 .1#  @BXUGN1DC # JP:LOADM BkO0SEGMENTBLANK CODE:ROMo KP:BLM P:LOADR:im MACRO (F380) @igAkj# ttJP:STOREMBkO0SEGMENTBLANK CODE:ROMo KP:BLM P:STORR:im MACRO (F380) @igBkj# ttJP:LAI BO0SEGMENTBLANK CODE:ROMo KP:BLM P:LOADR:P:AI: im MACRO (F380) @ig EAkj# %B @)'# tttJP:SAI B{O0SEGMENTBLANK CODE:ROMo  KP:BLM P:STORR:P:AI: im MACRO (F380) @ig ABkj# tttJP:LOADR:BWO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig . b.B# JP:STORR:B[O0SEGMENTBLANK CODE:ROMo  im MACRO (F380) @ig ( b b* A# JP:AI: BWO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig @. @KЀ# JP:BLM B]O0SEGMENTBLANK CODE:ROMo  im MACRO (F380) @ig j %5'k# JP:INN BtO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig j@`I@$.9 N1C `k # JP:SET BlO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig B A4B .9 CI1 @ # JSPE: BO0SEGMENTBLANK  CODE:ROMODATA:ROMo KP:TRP im MACRO (F380) @ig KAD. ILH4 Bkj # tdi????????JP:RCK BmO0SEGMENTBLANK CODE:ROMo  KP:TRP im MACRO (F380) @ig (# Bkj# tJP:HLT P:MAIN: BO0SEGMENTBLANK CODE:ROMODATA:RAMo KMAIN: im MACRO (F380) @igpgp`# dtiJHICORE: BSO0SEGMENTBLANK HICORE: o im MACRO (F380) @igJP:CMU BjO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig  ``4 # # # JP:LOGOR BYO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig ``4# JP:LOGANDBYO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig ``4# JP:NEQV BYO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig ``4# JP:NOT BUO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig @I4# JFIF: BjO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig D. G' 6F Ё\!#  I# JP:FIF BnO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig G\G  GG\G# JFEF: BaO0SEGMENTBLANK CODE:ROMo  im MACRO (F380) @ig %.i*D. DD# JP:FEF BfO0SEGMENTBLANK CODE:ROMo  im MACRO (F380) @ig:  G %.i* # JFREEMEMOB]O0SEGMENTBLANK CODE:ROMo KCURHEAP:im MACRO (F380) @ig c# tJWORD:ADDBMO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig # JLINNO: BKO0SEGMENTBLANK DATA:RAMo im MACRO (F380) @igJCURFIL: BKO0SEGMENTBLANK DATA:RAMo im MACRO (F380) @igJEXTFL: BKO0SEGMENTBLANK DATA:RAMo im MACRO (F380) @igJARGC: BKO0SEGMENTBLANK DATA:RAMo im MACRO (F380) @igJARGV: BKO0SEGMENTBLANK DATA:RAMo im MACRO (F380) @igJCIBUF: BKO0SEGMENTBLANK DATA:RAMo Bim MACRO (F380) @igBJCINDEX: BKO0SEGMENTBLANK DATA:RAMo im MACRO (F380) @igJSTRSTORESTRFETCHBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oim MACRO (F200) @iiig BCBJ @%'# g BCBJ @D%Ā'# iiiJARGSHIFTARGV ARGC BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o$KARGV: ARGC: im MACRO (F200) @iiig# g Bû # @N˗N @# g  . ÊKCLJN B @# ttiii$JSTRBUF BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oim MACRO (F200) @iiigB# iiiJSTRTOBUFBO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o$KP:SAI P:LAI im MACRO (F200) @iiig BC EDJDS` F kj@`KNFGH k  jFDEKEdE# ttiii$JSTRLEN BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oKP:LAI im MACRO (F200) @iiig BIC` D kjDQDC CrC# tiiiJGTO: LJUMP: BO0SEGMENTBLANK PASCAL: o 0im MACRO (F200) @ikAg . Ag BCpD@`EDE@AE DBwCDp`@ a@# _ @#  *6 # JQ:Q:Q:Q:BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oim MACRO (F360) @iiigiiiJDIS: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o~KLASTP: HIGHP: im MACRO (F360) @iiig BC E āD E. EĀڀEDK Eރۊ@ ՄDD . EKD.  DqD. FE. D.  DE͠D. FE. ȁD.  āDED. EE. D E. ECѠE. FD.  ȁE. āD. FE. E . EʈKEǂttEz# iii~JNEW: CURHEAP:HIGHP:  JLASTP: BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:o]KP:SAI im MACRO (F360) @iiig BCՄDsD. E  CE. CE. FF QҀDE@DE. FD . EϱQ€DDǫE.  EDEDϢQAMCFD B. DDCEEDʓ K@`KNFG kjm# dddti; ggg?ii]JP:GATD BO0SEGMENTBLANK CODE:ROMOCODE:RAMDATA:RAMDATA:ROMOGLOBVEC:oKB:CTODA B:GTOD im MACRO (F200) @iiig BGN@AFkj @BAFkj# ttiiiB4O0SEGMENTBLANK oim MACRO (F300) @JB:DSENV BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  # JB:SUENV BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  # JB:REENV BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  # JB:LDENV BnO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  oN CDEFG oC # JB:GERI BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:CRSMR BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:MAPIN BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:UNMAP BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:CRTASKBWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .   # JB:DSTASKBUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig   # JB:BGIN BnO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  oN CDEFG oC # JB:END BOO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig JB:GPRI BYO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:SPRI BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  # JB:PAUS BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  # JB:CRMBX BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:DSMBX BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  # JB:SEND B_O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig  B @.  # JB:RECV B_O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig  B @. ā # JB:SENDR BhO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  B @.   # JB:RECVR BhO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  B @. ā  # JB:SIG BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  # JB:WAIT BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  # JB:WAITR BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  # JB:CRSEM BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:DSSEM BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig  # JB:CRQ BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:DSQ BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300)<  @ig  # JB:QPUT BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:QPUTR BYO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:QGET BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .  # JB:QGETR BYO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig .   # JB:QACK BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . # # JB:ITIC BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . $ # JB:MTIC BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . %# JB:CTIC BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . &# JB:AWAL BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . ' # JB:IWAL BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . ( # JB:CWAL BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . )# JB:GTOD B[O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig . *ā # JB:STOD B[O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig . + # JB:CDOW BfO0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig . N C,C # JB:CTODA B_O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig  B @. - # JB:CATOD B_O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig  B @. .ā # JB:GSTOD B[O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig . /ā # JB:SSTOD B[O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig . 0 # JB:GELT B[O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig . 1ā # JB:GEXT B[O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig . 2ā # JB:CFREQ BYO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . C # JB:RBUF BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . 5 # JB:ABUF B_O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig N C3C@(Ā # JB:PBUF B_O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig N C4C@(Ā # JB:LOAD BYO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . 8 # JB:OVL B]O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig . @I:I@# JB:IO BYO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . 6 # JB:IOR BYO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . 7 # JB:DEVUP BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . ;# JB:DEVDN BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . <# JB:UEX BUO0SEGMENTBLANK CODE:ROMo im MACRO (F= 300) @ig @> # JB:PUNT BQO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig@# JB:REX BQO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig?# JB:WEX BQO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @igA# JB:UID B_O0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig . Eā # JB:SUID BfO0SEGMENTBLANK CODE:ROMo  im MACRO (F300) @ig  B @. Zā # JB:GLA BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . !# JB:SLA BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . "# JB:ISM BWO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . D # JB:GFN BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . =# JB:UMOVE BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . F# JB:MOVE BUO0SEGMENTBLANK CODE:ROMo im MACRO (F300) @ig . Z# JMACHINE BMO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig # JP:TRP P:SIGNALBO0SEGMENTBLANK CODE:ROMODATA:RAMo im MACRO (F380) @igAӋ# g 1zÃAddiJP:MON BQO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @igz# JB:RCI BUO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig . z# JP:NJOB P:CMD BeO0SEGMENTBLANK CODE:ROMo  im MACRO (F380) @ig . z# gz # JP:VOLUMEBO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig B . CN!B.  HI#  JSTRCMP BO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig  N K@(  +@(4r @ B  # JPAPER:SIBO0SEGMENTBLANK CODE:ROMo (im MACRO (F380) @ig B . CF` G D EHI )5[Y6 YB. @xXā# Y# @3JSAME:PLABzO0SEGMENTBLANK CODE:ROMo im MACRO (F380) @ig . B @. G CFD HEI6I@# @CJDBGC:TV DBGC:LP DEBUGC B O0SEGMENTBLANK DEBUG: o ;MG:Z G:Y G:X MG:W G:V G:U MG:T G:S G:R MG:Q G:P G:O MG:N G:M G:L MG:K G:J G:I MG:H G:G G:F MG:E G:D G:C MG:B  G:A G:9 MG:8 G:7 G:6 MG:5 G:4 G:3 MG:2 G:1 G:0 im MACRO (F002) ig ~ ~Þ\( *Y]NvW P'LMN ~()K T辸 ( :ӂO - :ӂ"  )  8m*** DEBUGC.OBJ - REV A0m01 ***  /0e'渦ƴp P+` o «⫂p P0/s D E B U G C A 0 0 1 ӟe E}u#u"u!u uuuuuuuuuuuuuuuuuuu u u u u uuuuuuuuu  ӂzӾ P AE QB X? Y<ԽѾ K5 L2>  S/ڟS  =ӟ{ } ӟ|" *ӽ z Y Q A Gҽ؆ R Ɲƚ› LBLCLFLLLSLJ LILGLRLZܝ  A 4}҆{҆u łt Lłl T P B Pb!  |QEY , , `憂՟ ?ӽў @ F} ` J B YK QJfޞւ `ޡ @ޟޝ ` @E ;߽RA@EN@Aޏǎ Qފ ,^7F # o*| x ` D `垞oY* Qd Ѐ_Ѐ āZ@AĄ܃T B ` ǁ D构*L_U3 ` Ģ1*/) 'r "Bуڽֽ OGÙE 6'Eā / X Ń ѽڞ]w  Pсކ@كڽցB Ǣ ,ž[ + - * X /KJƎޞ^ ޞ[{ xނZ  ,ş| ֽL  ʁ Pсކ߽ ڽڽ޺{ ҽўq  kȆǂG ާ}ަyޠ}y E ~  .Ӄ  E ~  .ޢރf N ,Ž t@FC lqLL  (w{u _|J QB[y L S T ўON  Jsľ ޾ˆ_]]| IƎ > ,ŽƇ ,Ƃ pIưk , , Htr Hm - ņց -ņކ(' \\ÂF -t كԞx ’@"Fz @ Ό F ō l5#ކ.b ƝޙޖJQ! ’ފދJQĽ %ӂԞu U  ӂPx q o n "lIjM K b& _&[[ `ZKL$ kT N =ӂMM G J   :Ӟ ӟL  gVG¢QR@¡kj P›Ծ %'+  %'ކ†JƄ `Z@@@ TV  xvrv'6 psb ` ^\  { y9 u    :wgTVg LP @>)>19g6  -P%'-+0' ,L,S,Z,T,P Y+X)T&  ` O Iyyy x R G , ; + - * / X _1]\IW`  RRR -@A@KJ@ J H +O -M * / X? Ҿ  `YҾ B `R-҆, , +&  N I +KL v `p `P AQXYKLSDC Z A 9 0 n C F =   t ,Ɲ , ƙ˽•ކޏJQ ` Tѝ 8IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII? IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII@ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIA IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIB IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIC IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIID IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIE IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIF IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIG IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIH IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIII IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIJ IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIK IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIL IIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIIOS4 MB083031509170800830315091708 830315091708AF17106 VOLPASCAL LIBRARY, CODEGENERATOR, AND SYSTEM INTERFACE