\ t __text__TEXT __data__DATA\__cstring__TEXT__bss__DATA*__common__DATA(4__picsymbolstub2__TEXTY__la_sym_ptr2__DATAAA__nl_symbol_ptr__DATA__textcoal_nt__TEXTh  @ PII+tUUS$XE}u1ED$E$u E@E'E@ENjED$s$EEE$[]ÐUS|}u2E@ $E@D$D$$[]US0T$ԋD$\$T$D$\$qD$d$W8uD$d$0PD$d$D$d$D$d$D$d$ŒD$d$[]ÐUSD$4$}D$4$cD$4$I D$4$/$D$4$KD$4$dD$4$D$4$D$4$[]USD=D$h$]08=D$hD $$48=D$hD$88tj=D$hD$$<8t5=D$hD0$@8uH$K$&D$D$4$MdD$D$4$#h8tD$4$D$4$#D$4$3D$4$D$4$CD$4$zSD$4$`D$4$FD$4$,cD$4$rD$4$D$4$޿D$4$ĿD$4$調D$4$萿h8uj`8u]$HE$E썃`MD$D$ ED$D$E$蜾h8\8t$軾($譾SD$4$žhD$4$諾D$4$葾>f8>D$D$4$ZD$D$4$3D$4$D$4$ɎD$4$D$4$˽D$4$豽D$4$藽(D$4$}D$4$cSD$4$IhD$4$/D$4$X8t(XD$LD$4$T8t(TD$]D$4$諼P8tnD$4$脼\8t(\D$D$4$O>f8t'>D$D$4$Hf8t'HD$D$4$L8tD$4$»Jf8t'JD$D$4$菻ՏD$4$uHf8tD$4$MBf8tD$4$'Nf8t'ND$D$4$Pf8t'PD$(D$4$Df8t'DD$AD$4$莺@f8t'@D$YD$4$[Bf8u&Df8u@f8u>f8uNqD$4$D$4$D$4$۹Ff8t'FD$D$4$訹D8tD$4$聹ȐD$4$gFf8uD$4$A@D$D$4$(D$4$D$4$`8`$/`HD$4$螸`D$D$4$x`D$nD$4$RD$4$8<8<$ddD$D$4$dD$D$4$迷<8ouD$4$蓷ّD$4$yD$4$_)D$4$ED$5D$0$!dD$PD$0$D$ D$D$0$70$hE}t2}}t Z}t:RlD$0$z6~D$0$^D$0$BD$0$(D$0$0$6h8t,hD$ D$D$0$1(D$0$諵PD$0$葵hD$0$wD$0$]D$0$CD$0$)ClE}uC\E䍓\U܋E@@ EUE;}E܋EEUE@E뵍h8<D$8$衴ÓD$8$致ӓD$8$mD$8$SD$8$92D$8$ID$8$]D$8$aD$8$ѳD$8$跳ȔD$8$蝳D$8$胳 D$8$iD8u4D$8$BD$8$( D$8$HD$8$D$8$ڲD$8$ʕD$8$覲@D$D$8${h8uhD$<$T(D$<$:hD$<$ D$<$D$<$ȖD$<$ұD$<$踱D$<$螱4D$<$脱8ID$8$eD$8$KD$8$1hD$8$D$8$D$8$D$8$ɰD$<$诰ȖD$<$蕰D$<${D$<$aD$<$G(D$<$-hD$<$D$<$D$<$߯h8tјD$<$踯D$<$螯D$<$脯h8uD$<$]4јD$<$A(D$<$'D$<$ hh8uGD$@$ڮaD$@$D$@$覮șD$@$茮lE}uE$rE@E⍃h8D$4$6D$4$D$4$lE}u;E@D$ E@D$%D$4$轭E@E뽍=D$4$蘭RD$4$~VD$4$dgD$4$H4$%h8t W~]D$8$D$<$D$<$ӬD$@$蹬h8HD$ D$D$8$Mh8D$4$ND$4$4 D$4$(D$4$HD$4$ND$4$ʫD$4$谫ǛD$4$薫L.ԩ趩88uD$$nD$0$;D$0$!8$ D$0$D$ D$D$0$5D$ D$D$0$ hD$D$4${D$4$a&D$4$GD$4$-48080D$4$蹨HD$4$˩D$4$豩ȜD$4$藩D$0$}D$0$cD$0$ID$0$/+D$0$D$0$HD$0$cD$0$Ǩ}D$0$譨D$0$蓨D$0$yѝD$0$_D$0$ED$0$+'D$0$HD$0$hD$0$ݧuD$0$çD$0$詧D$0$菧,D$0$p&D$0$QD$0$7ȞD$0$D$0$'D$0$ID$0$ϦdD$0$赦xD$0$蛦D$0$聦D$0$gПD$0$Mh8t*D$ D$D$0$耥h8t 0$0$ܣD[]UE}t6E}u!UE;u E@EE@EEEÐUS}~΂D$$cE D$ڂD$$BE@ uFEx@t#ED$ނD$$ D$$ED$D$$ˤ}~!ED$D$$褤D$$芤[]ÐUS} t*f8t;Mȉʍ@ D$D$ $/Mȉʍ@ D$D$ $n*f8t2UЍЉD$D$ $趣0UЍЉD$D$ $脣[]ÐUS$E @EE @EED$D$$<E}~eD$$D$E$zD$$EE;E|}~D$$询D$E$E D$ ED$D$$r}~!ED$D$$KD$$1EJD$$ }D$$ D$$СE$D$$諡$[]ÐUS4ED$D$,$vE}~m!D$,$JD$E$0D$,$Jf8t^EUE;B|E@D$ED$ E D$Mȉʍ$@ D$E$,EEUE;B|GE@D$ED$ E D$MȉʍĹ@ D$E$E묍<D$,$>}DD$,$HD$,$ELD$,$ݟ4[]US5E}D$a$觟}D$a$荟}D$a$s}D$a$Y}D$a$?}D$a$%~D$a$ ~D$a$(~D$a$מ;~D$]$轞@~D$]$裞\~D$]$艞j~D$]$o8t~d ~ddD$~D$]$$~D$]$ ~D$]$D$]$֝D$]$輝5D$]$袝=D$]$舝fD$]$n}D$]$TYE}uEEEx<tE@@$5EEfx@u7UE;BuE@EED$ED$E$6Efxu}D$h$苚E@ uBEx@t!ED$#}D$h$<3}D$h$"ED$h$E@ED$]$$D$]$ D$]${D$]$֛D$]$輛8D$]$袛Ĵ[]ÐUS44E@E@4P;=X8,4D${D$$$ ED$E@@ D$ 4D${D$$$4D${D$$$輚4D$|D$$$薚E@xtE@@@EEED$ 4D$0|D$$$EPD$G|D$$$4P;t8X8u+4D${D$$$ՙxEx ffED$E@@ D$ 4D${D$$${4P;u&4D$x|D$$$C4T;u&4D$|D$$$ E@@@D$ 4D$0|D$$$՘ED$|D$,$谘ED$|D$0$苘ED$ 4D$|D$($Z4D$}D$($4E@@ D$8}D$($ 4T;u4X}D$$$u}D$ $ǗD$D$E@$84T;u4}D$$$}}D$ $c4D$E@@ $輔4[]ÐUVS}[EE;|U;Eu2E֍‰)‹E[^]ÐUS$(}tEE}uoE$4$I4@$8E@$E}uE$E@EUE;Bu E@0E뉃$[]ÐUS@E$,8~ @[]ÐUVS '};EE}c}cp}+2}*}!}!E%}/}/}-}?}^}-4}*}H}~tn}~ }|tr}tT} tu}>|l}G~G}Jt.X#‰)‹E,E@ $E@ $E@$$# [^]ÐUS$Ext9E@fxu+Ex$t"E@$x tE@$@ $EUExt E@xu4Ext E@E avEED$iv$E@@EE$[]U(EEE} } }rtY}r}@tv{}stNs}+t1}+ }*tV},t&}-tBEEEE@ $EE E EUVSWcc@}uSCC@Ef8cu.E@ $~&c c@TCEC8tcC$CxtcC@$bF[^]US4pEx({Ef8.lE@(EE}uD$E@D$E$@EED$ED$E@D$ D$0tD$$fED$ D$PtD$$9E@EENE@(EE}uxD$E@D$E$/@D$ ED$etD$$ÐD$D$E$5E@EE뀍|tD$${4[]ÐUVS@E@EEE$rE@$IE$#EE@EEf8tEf8tE$ٌt E$豌EPE@0B0E$Ef86E@E荃3T$rD$$芏E@D$E@D$ E@D$rD$$LD$ED$$ًsD$$E@f8u<D$E@@D$E@@0$$b@ E@D$E@D$D$ E@0D$ED$$3sD$$YssD$$?D$$%E$yD$sD$$8t'Ef8susD$$čsD$$認3D$rD$ $聍E@D$sD$ $]sD$ $CsD$ $)Ex0t)D$E@D$E@0$C@EE8uCE@D$E@D$ 3D$sD$$蠌E@D$ D$tD$$p3D$3D$ED$E D$ E@D$+tD$$E@D$ED$$計E@D$BtD$$͋׼@D$ ׼D$JtD$$蚋E$rE@D$ D$TtD$$ZEf8u EEED$ E@D$ktD$$E@D$ED$$螇Exx ExxEE@ BED$E D$ E@D$tD$$莊tD$$t8u4E@D$ E@D$tD$$3tD$$ED$Ef8u EEED$ E@D$tD$$ˉE@D$ED$$VE@D$BtD$${Ef8ED$ E D$tD$$CtD$$)8u4E@D$ E@D$tD$$ED$E D$E$^׼@D$ ׼D$tD$$藈tD$$}8u4E@D$ E@D$tD$$<׼@D$׼D$E$觅@[^]ÐU(}u} u }t} u E}u EEU f;uXEU @f;BuHEU @;Bu:EU @ ;B u,EU @;BuEU @;BuEU @;Bu ELEE @ D$E@ $6t#E @$D$E@$$tEEEEUEEE E}tC}u;EU@;BuEU@;Bu E4E@ EE@ EE}u }uEEEEU(Ef8u;D$E$趂ED$E@D$E$菃E E@0EEÐU(EE} tW}tQE@;E uDE$tEEE}}}ƒ}.t }tEEEEÐU8Ext E@E E@ EE xt E @E E @ E}u}u EnED$E$ EED$E $ E}u}u E.}t!}tED$E$EEEUS$XEE}st1}s}ct.}rtA}t/}9t-E+E"EEEEUE}unED$E@$AtHE@ D$E@$!t,ED$E@ $\tE@;E uEEE@EEE$[]ÐUS$HEE}st1}s}ct.}rtA}t/}9t-E+E"EEEE$EUEBUE UEBUEB UEBUE@ BMEAUE$[]ÐU(EEE}rt}9tWEOEx~EE@$E}u+E@ f8.tE@ f8 tEE@$E͋E@ E}u[E@E}t;}t9Ef89uE@$f8.uE@$xuEEE@ E띋EÐUS4hEEEExt E@E E@ E萋E$EEf8uMD$E$}EE@;EuEE+ED$E@D$E$~E E@0E}Ex ExE@;EE@D$E@D$ E@D$^fD$$D$ED$$x}E@D$E@D$E@ D$ ED$fD$$苀}tE@;EE4[]US̺8tBD$,eD$$.[]ÐUS4lE @D$E D$E$|E f8t5`8t*dD$E$,eD$E$8f8E @ E}uE@D$ E@D$UeD$E$@E@E}}t)E f89u"E @$f8.uE @$xuE f8r E@BmeD$E$~eD$E$~eD$E$~eD$D$ D$-D$E$~zhLPȍPE@ TfB8t4D$eD$E$}eD$E$}eD$D$ PЍLD$-D$E$yeD$E$v}eD$E$a}eD$E$L}eD$D$ PЍLD$-D$E$yPE@ EueD$E$|4[]ÐUS40E$xu*~fLh;t,Ll;t_D$D$t$8u (8uD$`$t}~P$E؉ PD$D$z$oLh;0`D$D$sE@D$p`D$D$sE@D$`D$D$s`D$D$ssE@D$`D$D$OsE@D$aD$D$+s4aD$D$sIaD$D$rNaD$D$rE@D$ LD$XaD$D$rED$D$Ext E@E E@ EЃ}EEEf8uMD$E$nEE@;EuEE+EЉD$E@D$E$YoE E@0E}KE@;E<Ex u9Exu0EЉD$ E@D$paD$D$qaD$D$qD$ED$D$nEЉD$E@D$ E@ D$aD$D$aE@aE@E$EE$[]ÐUS$4EE}uExxE$Zu EEf8u/E@D$KD$d$Z_EXE@$E}u%E$`t E-E@EӋUE;BuE@0EAEE$[]ÐU(EE@$E}uVE@ f8.uAD$E$}UEWU RWU RE !E})DEEMuADDDDDDDD"DDDDDDDDDDDDDDD=<UDDDDDDDDDDDDDDDDDD6DDDDDDDDDDD DDDDN;DDDDDDDDDDDDAADDDDDDDD DDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDDD@C?e@SBD BDDE(DDDDDDDD;DDDDDDDDDDsDDDDDDDDd.DD ADDDDDDD0=DDDD f n ~  v ^DDE @D$@AD$E$\P?CAD$E$BPED$E @ D$E$3D$E$P?GAD$E$OED$E @ D$E$43D$E$OJ?KAD$E$OED$E @ D$E$3D$E${O>OAD$E$aOED$E @ D$E$QAD$E$0OED$E @$D$E$m3D$E$N>OAD$E$NED$E @ D$E$"SAD$E$NED$E @$D$E$3D$E$N>OAD$E$iNED$E @ D$E$y?D$E$8NED$E @$D$E$u3D$E$N=OAD$E$MED$E @ D$E$*UAD$E$MED$E @$D$E$3D$E$M=OAD$E$qMED$E @ D$E$WAD$E$@MED$E @$D$E$}3D$E$M<OAD$E$LED$E @ D$E$2ZAD$E$LED$E @$D$E$3D$E$L<OAD$E$yLED$E @ D$E$\AD$E$HLED$E @$D$E$3D$E$L;OAD$E$KED$E @ D$E$:^AD$E$KED$E @$D$E$ 3D$E$K;OAD$E$KED$E @ D$E$`AD$E$PKED$E @$D$E$3D$E$K:OAD$E$KED$E @ D$E$BbAD$E$JED$E @$D$E$3D$E$J':OAD$E$JED$E @ D$E$dAD$E$XJED$E @$D$E$3D$E$'J9OAD$E$ JED$E @ D$E$JgAD$E$IED$E @$D$E$3D$E$I/9OAD$E$IED$E @ D$E$jAD$E$`IED$E @$D$E$3D$E$/I8OAD$E$IED$E @ D$E$RmAD$E$HED$E @$D$E$!3D$E$H78OAD$E$HED$E @ D$E$pAD$E$hHED$E @$D$E$3D$E$7H7OAD$E$HED$E @ D$E$ZsAD$E$GED$E @$D$E$)3D$E$G?7OAD$E$GED$E @ D$E$vAD$E$pGED$E @$D$E$3D$E$?G6OAD$E$%GED$E @ D$E$byAD$E$FED$E @$D$E$13D$E$FG6eW8u|AD$E$FAD$E$F W85WD$A$&F5]W8t>]WD$E @$ZFu]WD$A$!F9W8t>9WD$E @$Fu9WD$A$E W8tD$%B$EE @$D$KBD$E$qEE @ EE}uBVBD$E$DEED$E@ D$E$E@$EE붋E D$E$ @VU;~=VD$ED$eB$DE @D$B$DVU;|BD$E$DEҍ3D$E$uD3BD$E$[DED$E @ D$E$3D$E$*D3eW8uBD$E$D3CD$E$Cm3+CD$E$CED$E @ D$E$ 9CD$E$C"37mf8 V8Imf8ECD$E$SCXCD$ED$ E @ D$aCD$E$;?~D$ED$ E @ D$mCD$E$ ?xCD$E$BCD$ED$ E @ D$aCD$E$>CD$ED$ E @ D$CD$E$>CD$E$iB3D$ED$ E @ D$CD$E$Q>17mf8 V8Imf8ECD$E$AXCD$ED$ E @ D$aCD$E$=~D$ED$ E @ D$mCD$E$=xCD$E$yACD$ED$ E @ D$aCD$E$a=CD$ED$ E @ D$CD$E$1=CD$E$A3D$ED$ E @ D$CD$E$<X07mf8 V8Imf8ECD$E$@XCD$ED$ E @ D$aCD$E$q<~D$ED$ E @ D$mCD$E$A<xCD$E$@CD$ED$ E @ D$aCD$E$;CD$ED$ E @ D$CD$E$;CD$E$?CD$ED$ E @ D$CD$E$;.7mf8V8Imf8ECD$E$$?CD$ED$ E @ D$aCD$E$ ;CD$ED$ E @ D$CD$E$:CD$E$>CD$ED$ E @ D$CD$E$:.7mf8V8Imf8ECD$E$4>XCD$ED$ E @ D$aCD$E$:CD$ED$ E @ D$mCD$E$9CD$E$=CD$ED$ E @ D$CD$E$9-Aam;CD$E$_=~D$ED$ E @ D$ DD$E$G9E @$EE}uE@ f8.tE@ f8 tDD$E$<VBD$ED$ E @ D$~D$E$8)DD$ED$ E @ D$CD$E$8ED$/DD$E$d<E@ f8.uED$E@ D$E$ED$E@ @ D$E$sE@$EE:DD$E$;=DD$E$;3D$ED$ E @ D$IDD$1$7++V8t\IW8te4D$E$s;*3D$ED$ E @ D$XDD$E$V7*Imf8ECD$E$;aDD$ED$ E @ D$gDD$E$6tDD$ED$ E @ D$CD$E$6CD$E$:1W8~-W8u {DE DMED$DD$E$U:DD$ED$ E @ D$OAD$E$=6IW8tDD$E$:*DD$E$9>D$E$?mf8tDD$E$91W8t/-W8u"V8tED$E$z9;D$E$e9&ED$E$P9AED$E$;9VED$ED$ E @ D$ZED$E$#5QmfE @$EE}uuwED$E$8ED$E@ D$E$ED$E$8Ex$tED$E$8E@$EE냍Qmf(5D$E$U8C>D$E$@8~D$ED$ E @ D$ED$E$(4E @D$ED$E$7E @$EE}uBVBD$E$7ED$E@ D$E$E@$EE붍VU;7mf9D$ED$ E @ D$ED$V@X$Z37mf(VD$ED$E$6~D$ F$7VU;|BD$E$6Eҍ3D$E$61W8;D$E$6-W8t0!FD$ED$ E @ D$%FD$E$n2~D$ED$ E @ D$1FD$E$>2 W8tEFD$E$6fFD$E$5IW8g%jFD$E$5M%Aam;FD$E$5~D$ED$ E @ D$ DD$E$1E @$EE}uE@ f8.tE@ f8 tDD$E$5VBD$ED$ E @ D$~D$E$1ED$FD$E$4E@ f8.uED$E@ D$E$ED$E@ @ D$E$E@$EE:DD$E$[4=DD$E$F43D$ED$ E @ D$IDD$-$)0#V8FD$E$31W8tFD$E$33D$ED$ E @ D$CD$E$/1W8tiE x`FD$ED$ E @ D$FD$E$f/CD$ED$ E @ D$FD$E$6/3D$E$ 3E xtE xtE @$EEE}uE@ f8.FD$E$2ED$E@ D$E$FD$E$y2VBD$ED$ E @ D$FD$E$a.ED$FD$E$-2E@ f8 FD$E$2ED$E@ @ D$E$AD$E@ @$#E@ f81uE@ @fx@uHD$E$-#HD$E$#Um7m5mfffQmfED$E@ D$E$*Um7m5mfffID$E$"ED$E@ D$E$Qmf( ID$E$`" D$E$K"E@$EE ;D$E$"";D$E$ "&ED$E$!AED$E$!VED$ED$ E @ D$ID$E$QmfE @$EE}uE@ f8 tHwED$E$l!ED$E@ D$E$ED$E$;!IwED$E$$!ED$E@ @ D$E$^ED$E$ Ex$tED$E$ E@$EE%Qmf(5D$E$ C>D$E$ 1W8CD$ED$ E @ D$%FD$E$a1ID$E$4 AID$E$ QID$E$ bID$E$zID$E$ID$E$ID$E$JD$E$JD$E$%JD$E$w D$E$bEJD$E$MeJD$E$8JD$E$#JD$E$ D$E$ KD$E$'KD$E$ D$E$-KD$E$)7mf8 V8Imf8ECD$E$ZXCD$ED$ E @ D$aCD$E$BmCD$E$xCD$ED$ E @ D$~D$E$CD$ED$ E @ D$aCD$E$CD$ED$ E @ D$CD$E$CD$E$p1W8~02KD$ED$ E @ D$E @D$E D$L$a9$ $,Ą[]ÐUS4JE@EURUR}uD$$3Ex@t%8tEfxtE$, E}u4ED$E@D$ E D$D$E$4EfxuE$ EEfxu9D$E $tED$$i Ef@ Efx#uED$ $LE D$E$!'f8Ex<(f8Ex@u62D$E$tD$E$u#=D$D$E$kD$E$EE@ u}tD$E$O}u"(f8uD$5$@(f8tCEx@t:D$E $/t!E@@D$RD$E$ (f8tED$D$E$ Ex(f8t@D$l$$? $1 , $# (f8u[ D$E$4 L(f8uL(fD$E$ ED$E@ D$E$@(f'f8u;Ex tE@ f8.uE@ U@;B|Ex uSExHa D$E${ ED$E@ D$E$踶c D$E$J ee D$E$3 ED$E@ D$E$pD$E$ E@D$n D$E$ EfxuHEx$t?E@$x t39D$ED$ E@$@ D$D$E$%ED$E$~ 4[]ÐUS$EE #f8E @ @D$D$E$0 E @ x tImD$E$ ED$E @ @ D$E$IoD$E$ E @D$D$E$ E $}ED$E$ E @ @$DEED$D$E$W E @ x t6D$E$6 ED$E @ @ D$E$pED$D$E$ E @D$D$E$ E x$tFmD$E$ ED$E @$D$E$oD$E$ }tD$E$n $[]ÐU(EE}rt}r}ct.O}st} t>ELZ*hr7 ` **0A`***':7N***;`@@@@***(>7N**gr*** `*** $,5JUbw1*(@e #<Un6Ohk-@* \**9*Hcs7**<V*hm *@n*@c*c!*4M` "*6@n7c,I*f5@@t55J\* & @q ` `('5`  `(*J(*3I\#@Ncy(*2NY*Jk*s+F P`@_kp*1L_|L_k +F D `    * `        *@       +F JD `    @ i ~    F`| #@m| F`|## *D &)@ **@j*@v* FZo@a)ALU*@ak ` BTq$5@ `$ *D ) EX DD L`@g"@es AQ` 2  (`  !@!i!(!!! "F@"E`""`"&J"*"J#@#_##* (### $Q$$$J$%#%@%`% *%%%& &=&Z&r&&&&&&&&'''?'X' g'v'(*'''' ( (@(_(v(((() )K)_)n)|))())*!*&?*[*q*{*Q**!*&*****+Q!+:+(L+v(`++(+ ,@, (*hP,XS,o,r,,,,-`---..<.`...... /`/// 0^0h0000 1`112@22222233('353K3V3g3z333D344(2 484`444(444445&5>5D`555(4555556"646(2`6666666F 7 7`776F7778@8`77q888 88(2889'9>9R9d9u999(299: :=: `:('3::; ;`;;;;;; < <`<<<(4<K3=@====>>@>`>(2v>K3>>>?0? =`??? @ (2 @@@`;@@A A@AKA^A{AAAAB@BgBk~BBBBC@CbCxCCCCCCC@AC D%D3D`DDDE@EEEkEEEFF(F@FZF@AoFFFQFFF GAGVGkbGGVG#=GGGGHHVGk4HOH`HHHVGkHHHVGHHHI(#I0IEIVIfIIIIIJJ@JcJJ JJ(#IJK'KVI@KtK KKK = L`L JL(#ILKLLM@MMMMAM NM#`NNNO@OdOOOP4P@PPQPJPL(PPPQ@QQQ R`RRRR(S*HSOSeSISSSST"T+TGTdTT(TTTT U`UU(UUUU VAV]V(pVVVVV WYW`WWWWX X`XXXYY0Y]P]h]z]]k]]]]]]^(^@^z]Q^kk^|^^4PF ^^^^^(2^_#_5_E___p_~__F ______ `_$`=`N````a a(a@avaaaaa bk`bbbbc c@c#`ccccd@dcd|dddddecd|d eRe(4`ee#_eE___eeef@f_f`>(2lff#_fE___f_efg.g3gKgTgigggggg h@hohghhh4Phh iNiF `i(*iii j@j\jj2jjjk k6k(2BkMk\kukk(2kkk lL lHl`l=lllm mHl@mQ(2ummmmmmm n("n1nHn]nnnnn oF `ooo p`ppp qTT`qq q(2qrr@rkrrrrr s)s(25s`sssss(2 tt1t(1z4'KHz\Wzlzzzzz{@{`{t{{{{Q(2{|f|@|T||||(2||f}}@}}}}~T@~(2o~9~~~~(4~ Uh#;*`T;/J`>(2@f)>N`Tփ)>`$(4A`̄@( Bukn` ` @  Pk@TTeʋ֋k `(*ǎ͎Վݎ %-Q_FULL_F q_fullQ_FULL_T!q_fullQ_EMPT_F !q_lenQ_EMPT_T q_lenQ_FULL_F q_e_fQ_FULL_T!q_fullQ_EMPT_F q_e_fQ_EMPT_T q_len#ifdef VERIvoidcheck_claim(int st){ if (st == endclaim) uerror("claim violated!"); if (stopstate[VERI][st]) uerror("end state in claim reached");}#endif#ifdef SC#define _FILE_OFFSET_BITS 64#include #include #include #include #include #include #include #if defined(WIN32) || defined(WIN64)#include #else#include #include #include #include #include #define Offsetof(X, Y) ((unsigned long)(&(((X *)0)->Y)))#ifndef max#define max(a,b) (((a)<(b)) ? (b) : (a))#ifndef PRINTFint Printf(const char *fmt, ...); /* prototype only */#ifdef CNTRSTACK#define onstack_now() (LL[trpt->j6] && LL[trpt->j7])#define onstack_put() LL[trpt->j6]++; LL[trpt->j7]++#define onstack_zap() LL[trpt->j6]--; LL[trpt->j7]--#if !defined(SAFETY) && !defined(NOCOMP)#define V_A (((now._a_t&1)?2:1) << (now._a_t&2))#define A_V (((now._a_t&1)?1:2) << (now._a_t&2))int S_A = 0;#define V_A 0#define A_V 0#define S_A 0#ifdef MA#undef onstack_now#undef onstack_put#undef onstack_zap#define onstack_put() ;#define onstack_zap() gstore((char *) &now, vsize, 4)#if defined(FULLSTACK) && !defined(BITSTATE)#define onstack_put() trpt->ostate = Lstate#define onstack_zap() { \ if (trpt->ostate) \ trpt->ostate->tagged = \ (S_A)? (trpt->ostate->tagged&~V_A) : 0; \ }struct H_el { struct H_el *nxt;#ifdef FULLSTACK unsigned int tagged;#if defined(BITSTATE) && !defined(NOREDUCE) && !defined(SAFETY) unsigned int proviso;#if defined(CHECK) || (defined(COLLAPSE) && !defined(FULLSTACK)) unsigned long st_id;#ifdef COLLAPSE#if VECTORSZ<65536 unsigned short ln; unsigned long ln;#if !defined(SAFETY) || defined(REACH) unsigned int D; unsigned state;} **H_tab, **S_Tab; typedef struct Trail { int st; /* current state */ uchar pr; /* process id */ uchar tau; /* 8 bit-flags */ uchar o_pm; /* 8 more bit-flags */#if 0 Meaning of bit-flags: tau&1 -> timeout enabled tau&2 -> request to enable timeout 1 level up (in claim) tau&4 -> current transition is a claim move tau&8 -> current transition is an atomic move tau&16 -> last move was truncated on stack tau&32 -> current transition is a preselected move tau&64 -> at least one next state is not on the stack tau&128 -> current transition is a stutter move o_pm&1 -> the current pid moved -- implements else o_pm&2 -> this is an acceptance state o_pm&4 -> this is a progress state o_pm&8 -> fairness alg rule 1 undo mark o_pm&16 -> fairness alg rule 3 undo mark o_pm&32 -> fairness alg rule 2 undo mark o_pm&64 -> the current proc applied rule2 o_pm&128 -> a fairness, dummy move - all procs blocked#if defined(FULLSTACK) && defined(MA) && !defined(BFS) uchar proviso;#ifndef BFS uchar o_n, o_ot; /* to save locals */ uchar o_m;#ifdef EVENT_TRACE#if nstates_event<256 uchar o_event; unsigned short o_event; int o_tt; short o_To;#ifdef RANDOMIZE short oo_i;#if defined(HAS_UNLESS) && !defined(BFS) int e_state; /* if escape trans - state of origin */#if (defined(FULLSTACK) && !defined(MA)) || defined(BFS) struct H_el *ostate; /* pointer to stored state */#if defined(CNTRSTACK) && !defined(BFS) long j6, j7; Trans *o_t;#ifdef HAS_SORTED short ipt; union { int oval; int *ovals; } bup;} Trail;Trail *trail, *trpt;FILE *efd;uchar *this;long maxdepth=10000;long omaxdepth=10000;char *stackfile;uchar *SS, *LL;uchar HASH_NR = 0;double memcnt = (double) 0;double memlim = (double) (1<<30);/* for emalloc: */static char *have;static long left = 0L;static double fragment = (double) 0;static unsigned long grow;unsigned int HASH_CONST[] = { /* asuming 4 bytes per int */ 0x88888EEF, 0x00400007, 0x04c11db7, 0x100d4e63, 0x0fc22f87, 0x3ff0c3ff, 0x38e84cd7, 0x02b148e9, 0x98b2e49d, 0xb616d379, 0xa5247fd9, 0xbae92a15, 0xb91c8bc5, 0x8e5880f3, 0xacd7c069, 0xb4c44bb3, 0x2ead1fb7, 0x8e428171, 0xdbebd459, 0x828ae611, 0x6cb25933, 0x86cdd651, 0x9e8f5f21, 0xd5f8d8e7, 0x9c4e956f, 0xb5cf2c71, 0x2e805a6d, 0x33fc3a55, 0xaf203ed1, 0xe31f5909, 0x5276db35, 0x0c565ef7, 0x273d1aa5, 0x8923b1dd, 0};int mreached=0, done=0, errors=0, Nrun=1;double nstates=0, nlinks=0, truncs=0, truncs2=0;double nlost=0, nShadow=0, hcmp=0, ngrabs=0;#ifdef BFSdouble midrv=0, failedrv=0, revrv=0;unsigned long nr_states=0; /* nodes in DFA */long Fa=0, Fh=0, Zh=0, Zn=0;long PUT=0, PROBE=0, ZAPS=0;long Ccheck=0, Cholds=0;int a_cycles=0, upto=1, strict=0, verbose = 0, signoff = 0;#ifdef HAS_CODEint gui = 0, coltrace = 0, readtrail = 0, whichtrail = 0, onlyproc = -1, silent = 0;int state_tables=0, fairness=0, no_rck=0, Nr_Trails=0;char simvals[128];#ifndef INLINEint TstOnly=0;unsigned long mask, nmask;#ifdef BITSTATEint ssize=23; /* 1 Mb */int ssize=19; /* 512K slots */int hmax=0, svmax=0, smax=0;int Maxbody=0, XX;uchar *noptr; /* used by macro Pptr(x) */#ifdef VAR_RANGESvoid logval(char *, int);void dumpranges(void);#define INLINE_REVextern void dfa_init(unsigned short);extern int dfa_member(unsigned long);extern int dfa_store(uchar *);unsigned int maxgs = 0;State comp_now; /* compressed state vector */State comp_msk;uchar *Mask = (uchar *) &comp_msk;State comp_tmp;static char *scratch = (char *) &comp_tmp;Stack *stack; /* for queues, processes */Svtack *svtack; /* for old state vectors */static unsigned hfns = 3; /* new default */static unsigned long j1;static unsigned long K1, K2;static unsigned long j2, j3, j4;static long udmem;static long A_depth = 0;long depth = 0;static uchar warned = 0, iterative = 0, like_java = 0, every_error = 0;static uchar noasserts = 0, noends = 0, bounded = 0;#if SYNC>0 && ASYNC==0void set_recvs(void);int no_recvs(int);#if SYNC#define IfNotBlocked if (boq != -1) continue;#define UnBlock boq = -1#define IfNotBlocked /* cannot block */#define UnBlock /* don't bother */#endif int (*bstore)(char *, int);int bstore_reg(char *, int);int bstore_mod(char *, int);void active_procs(void);void cleanup(void);void do_the_search(void);void find_shorter(int);void iniglobals(void);void stopped(int);void wrapup(void);int *grab_ints(int);void ungrab_ints(int *, int);Trans *settr( int t_id, int a, int b, int c, int d, char *t, int g, int tpe0, int tpe1){ Trans *tmp = (Trans *) emalloc(sizeof(Trans)); tmp->atom = a&(6|32); /* only (2|8|32) have meaning */ if (!g) tmp->atom |= 8; /* no global references */ tmp->st = b; tmp->tpe[0] = tpe0; tmp->tpe[1] = tpe1; tmp->tp = t; tmp->t_id = t_id; tmp->forw = c; tmp->back = d; return tmp;} cpytr(Trans *a) int i; tmp->atom = a->atom; tmp->st = a->st;#ifdef HAS_UNLESS tmp->e_trans = a->e_trans; for (i = 0; i < HAS_UNLESS; i++) tmp->escp[i] = a->escp[i]; tmp->tpe[0] = a->tpe[0]; tmp->tpe[1] = a->tpe[1]; for (i = 0; i < 6; i++) { tmp->qu[i] = a->qu[i]; tmp->ty[i] = a->ty[i]; tmp->tp = (char *) emalloc(strlen(a->tp)+1); strcpy(tmp->tp, a->tp); tmp->t_id = a->t_id; tmp->forw = a->forw; tmp->back = a->back;#ifndef NOREDUCEintsrinc_set(int n){ if (n <= 2) return LOCAL; if (n <= 2+ DELTA) return Q_FULL_F; /* 's' or nfull */ if (n <= 2+2*DELTA) return Q_EMPT_F; /* 'r' or nempty */ if (n <= 2+3*DELTA) return Q_EMPT_T; /* empty */ if (n <= 2+4*DELTA) return Q_FULL_T; /* full */ if (n == 5*DELTA) return GLOBAL; if (n == 6*DELTA) return TIMEOUT_F; if (n == 7*DELTA) return ALPHA_F; Uerror("cannot happen srinc_class"); return BAD;srunc(int n, int m){ switch(m) { case Q_FULL_F: return n-2; case Q_EMPT_F: return n-2-DELTA; case Q_EMPT_T: return n-2-2*DELTA; case Q_FULL_T: return n-2-3*DELTA; case ALPHA_F: case TIMEOUT_F: return 257; /* non-zero, and > MAXQ */ Uerror("cannot happen srunc"); return 0;int cnt;isthere(Trans *a, int b){ Trans *t; for (t = a; t; t = t->nxt) if (t->t_id == b) return 1;mark_safety(Trans *t) /* for conditional safety */{ int g = 0, i, j, k; if (!t) return 0; if (t->qu[0]) return (t->qu[1])?2:1; /* marked */ for (i = 0; i < 2; i++) { j = srinc_set(t->tpe[i]); if (j >= GLOBAL && j != ALPHA_F) return -1; if (j != LOCAL) { k = srunc(t->tpe[i], j); if (g == 0 || t->qu[0] != k || t->ty[0] != j) { t->qu[g] = k; t->ty[g] = j; g++; } } } return g;retrans(int n, int m, int is, short srcln[], uchar reach[]) /* process n, with m states, is=initial state */{ Trans *T0, *T1, *T2, *T3; int i, k; int g, h, j, aa; int p; if (state_tables >= 4) { printf("STEP 1 proctype %%s\n", procname[n]); for (i = 1; i < m; i++) for (T0 = trans[n][i]; T0; T0 = T0->nxt) crack(n, i, T0, srcln); return; do { for (i = 1, cnt = 0; i < m; i++) { T2 = trans[n][i]; T1 = T2?T2->nxt:(Trans *)0;/* prescan: */ for (T0 = T1; T0; T0 = T0->nxt)/* choice in choice */ { if (T0->st && trans[n][T0->st] && trans[n][T0->st]->nxt) break; } if (T0) printf("\tstate %%d / %%d: choice in choice\n", i, T0->st); if (T0) for (T0 = T1; T0; T0 = T0->nxt) { T3 = trans[n][T0->st]; if (!T3->nxt) { T2->nxt = cpytr(T0); T2 = T2->nxt; imed(T2, T0->st, n, i); continue; } do { T3 = T3->nxt; T2->nxt = cpytr(T3); } while (T3->nxt); cnt++; } } while (cnt); if (state_tables >= 3) { printf("STEP 2 proctype %%s\n", for (i = 1; i < m; i++) { if (trans[n][i] && trans[n][i]->nxt) /* optimize */ { T1 = trans[n][i]->nxt; printf("\t\tpull %%d (%%d) to %%d\n", T1->st, T1->forw, i); if (!trans[n][T1->st]) continue; T0 = cpytr(trans[n][T1->st]); trans[n][i] = T0; reach[T1->st] = 1; imed(T0, T1->st, n, i); for (T1 = T1->nxt; T1; T1 = T1->nxt) { T1->st, T1->forw, i); if (!trans[n][T1->st]) continue; T0->nxt = cpytr(trans[n][T1->st]); T0 = T0->nxt; reach[T1->st] = 1; imed(T0, T1->st, n, i); if (state_tables >= 2) { printf("STEP 3 proctype %%s\n", { if (!trans[n][i]) continue; /* check for each state i if an * escape to some state p is defined * if so, copy and mark p's transitions * and prepend them to the transition- * list of state i */ if (!like_java) /* the default */ { for (T0 = trans[n][i]; T0; T0 = T0->nxt) for (k = HAS_UNLESS-1; k >= 0; k--) { if (p = T0->escp[k]) for (T1 = trans[n][p]; T1; T1 = T1->nxt) { if (isthere(trans[n][i], T1->t_id)) T2 = cpytr(T1); T2->e_trans = p; T2->nxt = trans[n][i]; trans[n][i] = T2; } } } else /* outermost unless checked first */ { Trans *T4; T4 = T3 = (Trans *) 0; T2->nxt = (Trans *) 0; if (T3) T3->nxt = T2; else T4 = T2; T3 = T2; if (T4) { T3->nxt = trans[n][i]; trans[n][i] = T4; } { if (a_cycles) { /* moves through these states are visible */#if PROG_LAB>0 && defined(HAS_NP) if (progstate[n][i]) goto degrade; for (T1 = trans[n][i]; T1; T1 = T1->nxt) if (progstate[n][T1->st]) goto degrade; if (accpstate[n][i] || visstate[n][i]) if (accpstate[n][T1->st]) T1 = trans[n][i]; if (!T1) continue; g = mark_safety(T1); /* V3.3.1 */ if (g < 0) goto degrade; /* global */ /* check if mixing of guards preserves reduction */ if (T1->nxt) { k = 0; { if (!(T0->atom&8)) for (aa = 0; aa < 2; aa++) { j = srinc_set(T0->tpe[aa]); if (j >= GLOBAL && j != ALPHA_F) goto degrade; if (T0->tpe[aa] && T0->tpe[aa] != T1->tpe[0]) k = 1; } } /* g = 0; V3.3.1 */ if (k) /* non-uniform selection */ for (aa = 0; aa < 2; aa++) { j = srinc_set(T0->tpe[aa]); if (j != LOCAL) { k = srunc(T0->tpe[aa], j); for (h = 0; h < 6; h++) if (T1->qu[h] == k && T1->ty[h] == j) break; if (h >= 6) { T1->qu[g%%6] = k; T1->ty[g%%6] = j; g++; } } } if (g > 6) { T1->qu[0] = 0; /* turn it off */ printf("pan: warning, line %%d, ", srcln[i]); printf("too many stmnt types (%%d)", g); printf(" in selection\n"); goto degrade; /* mark all options global if >=1 is global */ for (T1 = trans[n][i]; T1; T1 = T1->nxt) if (!(T1->atom&8)) break; if (T1)degrade: for (T1 = trans[n][i]; T1; T1 = T1->nxt) T1->atom &= ~8; /* mark as unsafe */ /* can only mix 'r's or 's's if on same chan */ /* and not mixed with other local operations */ if (!T1 || T1->qu[0]) continue; j = T1->tpe[0]; if (T1->nxt && T1->atom&8) { if (j == 5*DELTA) { printf("warning: line %%d ", srcln[i]); printf("mixed condition "); printf("(defeats reduction)\n"); goto degrade; } for (T0 = T1; T0; T0 = T0->nxt) for (aa = 0; aa < 2; aa++) if (T0->tpe[aa] && T0->tpe[aa] != j) printf("[%%d-%%d] mixed %%stion ", T0->tpe[aa], j, (j==5*DELTA)?"condi":"selec"); printf(" '%%s' <-> '%%s'\n", T1->tp, T0->tp); } } { T2 = trans[n][i]; if (!T2 || T2->nxt || strncmp(T2->tp, ".(goto)", 7) || !stopstate[n][i]) continue; stopstate[n][T2->st] = 1; if (state_tables) { printf("proctype "); if (!strcmp(procname[n], ":init:")) printf("init\n"); else printf("%%s\n", procname[n]); reach[i] = 1; tagtable(n, m, is, srcln, reach); } else { int nrelse; if (strcmp(procname[n], ":never:") != 0) { for (T0 = trans[n][i]; T0; T0 = T0->nxt) { if (T0->st == i && strcmp(T0->tp, "(1)") == 0) { printf("error: proctype '%%s' ", procname[n]); printf("line %%d, state %%d: has un", srcln[i], i); printf("conditional self-loop\n"); pan_exit(1); } } } nrelse = 0; { if (strcmp(T0->tp, "else") == 0) nrelse++; if (nrelse > 1) { printf("error: proctype '%%s' state", procname[n]); printf(" %%d, inherits %%d", i, nrelse); printf(" 'else' stmnts\n"); pan_exit(1); } } if (!state_tables && strcmp(procname[n], ":never:") == 0) { int h = 0; if (T0->forw > h) h = T0->forw; h++; frm_st0 = (short *) emalloc(h * sizeof(short)); frm_st0[T0->forw] = i;imed(Trans *T, int v, int n, int j) /* set intermediate state */{ progstate[n][T->st] |= progstate[n][v]; accpstate[n][T->st] |= accpstate[n][v]; stopstate[n][T->st] |= stopstate[n][v]; mapstate[n][j] = T->st;tagtable(int n, int m, int is, short srcln[], uchar reach[]){ Trans *z; if (is >= m || !trans[n][is] || is <= 0 || reach[is] == 0) reach[is] = 0; for (z = trans[n][is]; z; z = z->nxt) crack(n, is, z, srcln); int i, j; tagtable(n, m, z->st, srcln, reach); for (i = 0; i < HAS_UNLESS; i++) { j = trans[n][is]->escp[i]; if (!j) break; tagtable(n, m, j, srcln, reach);crack(int n, int j, Trans *z, short srcln[]){ int i; if (!z) return; printf(" state %%3d -(tr %%3d)-> state %%3d ", j, z->forw, z->st); printf("[id %%3d tp %%3d", z->t_id, z->tpe[0]); if (z->tpe[1]) printf(",%%d", z->tpe[1]); if (z->e_trans) printf(" org %%3d", z->e_trans); else if (state_tables >= 2) { if (!z->escp[i]) break; printf(" esc %%d", z->escp[i]); printf("]"); printf(" [%%s%%s%%s%%s%%s] line %%d => ", z->atom&6?"A":z->atom&32?"D":"-", accpstate[n][j]?"a" :"-", stopstate[n][j]?"e" : "-", progstate[n][j]?"p" : "-", z->atom & 8 ?"L":"G", srcln[j]); for (i = 0; z->tp[i]; i++) if (z->tp[i] == '\n') printf("\\n"); putchar(z->tp[i]); if (z->qu[0]) { printf("\t["); for (i = 0; i < 6; i++) if (z->qu[i]) printf("(%%d,%%d)", z->qu[i], z->ty[i]); printf("]"); printf("\n"); fflush(stdout);#define BYTESIZE 32 /* 2^8 : 2^3 = 256:8 = 32 */typedef struct Vr_Ptr { char *nm; uchar vals[BYTESIZE]; struct Vr_Ptr *nxt;} Vr_Ptr;Vr_Ptr *ranges = (Vr_Ptr *) 0;logval(char *s, int v){ Vr_Ptr *tmp; if (v<0 || v > 255) return; for (tmp = ranges; tmp; tmp = tmp->nxt) if (!strcmp(tmp->nm, s)) goto found; tmp = (Vr_Ptr *) emalloc(sizeof(Vr_Ptr)); tmp->nxt = ranges; ranges = tmp; tmp->nm = s;found: tmp->vals[(v)/8] |= 1<<((v)%%8);dumpval(uchar X[], int range){ int w, x, i, j = -1; for (w = i = 0; w < range; w++) for (x = 0; x < 8; x++, i++)from: if ((X[w] & (1<= 0 && j != 255) printf("-255");dumpranges(void) printf("\nValues assigned within "); printf("interval [0..255]:\n"); { printf("\t%%s\t: ", tmp->nm); dumpval(tmp->vals, BYTESIZE); printf("\n");/*#define uchar unsigned char*/#define ulong unsigned long#define ushort unsigned short#define TWIDTH 256#define HASH(y,n) (n)*(((long)y))#define INRANGE(e,h) ((h>=e->From && h<=e->To)||(e->s==1 && e->S==h))extern char *emalloc(unsigned long); /* imported routine */extern void dfa_init(ushort); /* 4 exported routines */extern int dfa_member(ulong);extern int dfa_store(uchar *);extern void dfa_stats(void);typedef struct Edge { uchar From, To; /* max range 0..255 */ uchar s, S; /* if s=1, S is singleton */ struct Vertex *Dst; struct Edge *Nxt;} Edge;typedef struct Vertex { ulong key, num; /* key for splay tree, nr incoming edges */ uchar from[2], to[2]; /* in-node predefined edge info */ struct Vertex *dst[2];/* most nodes have 2 or more edges */ struct Edge *Succ; /* in case there are more edges */ struct Vertex *lnk, *left, *right; /* splay tree plumbing */} Vertex;static Edge *free_edges;static Vertex *free_vertices;static Vertex **layers; /* one splay tree of nodes per layer */static Vertex **path; /* run of word in the DFA */static Vertex *R, *F, *NF; /* Root, Final, Not-Final */static uchar *word, *lastword;/* string, and last string inserted */static int dfa_depth, iv=0, nv=0, pfrst=0, Tally;static void insert_it(Vertex *, int); /* splay-tree code */static void delete_it(Vertex *, int);static Vertex *find_it(Vertex *, Vertex *, uchar, int);static voidrecyc_edges(Edge *e) if (!e) return; recyc_edges(e->Nxt); e->Nxt = free_edges; free_edges = e;static Edge *new_edge(Vertex *dst){ Edge *e; if (free_edges) { e = free_edges; free_edges = e->Nxt; e->From = e->To = e->s = e->S = 0; e->Nxt = (Edge *) 0; e = (Edge *) emalloc(sizeof(Edge)); e->Dst = dst; return e;recyc_vertex(Vertex *v) recyc_edges(v->Succ); v->Succ = (Edge *) free_vertices; free_vertices = v; nr_states--;static Vertex *new_vertex(void){ Vertex *v; if (free_vertices) { v = free_vertices; free_vertices = (Vertex *) v->Succ; v->Succ = (Edge *) 0; v->num = 0; v = (Vertex *) emalloc(sizeof(Vertex)); nr_states++; return v; allDelta(Vertex *v, int n){ Vertex *dst = new_vertex(); v->from[0] = 0; v->to[0] = 255; v->dst[0] = dst; dst->num = 256; insert_it(v, n); return dst;insert_edge(Vertex *v, Edge *e){ /* put new edge first */ if (!v->dst[0]) { v->dst[0] = e->Dst; v->from[0] = e->From; v->to[0] = e->To; recyc_edges(e); if (!v->dst[1]) { v->from[1] = v->from[0]; v->from[0] = e->From; v->to[1] = v->to[0]; v->to[0] = e->To; v->dst[1] = v->dst[0]; v->dst[0] = e->Dst; } /* shift */ { int f = v->from[1]; int t = v->to[1]; Vertex *d = v->dst[1]; v->from[1] = v->from[0]; v->from[0] = e->From; e->From = f; e->To = t; e->Dst = d; e->Nxt = v->Succ; v->Succ = e;copyRecursive(Vertex *v, Edge *e){ Edge *f; if (e->Nxt) copyRecursive(v, e->Nxt); f = new_edge(e->Dst); f->From = e->From; f->To = e->To; f->s = e->s; f->S = e->S; f->Nxt = v->Succ; v->Succ = f;copyEdges(Vertex *to, Vertex *from){ int i; { to->from[i] = from->from[i]; to->to[i] = from->to[i]; to->dst[i] = from->dst[i]; if (from->Succ) copyRecursive(to, from->Succ);cacheDelta(Vertex *v, int h, int first){ static Edge *ov, tmp; int i; if (!first && INRANGE(ov,h)) return ov; /* intercepts about 10%% */ if (v->dst[i] && h >= v->from[i] && h <= v->to[i]) { tmp.From = v->from[i]; tmp.To = v->to[i]; tmp.Dst = v->dst[i]; tmp.s = tmp.S = 0; ov = &tmp; return ov; for (ov = v->Succ; ov; ov = ov->Nxt) if (INRANGE(ov,h)) return ov; Uerror("cannot get here, cacheDelta"); return (Edge *) 0;Delta(Vertex *v, int h) /* v->delta[h] */ if (v->dst[0] && h >= v->from[0] && h <= v->to[0]) return v->dst[0]; /* oldest edge */ if (v->dst[1] && h >= v->from[1] && h <= v->to[1]) return v->dst[1]; for (e = v->Succ; e; e = e->Nxt) if (INRANGE(e,h)) return e->Dst; Uerror("cannot happen Delta"); return (Vertex *) 0;numDelta(Vertex *v, int d) ulong cnt; if (v->dst[i]) { cnt = v->dst[i]->num + d*(1 + v->to[i] - v->from[i]); if (d == 1 && cnt < v->dst[i]->num) goto bad; v->dst[i]->num = cnt; { cnt = e->Dst->num + d*(1 + e->To - e->From + e->s); if (d == 1 && cnt < e->Dst->num)bad: Uerror("too many incoming edges"); e->Dst->num = cnt;setDelta(Vertex *v, int h, Vertex *newdst) /* v->delta[h] = newdst; */{ Edge *e, *f = (Edge *) 0, *g; /* remove the old entry, if there */ { if (h == v->from[i]) { if (h == v->to[i]) { v->dst[i] = (Vertex *) 0; v->from[i] = v->to[i] = 0; } else v->from[i]++; } else if (h == v->to[i]) { v->to[i]--; } else { g = new_edge(v->dst[i]);/* same dst */ g->From = v->from[i]; g->To = h-1; /* left half */ v->from[i] = h+1; /* right half */ insert_edge(v, g); goto part2; for (e = v->Succ; e; f = e, e = e->Nxt) { if (e->s == 1 && e->S == h) { e->s = e->S = 0; goto rem_tst; if (h >= e->From && h <= e->To) { if (h == e->From) { if (h == e->To) { if (e->s) { e->From = e->To = e->S; e->s = 0; break; } else goto rem_do; e->From++; } else if (h == e->To) { e->To--; } else /* split */ { g = new_edge(e->Dst); /* same dst */ g->From = e->From; g->To = h-1; /* g=left half */ e->From = h+1; /* e=right half */ g->Nxt = e->Nxt; /* insert g */ e->Nxt = g; /* behind e */ break; /* done */rem_tst: if (e->From > e->To) { if (e->s == 0) {rem_do: if (f) f->Nxt = e->Nxt; else v->Succ = e->Nxt; e->Nxt = (Edge *) 0; recyc_edges(e); { e->From = e->To = e->S; e->s = 0; break;part2: /* check if newdst is already there */ if (v->dst[i] == newdst) { if (h+1 == (int) v->from[i]) { v->from[i] = h; return; if (h == (int) v->to[i]+1) { v->to[i] = h; { if (e->Dst == newdst) { if (h+1 == (int) e->From) { e->From = h; if (e->s == 1 && e->S+1 == e->From) { e->From = e->S; e->s = e->S = 0; if (h == (int) e->To+1) { e->To = h; if (e->s == 1 && e->S == e->To+1) { e->To = e->S; if (e->s == 0) { e->s = 1; e->S = h; /* add as a new edge */ e = new_edge(newdst); e->From = e->To = h; insert_edge(v, e);static ulongcheap_key(Vertex *v){ ulong vk2 = 0; if (v->dst[0]) { vk2 = (ulong) v->dst[0]; if ((ulong) v->dst[1] > vk2) vk2 = (ulong) v->dst[1]; } else if (v->dst[1]) vk2 = (ulong) v->dst[1]; if (v->Succ) { Edge *e; for (e = v->Succ; e; e = e->Nxt) if ((ulong) e->Dst > vk2) vk2 = (ulong) e->Dst; Tally = (vk2>>2)&(TWIDTH-1); return v->key;mk_key(Vertex *v) /* not sensitive to order */{ ulong m = 0, vk2 = 0; Edge *e; { m += HASH(v->dst[0], v->to[0] - v->from[0] + 1); vk2 = (ulong) v->dst[0]; if (v->dst[1]) { m += HASH(v->dst[1], v->to[1] - v->from[1] + 1); if ((ulong) v->dst[1] > vk2) vk2 = (ulong) v->dst[1]; { m += HASH(e->Dst, e->To - e->From + 1 + e->s); if ((ulong) e->Dst > vk2) vk2 = (ulong) e->Dst; return m;mk_special(int sigma, Vertex *n, Vertex *v) Edge *f; if (v->dst[i]) { if (sigma >= v->from[i] && sigma <= v->to[i]) { m += HASH(v->dst[i], v->to[i]-v->from[i]); if ((ulong) v->dst[i] > vk2 && v->to[i] > v->from[i]) vk2 = (ulong) v->dst[i]; { m += HASH(v->dst[i], v->to[i]-v->from[i]+1); if ((ulong) v->dst[i] > vk2) for (f = v->Succ; f; f = f->Nxt) { if (sigma >= f->From && sigma <= f->To) { m += HASH(f->Dst, f->To - f->From + f->s); if ((ulong) f->Dst > vk2 && f->To - f->From + f->s > 0) vk2 = (ulong) f->Dst; } else if (f->s == 1 && sigma == f->S) { m += HASH(f->Dst, f->To - f->From + 1); if ((ulong) f->Dst > vk2) vk2 = (ulong) f->Dst; } else { m += HASH(f->Dst, f->To - f->From + 1 + f->s); if ((ulong) n > vk2) vk2 = (ulong) n; m += HASH(n, 1);void dfa_init(ushort nr_layers){ int i; Vertex *r, *t; dfa_depth = nr_layers; /* one byte per layer */ path = (Vertex **) emalloc((dfa_depth+1)*sizeof(Vertex *)); layers = (Vertex **) emalloc(TWIDTH*(dfa_depth+1)*sizeof(Vertex *)); lastword = (uchar *) emalloc((dfa_depth+1)*sizeof(uchar)); lastword[dfa_depth] = lastword[0] = 255; path[0] = R = new_vertex(); F = new_vertex(); for (i = 1, r = R; i < dfa_depth; i++, r = t) t = allDelta(r, i-1); NF = allDelta(r, i-1);static void complement_dfa(void) { Vertex *tmp = F; F = NF; NF = tmp; }doubletree_stats(Vertex *t){ Edge *e; double cnt=0.0; if (!t->key) return 0; t->key = 0; /* precaution */ if (t->dst[0]) cnt++; if (t->dst[1]) cnt++; for (e = t->Succ; e; e = e->Nxt) cnt++; cnt += tree_stats(t->lnk); cnt += tree_stats(t->left); cnt += tree_stats(t->right); return cnt;dfa_stats(void){ int i, j; double cnt = 0.0; for (j = 0; j < TWIDTH; j++) for (i = 0; i < dfa_depth+1; i++) cnt += tree_stats(layers[i*TWIDTH+j]); printf("Minimized Automaton: %%6d nodes and %%6g edges\n", nr_states, cnt);dfa_member(ulong n){ Vertex **p, **q; uchar *w = &word[n]; p = &path[n]; q = (p+1); for (i = n; i < dfa_depth; i++) *q++ = Delta(*p++, *w++); return (*p == F);dfa_store(uchar *sv){ Vertex **p, **q, *s, *y, *old, *new = F; uchar *w, *u = lastword; int i, j, k; w = word = sv; while (*w++ == *u++) /* find first byte that differs */ ; pfrst = (int) (u - lastword) - 1; memcpy(&lastword[pfrst], &sv[pfrst], dfa_depth-pfrst); if (pfrst > iv) pfrst = iv; if (pfrst > nv) pfrst = nv;/* phase1: */ p = &path[pfrst]; q = (p+1); w = &word[pfrst]; for (i = pfrst; i < dfa_depth; i++) *q++ = Delta(*p++, *w++); /* (*p)->delta[*w++]; */ if (*p == F) return 1; /* it's already there *//* phase2: */ iv = dfa_depth; do { iv--; old = new; new = find_it(path[iv], old, word[iv], iv); } while (new && iv > 0);/* phase3: */ nv = k = 0; s = path[0]; for (j = 1; j <= iv; ++j) if (path[j]->num > 1) { y = new_vertex(); copyEdges(y, path[j]); insert_it(y, j); numDelta(y, 1); delete_it(s, j-1); setDelta(s, word[j-1], y); insert_it(s, j-1); y->num = 1; /* initial value 1 */ s = y; path[j]->num--; /* only 1 moved from j to y */ k = 1; { s = path[j]; if (!k) nv = j; y = Delta(s, word[iv]); y->num--; delete_it(s, iv); setDelta(s, word[iv], old); insert_it(s, iv); old->num++; for (j = iv+1; j < dfa_depth; j++) if (path[j]->num == 0) { numDelta(path[j], -1); delete_it(path[j], j); recyc_vertex(path[j]);splay(ulong i, Vertex *t){ Vertex N, *l, *r, *y; if (!t) return t; N.left = N.right = (Vertex *) 0; l = r = &N; for (;;) { if (i < t->key) { if (!t->left) break; if (i < t->left->key) { y = t->left; t->left = y->right; y->right = t; t = y; if (!t->left) break; r->left = t; r = t; t = t->left; } else if (i > t->key) { if (!t->right) break; if (i > t->right->key) { y = t->right; t->right = y->left; y->left = t; if (!t->right) break; l->right = t; l = t; t = t->right; l->right = t->left; r->left = t->right; t->left = N.right; t->right = N.left; return t;insert_it(Vertex *v, int L){ Vertex *new, *t; ulong i; int nr; i = mk_key(v); nr = ((L*TWIDTH)+Tally); t = layers[nr]; v->key = i; if (!t) { layers[nr] = v; t = splay(i, t); if (i < t->key) { new = v; new->left = t->left; new->right = t; t->left = (Vertex *) 0; } else if (i > t->key) new->right = t->right; new->left = t; t->right = (Vertex *) 0; } else /* it's already there */ { v->lnk = t->lnk; /* put in linked list off v */ t->lnk = v; new = t; layers[nr] = new;static intcheckit(Vertex *h, Vertex *v, Vertex *n, uchar sigma){ Edge *g, *f; int i, k, j = 1; for (k = 0; k < 2; k++) if (h->dst[k]) { if (sigma >= h->from[k] && sigma <= h->to[k]) { if (h->dst[k] != n) goto no_match; for (i = h->from[k]; i <= h->to[k]; i++) { if (i == sigma) continue; g = cacheDelta(v, i, j); j = 0; if (h->dst[k] != g->Dst) goto no_match; if (g->s == 0 || g->S != i) i = g->To; for (f = h->Succ; f; f = f->Nxt) { if (INRANGE(f,sigma)) { if (f->Dst != n) goto no_match; for (i = f->From; i <= f->To; i++) { if (i == sigma) continue; g = cacheDelta(v, i, j); j = 0; if (f->Dst != g->Dst) goto no_match; if (g->s == 1 && i == g->S) continue; i = g->To; if (f->s && f->S != sigma) { g = cacheDelta(v, f->S, 1); if (h->Succ || h->dst[0] || h->dst[1]) return 1;no_match:find_it(Vertex *v, Vertex *n, uchar sigma, int L){ Vertex *z, *t; i = mk_special(sigma,n,v); if (!t) return (Vertex *) 0; layers[nr] = t = splay(i, t); if (i == t->key) for (z = t; z; z = z->lnk) if (checkit(z, v, n, sigma)) return z;delete_it(Vertex *v, int L){ Vertex *x, *t; i = cheap_key(v); if (!t) return; { Vertex *z, *y = (Vertex *) 0; for (z = t; z && z != v; y = z, z = z->lnk) ; if (z != v) goto bad; if (y) { y->lnk = z->lnk; z->lnk = (Vertex *) 0; layers[nr] = t; return; } else if (z->lnk) /* z == t == v */ { y = z->lnk; y->left = t->left; y->right = t->right; t->left = t->right = t->lnk = (Vertex *) 0; layers[nr] = y; /* delete the node itself */ if (!t->left) { x = t->right; { x = splay(i, t->left); x->right = t->right; t->left = t->right = t->lnk = (Vertex *) 0; layers[nr] = x;bad: Uerror("cannot happen delete");#if defined(MA) && (defined(W_XPT) || defined(R_XPT))static Vertex **temptree;static char wbuf[4096];static int WCNT = 4096, wcnt=0;static uchar stacker[MA+1];static ulong stackcnt = 0;extern double nstates, nlinks, truncs, truncs2;xwrite(int fd, char *b, int n) if (wcnt+n >= 4096) { write(fd, wbuf, wcnt); wcnt = 0; memcpy(&wbuf[wcnt], b, n); wcnt += n;wclose(fd) if (wcnt > 0) write(fd, wbuf, wcnt); wcnt = 0; close(fd);w_vertex(int fd, Vertex *v){ char t[3]; int i; Edge *e; xwrite(fd, (char *) &v, sizeof(Vertex *)); t[0] = 0; { t[1] = v->from[i], t[2] = v->to[i]; xwrite(fd, t, 3); xwrite(fd, (char *) &(v->dst[i]), sizeof(Vertex *)); { t[1] = e->From, t[2] = e->To; xwrite(fd, t, 3); xwrite(fd, (char *) &(e->Dst), sizeof(Vertex *)); if (e->s) { t[1] = t[2] = e->S; xwrite(fd, (char *) &(e->Dst), sizeof(Vertex *));w_layer(int fd, Vertex *v){ uchar c=1; if (!v) return; xwrite(fd, (char *) &c, 1); w_vertex(fd, v); w_layer(fd, v->lnk); w_layer(fd, v->left); w_layer(fd, v->right);w_xpoint(void){ int fd; char nm[64]; int i, j; uchar c; static uchar xwarned = 0; sprintf(nm, "%%s.xpt", Source); if ((fd = creat(nm, 0666)) <= 0) if (!xwarned) { xwarned = 1; printf("cannot creat checkpoint file\n"); xwrite(fd, (char *) &nstates, sizeof(double)); xwrite(fd, (char *) &truncs, sizeof(double)); xwrite(fd, (char *) &truncs2, sizeof(double)); xwrite(fd, (char *) &nlinks, sizeof(double)); xwrite(fd, (char *) &dfa_depth, sizeof(int)); xwrite(fd, (char *) &R, sizeof(Vertex *)); xwrite(fd, (char *) &F, sizeof(Vertex *)); xwrite(fd, (char *) &NF, sizeof(Vertex *)); { w_layer(fd, layers[i*TWIDTH+j]); c = 2; xwrite(fd, (char *) &c, 1); wclose(fd);xread(int fd, char *b, int n){ int m = wcnt; int delta = 0; if (m < n) { if (m > 0) memcpy(b, &wbuf[WCNT-m], m); delta = m; WCNT = wcnt = read(fd, wbuf, 4096); if (wcnt < n-m) Uerror("xread failed -- insufficient data"); n -= m; memcpy(&b[delta], &wbuf[WCNT-wcnt], n); wcnt -= n;x_cleanup(Vertex *c){ Edge *e; /* remove the tree and edges from c */ if (!c) return; for (e = c->Succ; e; e = e->Nxt) x_cleanup(e->Dst); recyc_vertex(c);x_remove(void){ Vertex *tmp; int i, s; int r, j; /* double-check: */ stacker[dfa_depth-1] = 0; r = dfa_store(stacker); stacker[dfa_depth-1] = 4; j = dfa_member(dfa_depth-1); if (r != 1 || j != 0) { printf("%%d: ", stackcnt); for (i = 0; i < dfa_depth; i++) printf("%%d,", stacker[i]); printf(" -- not a stackstate \n", r, j); stacker[dfa_depth-1] = 1; s = dfa_member(dfa_depth-1); { tmp = F; F = NF; NF = tmp; } /* complement */ if (s) dfa_store(stacker); stacker[dfa_depth-1] = 0; dfa_store(stacker); stackcnt++; { tmp = F; F = NF; NF = tmp; }x_rm_stack(Vertex *t, int k){ int j; Edge *e; if (k == 0) { x_remove(); if (t) { for (j = e->From; j <= (int) e->To; j++) { stacker[k] = (uchar) j; x_rm_stack(e->Dst, k-1); { stacker[k] = e->S;insert_withkey(Vertex *v, int L){ Vertex *new, *t = temptree[L]; if (!t) { temptree[L] = v; return v; } t = splay(v->key, t); if (v->key < t->key) } else if (v->key > t->key) { if (t != R && t != F && t != NF) Uerror("double insert, bad checkpoint data"); { recyc_vertex(v); new = t; temptree[L] = new; return new;find_withkey(Vertex *v, int L){ Vertex *t = temptree[L]; { temptree[L] = t = splay((ulong) v, t); if (t->key == (ulong) v) return t; Uerror("not found error, bad checkpoint data");r_layer(int fd, int n) char c, t[2]; { xread(fd, &c, 1); if (c == 2) break; if (c == 1) { v = new_vertex(); xread(fd, (char *) &(v->key), sizeof(Vertex *)); v = insert_withkey(v, n); } else /* c == 0 */ { e = new_edge((Vertex *) 0); xread(fd, t, 2); e->From = t[0]; e->To = t[1]; xread(fd, (char *) &(e->Dst), sizeof(Vertex *)); insert_edge(v, e);v_fix(Vertex *t, int nr){ int i; Edge *e; if (t->dst[i]) t->dst[i] = find_withkey(t->dst[i], nr); e->Dst = find_withkey(e->Dst, nr); v_fix(t->left, nr); v_fix(t->right, nr);v_insert(Vertex *t, int nr){ Edge *e; int i; v_insert(t->left, nr); v_insert(t->right, nr); /* remove only leafs from temptree */ t->left = t->right = t->lnk = (Vertex *) 0; insert_it(t, nr); /* into layers */ if (t->dst[i]) t->dst[i]->num += (t->to[i] - t->from[i] + 1); e->Dst->num += (e->To - e->From + 1 + e->s);x_fixup(void) for (i = 0; i < dfa_depth; i++) v_fix(temptree[i], (i+1)); for (i = dfa_depth; i >= 0; i--) v_insert(temptree[i], i);x_tail(Vertex *t, ulong want){ int i, yes, no; Edge *e; Vertex *v = (Vertex *) 0; if (!t) return v; yes = no = 0; if ((ulong) t->dst[i] == want) { /* was t->from[i] <= 0 && t->to[i] >= 0 */ /* but from and to are uchar */ if (t->from[i] == 0) yes = 1; if (t->from[i] <= 4 && t->to[i] >= 4) no = 1; if ((ulong) e->Dst == want) { /* was INRANGE(e,0) but From and To are uchar */ if ((e->From == 0) || (e->s==1 && e->S==0)) else if (INRANGE(e, 4)) if (yes && !no) return t; v = x_tail(t->left, want); if (v) return v; v = x_tail(t->right, want); if (v) return v;x_anytail(Vertex *t, Vertex *c, int nr){ int i; Edge *e, *f; Vertex *v; if ((ulong) t->dst[i] == c->key) { v = new_vertex(); v->key = t->key; f = new_edge(v); f->From = t->from[i]; f->To = t->to[i]; f->Nxt = c->Succ; c->Succ = f; if (nr > 0) x_anytail(temptree[nr-1], v, nr-1); if ((ulong) e->Dst == c->key) f->From = e->From; f->To = e->To; f->s = e->s; f->S = e->S; x_anytail(t->left, c, nr); x_anytail(t->right, c, nr);x_cpy_rev(void){ Vertex *c, *v; /* find 0 and !4 predecessor of F */ v = x_tail(temptree[dfa_depth-1], F->key); if (!v) return (Vertex *) 0; c = new_vertex(); c->key = v->key; /* every node on dfa_depth-2 that has v->key as succ */ /* make copy and let c point to these (reversing ptrs) */ x_anytail(temptree[dfa_depth-2], c, dfa_depth-2); return c;r_xpoint(void){ int fd; char nm[64]; Vertex *d; int i, j; if ((fd = open(nm, 0)) < 0) /* O_RDONLY */ Uerror("cannot open checkpoint file"); xread(fd, (char *) &nstates, sizeof(double)); xread(fd, (char *) &truncs, sizeof(double)); xread(fd, (char *) &truncs2, sizeof(double)); xread(fd, (char *) &nlinks, sizeof(double)); xread(fd, (char *) &dfa_depth, sizeof(int)); if (dfa_depth != MA+a_cycles) Uerror("bad dfa_depth in checkpoint file"); path = (Vertex **) emalloc((dfa_depth+1)*sizeof(Vertex *)); layers = (Vertex **) emalloc(TWIDTH*(dfa_depth+1)*sizeof(Vertex *)); temptree = (Vertex **) emalloc((dfa_depth+2)*sizeof(Vertex *)); lastword = (uchar *) emalloc((dfa_depth+1)*sizeof(uchar)); lastword[dfa_depth] = lastword[0] = 255; path[0] = R = new_vertex(); xread(fd, (char *) &R->key, sizeof(Vertex *)); R = insert_withkey(R, 0); F = new_vertex(); xread(fd, (char *) &F->key, sizeof(Vertex *)); F = insert_withkey(F, dfa_depth); NF = new_vertex(); xread(fd, (char *) &NF->key, sizeof(Vertex *)); NF = insert_withkey(NF, dfa_depth); r_layer(fd, i); if (wcnt != 0) Uerror("bad count in checkpoint file"); d = x_cpy_rev(); x_fixup(); stacker[dfa_depth-1] = 0; x_rm_stack(d, dfa_depth-2); x_cleanup(d); printf("pan: removed %%d stackstates\n", stackcnt); nstates -= (double) stackcnt;proctype %s not found Addproc(%d); #define _T5 %d #define _T2 %d case _T5: /* np_ */ if (!((!(o_pm&4) && !(tau&128)))) if (!((!(trpt->o_pm&4) && !(trpt->tau&128)))) continue; /* else fall through */ case _T2: /* true */ _m = 3; goto P999; /* np_ demon: */ trans[_NP_] = (Trans **) emalloc(2*sizeof(Trans *)); T = trans[_NP_][0] = settr(9997,0,1,_T5,0,"(np_)", 1,2,0); T->nxt = settr(9998,0,0,_T2,0,"(1)", 0,2,0); T = trans[_NP_][1] = settr(9999,0,1,_T5,0,"(np_)", 1,2,0); pan.cpan_s.cpan_t.cpan.hpan_s.hpan_t.hpan.tpan_s.tpan_t.tpan.mpan_s.mpan_t.mpan.bpan_s.bpan_t.bwspin: cannot create pan.[chtmfb] Spin Version 4.3.0 -- 22 June 2007#define Version "%s" #define Source "%s" char *TrailFile = Source; /* default */ #if defined(BFS) #ifndef SAFETY #define SAFETY #ifndef XUSAFE #define XUSAFE #ifndef uchar #define uchar unsigned char #ifndef uint #define uint unsigned int _:never_template:_spin: warning, make sure that the S1 model includes the same remote references #ifndef NFAIR #define NFAIR 2 /* must be >= 2 */ #define HAS_LAST %d #define DELTA %d #ifdef MA #if MA==1 #undef MA #define MA 100 #endif #endif #ifdef W_XPT #if W_XPT==1 #undef W_XPT #define W_XPT 1000000 #define NTIM %d #define ETIM %d #define REM_VARS 1 #define REM_REFS %d #define HAS_SORTED %d #define M_LOSS #define HAS_RANDOM %d #define HAS_CODE #define HAS_STACK #define HAS_ENABLED 1 #define HAS_UNLESS %d #define HAS_PROVIDED %d #define HAS_PCVALUE %d #define HAS_BADELSE %d #ifndef NOREDUCE #define NOREDUCE 1 #define HAS_NP %d #define MERGED 1 #ifdef NP /* includes np_ demon */ #define HAS_NP 2 #define VERI %d #define endclaim 3 /* none */ #if !defined(NOCLAIM) && !defined NP #define endclaim endstate%d #define EVENT_TRACE %d #define endevent endstate%d #define NEGATED_TRACE 1 typedef struct S_F_MAP { char *fnm; int from; int upto; } S_F_MAP; /*** Generated by %s ***/ /*** From source: %s ***/ #include "pan.h" #include "pan_s.h" #include "pan_t.h" State A_Root; /* seed-state for cycles */ State now; /* the full state-vector */ extern int verbose; extern long depth; #ifndef NOBOUNDCHECK #define Index(x, y) Boundcheck(x, y, II, tt, t) #else #define Index(x, y) x #ifdef PEG struct T_SRC { char *fl; int ln; } T_SRC[NTRANS]; void tr_2_src(int m, char *file, int ln) { T_SRC[m].fl = file; T_SRC[m].ln = ln; } void putpeg(int n, int m) { printf("%%5d trans %%4d ", m, n); printf("file %%s line %%3d\n", T_SRC[n].fl, T_SRC[n].ln); #define tr_2_src(m,f,l) #endif void settable(void) { Trans *T; Trans *settr(int, int, int, int, int, char *, int, int, int); trans = (Trans ***) emalloc(%d*sizeof(Trans **)); if (II == 0) { _m = step_claim(trpt->o_pm, trpt->tau, tt, ot, t); if (_m) goto P999; else continue; } else #define rand pan_rand #if defined(HAS_CODE) && defined(VERBOSE) printf("Pr: %%d Tr: %%d\n", II, t->forw); switch (t->forw) { #ifndef PEG void set_claim(void) { Trans *T; extern Trans ***trans; extern Trans *settr(int, int, int, int, int, printf("Pr: %%d Tr: %%d\n", II, forw); switch (forw) { default: Uerror("bad forward move"); case 0: /* if without executable clauses */ continue; case 1: /* generic 'goto' or 'skip' */ IfNotBlocked case 2: /* generic 'else' */ if (o_pm&1) continue; if (trpt->o_pm&1) continue; if (II == 0) goto R999; switch (t->back) { default: Uerror("bad return move"); case 0: goto R999; /* nothing to undo */ struct { int tp; short *src; } src_all[] = { { %d, &src_ln%d[0] }, { 0, (short *) 0 } }; short *frm_st0; extern short *frm_st0; #undef rand } #define FORWARD_MOVES "pan_s.m" #define REVERSE_MOVES "pan_s.b" #define SEPARATE #define TRANSITIONS "pan_s.t" extern void ini_claim(int, int); #define FORWARD_MOVES "pan.m" #define REVERSE_MOVES "pan.b" #define TRANSITIONS "pan.t" no runable processvoid active_procs(void) { #define NTRANS %d long peg[NTRANS]; #define FORWARD_MOVES "pan_t.m" #define REVERSE_MOVES "pan_t.b" #define TRANSITIONS "pan_t.t" extern int Maxbody; #if VECTORSZ>32000 extern int proc_offset[]; extern short proc_offset[]; extern uchar proc_skip[]; extern uchar *reached[]; extern uchar *accpstate[]; extern uchar *progstate[]; extern uchar *stopstate[]; extern uchar *visstate[]; extern short *mapstate[]; void ini_claim(int n, int h) { extern State now; extern void set_claim(void); #ifdef PROV #include PROV set_claim(); switch (n) { } } int step_claim(int o_pm, int tau, int tt, int ot, Trans *t) { int forw = t->forw; int _m = 0; extern char *noptr; int II=0; #define continue return 0 #include "pan_t.m" P999: return _m; } #undef continue int rev_claim(int backw) { return 0; } #include TRANSITIONS || %s(((P%d *)this)->now.%s[%d]) case %d: if ( (t->ty[i] == && ((%s%s)) || ) return 0; break; #define LOCAL 1 #define Q_FULL_F 2 #define Q_EMPT_F 3 #define Q_EMPT_T 4 #define Q_FULL_T 5 #define TIMEOUT_F 6 #define GLOBAL 7 #define BAD 8 #define ALPHA_F 9 int q_cond(short II, Trans *t) { int i = 0; for (i = 0; i < 6; i++) (!(trpt->tau&1))1 { if (t->ty[i] == TIMEOUT_F) return %s; if (t->ty[i] == ALPHA_F) #ifdef GLOB_ALPHA return 0; #else return (II+1 == (short) now._nr_pr && II+1 < MAXPROC); switch (t->qu[i]) { case 0: break; default: Uerror("unknown qid - q_cond"); return 0; } return 1; extern uchar reached%d[]; #define nstates%d %d /* %s */ extern short src_ln%d[]; extern S_F_MAP src_file%d[]; #define endstate%d %d #define src_claim src_ln%d #define nstates_claim nstates%d #define nstates_event nstates%d /* PROC %s */ /* proctype %d: %s */ trans[%d] = (Trans **) emalloc(%d*sizeof(Trans *)); #define in_s_scope(x_y3_) 0 #define in_r_scope(x_y3_) 0 no namebad channel name '%s' trans[%d][%d]->escp[%d] = %d; reached%d[%d] = 1; /* escape #%d: %d */ /* end-escapes */ case %d: /* STATE %d - line %d %s - [] */ #if defined(C_States) && (HAS_TRACK==1) c_update((uchar *) &(now.c_state[0])); _m = %d+delta_m; delta_m = 0; goto P999; /* STATE %d */ sv_restor(); goto R999; tr_2_src(%d, %s, %d); /*->*/ trans[%d][%d] = settr(%d,%d,%d,%d,%d,"", %d, %d, %d); T = trans[ %d][%d] = settr(%d,%d,0,0,0,"", %d, %d, %d); /* %s:%d */ T->nxt = settr(%d,%d,%d,0,0,"%d, %d); bad hop %s:%d -- at %d, <> looking for %d -- merge %d:%d:%d (trpt+1)->bup.ovals = grab_ints(%d); ; if (trpt->o_pm&1) uerror("non-determinism in D_proctype"); /* dead %d: %s */ #ifdef HAS_CODE if (!readtrail) #endif = 0(trpt+1)->bup.ovals[%d] = (trpt+1)->bup.oval = ; #ifdef HAS_CODE ; case %d: /* STATE %d */ cannot happen, dobackward; /* %d */ = trpt->bup.ovals[%d]%s%dmodifier overflow error trans[%d][%d] = settr(0,0,0,0,0,"",0,0,0); ] (%d:%d - %d) same as %d (%d:%d - %d) */ case %d: /* STATE %d - line %d %s - [] (%d:%d:%d - %d) */ merge requires more than 256 bupsIfNotBlocked cannot happen, case_cache #if defined(VERI) && !defined(NP) { static int reported%d = 0; if (verbose && !reported%d) { printf("depth %%d: Claim reached state %%d (line %%d)\n", depth, frm_st0[t->forw], src_claim[%d]); reported%d = 1; fflush(stdout); } } #endif reached[%d][%d] = 1; /* stop at bad hop %d, %d */ /* merge: (%d, %d, %d) */ _m = %d; goto P999; /* %d */ /* STATE %d */; ungrab_ints(trpt->bup.ovals, %d); goto R999; /* c */ %ssettr(%d,%d,%d,%d,%d,"settr(%d,%d,%d,%d,0," /* m: %d -> %d,%d */ reached%d[%d] = 1;-error: (%s:%d) saw 'unless' on a guard: =====>instead of do (or if) :: ... :: stmnt1 unless stmnt2 od (of fi) =====>use :: stmnt1 od (or fi) unless stmnt2 =====>or rewrite T = trans[%d][%d] = #if 0 /* dead link: */ spin: line %3d %s, Warning: condition is always false T = T->nxt = T->nxt = cycle of goto jumps /* mark-down line %d */ _pid_continue%s%s%sUerror("block in step seq")%s0%d !( -( ~((/*+%%&^|<><=>=!===||&&<<>>((tau)&1)((trpt->tau)&1)spin: line %3d, warning: 'timeout' in d_step sequence claim %s, (not runnable)eventmap %s, (not runnable)'run' in d_step sequence (use atomic)addproc(%d, %d parameters used, max %d expected too many parameters in run %s(...), 0enabled(II, (!(o_pm&4) && !(tau&128))(!(trpt->o_pm&4) && !(trpt->tau&128))((P0 *) Pptr(+BASE))->_p #ifndef XUSAFE ]&1) || (!(q_claim[q_R_check(, II)) && ]&2) || , II)) &&q_S_check( #endif q_len(q_full()==0)(q_len())(!q_full()>0)if ((ot == EVENT_TRACE && _tp != 's') || _qid+1 != \ || qrecv()-1, %d, 0) != ) continue || (x_y3_ == !q_full(]&2) if (q_claim[, II);lenfullif (q_%s)) { nlost++; delta_m = 1; } else { if (TstOnly) return 1; if (no_recvs(II)) continue; if (readtrail && gui) { char simtmp[32]; ); sprintf(simvals, "%%d!", sprintf(simtmp, "%%d", ); strcat(simvals, simtmp); strcat(simvals, ","); qsend(, %dchannel name: %d msg parameters sent, %d expected too many pars in send)) if (q_zero({ boq = ; Uerror("rv-attempt in d_step"); }; } if ((ot == EVENT_TRACE && _tp != 'r') 0, %d, 0) != (((boq == -1 && && ) || (boq == q_zero( && ( == qrecv(0, %d, 0)) && Q_has(, 1, , 0, 0]&1) if ( { uerror("polling rv chan"); continue; } ) boq != { if (boq != ; } else { if (boq != -1) } ) == 0) if (q_len(; XX=1 != 0, %d, 0)) ; if (!(XX = Q_has())) XX; if (TstOnly) return 1if (q_flds[((Q0 *)qptr(-1))->_t] != %d) Uerror("wrong nr of msg fields in rcv"); , XX-1, %d, 0); cannot use var ('%s') in multiple msg fields = XX-1, %d, %d); #ifdef VAR_RANGES logval("", ); #endif sprintf(simvals, "%%d?", { boq = -1; #ifndef NOFAIR if (fairness && !(trpt->o_pm&32) && (now._a_t&2) && now._cnt[now._a_t&1] == II+2) { now._cnt[now._a_t&1] -= 1; #ifdef VERI if (II == 1) now._cnt[now._a_t&1] = 1; #ifdef DEBUG printf("%%3d: proc %%d fairness ", depth, II); printf("Rule 2: --cnt to %%d (%%d)\n", now._cnt[now._a_t&1], now._a_t); trpt->o_pm |= (32|64); } }) && \ not_RV() > 0 \ && qrecv(0, %d, 0) == Q_has(if (!()) if (o_pm&1) if (trpt->o_pm&1) /* else */( () ? ) : ) )if (TstOnly) return 1; Printf(%sprintm(((int)/* %s */ sv_save(); #if defined(C_States) && (HAS_TRACK==1) assert("", II, tt, t)Uerror("cannot get here")return 0if (TstOnly) return (II+1 == now._nr_pr); if (!delproc(1, II)) spin: bad node type %d (.m) - line %d no name - putname%s%s%s.undeclared variable '%s'proctype-name '%s' used as array-name_pattempt to read value of '_'%s:ref to array element invalid in this context hint: instead of, e.g., x[rs] qu[3], use chan nm_3 = qu[3]; x[rs] nm_3; and use nm_3 in sends/recvs instead of qu[3] [%%d][][ Index(%d) ].%s((P%d *)Pptr(BASE+f_pid(%d)))->%smore than one run operator in expressionuse of run operator in compound expressionrun operator used in invalid contextv@T⍀TPb@]@?⍀?PI@D@*⍀*P0@+@⍀P@@⍀P??⍀P??⍀P??⍀P??⍀P??⍀P?|?⍀Ph?c?m⍀mPO?J?X⍀XP6?1?C⍀CP??.⍀.P?>⍀P>>⍀P>>⍀P>>⍀P>>⍀P>>⍀Pn>i>⍀PU>P>⍀P<>7>q⍀qP#>>\⍀\P >>G⍀GP==2⍀2P==⍀P==⍀P==⍀P==⍀Pt=o=⍀P[=V=⍀PB===⍀P)=$=⍀P= =u⍀uP<<`⍀`P<⍀>PT:O:)⍀)P;:6:⍀P":Ŀݿ(AZs ";Tm5Ng/Haz)B[t #<Un$Ë $Ë$Ö`LLy LsT$LN LHM 4, "$  Ľ$ M Z$0I 0,M ! ((ջƻ(ʾ((xYJ(8)((պƺ((q(_P(12($M  4ҹ44~Q4x\M4E640424N4}Q4rN4fN4[L4@N4:2`4,$ 44444ҷ4N44 4nP4h`i4LL4@14 44<4ֶŶ4f4N4t24n\T@41)"4 4صɵ44um4O 4?40M  4ooشɴoôooo~:osd{oX\oR<oG<-ao!\o<o0o2oSoɳQo0o2oQom^IoXIo=:o2#oo ooӲoͲoo}oq:ok\oE6 o0 Jo;oֱDZo2owo_oTEo- o"0o oʰ;o޻o}nob:oWH o7 QoԻoԯůo:o|ooLoz^Oo:0o42o.Po(Lo0o2oPoҮo̮ooxLorc͸oX0oR10o+{oQoԭ{oέ@o6oy@osi@oXoNLoH9o-:o"o ߬Jo٬ʬoĬJotonRCo/ oooګwoͫ`ooopoo`ioZ@1 o#oo٪oѪorco5&bo o oש~ToqboGQoA2EooȨ?o\M7o2-o%,oo ooڧ˧\ooosozkhoeV\o;So5&@oDoo2oۦ(oզƦo"ooorol]oWH`oB3@o-o ooߥo٥ʥoĥouo]ovLopa<o[L,oF7 oƳo ,o>ooפLoook\roTEo?#roLoܣͣoQo<o!osom^{oD5|o/ oLooТ0oʢ2oĢPoLo0o2o}PowhobSo# oաܸoѸo}obQo\M͸oB0o8Lo2Lo0o o {oOGo  odLo^O{oI-LonooɞoÞ oqQof@o`Q6oB@o<2@o@o'oxioNoH9o${oo{oΜo:ooQo~@oxi6oZ@oTJ@oD5{o/ o ooݛo›o}ohL=oooߚКͷooovo[QoUFo@!!o {oҙo̙ooQoqokO@!o:+{oӘo{oufoKoE6o)(o#{ooyo՗o]ohoڶouƳoj[`o@]o3(o-!ooKo(oܖ͖=oǖ,o&oڶosƳom^!oQ(o3,o-o hoooٕboo@oDo oyj o\Mo<o!o ܔoǔon_oDo>/o ooǓQoo~obSoF7oQoo֒ow oqbڶoGƳoA2̶oǶo,ooё oˑo,ooo~t(ojDoO oI:8o4%5o oo{Qoufo&ooo׏\oя<oƏeoDoao|@oooiZ,o?o9* oo(o{o܎,o֎ǎ oòoooozro]oS2oM@o6еoo2ooˍQo˵opoUoO@>o:+o!Lo o݌o׌roLouUoZQoTE<o?0!o*ooo(oߋ,oًʋǴo:o̮oôo}opDoj[Jo@o:+ozovo(o,ooۊ̊ooobo\o{l@o\DoQBSo' o `oDooމ,oԉDo o8o5ouT+*oo$o߈ЈoQoo`Qo6o0!o\o <ooևӳoЇohoo|\oaSo[L@o<Do+o2oɳoƳoцoˆoo\oqok\@oLDo;o+2o oooۅ̅oo\oo{lsofWho<o6'\o So@oDoքoƄ2oo o|ovgoLoF7\oosoho׃oуƒ\oSo@oDoqoa2oVGo, o&ooo҂\oosohorol]\oBSo<-@oDo o2o4o܁&oo}Բop`oeV oP4%Dzo oòo݀oր΀o`ooogK<QoFo ooo4o4o4oױoqXogOXoBXo7/o!oo ~o~~wo~`o~~ o~~~to~j~[~JoP~A~ o;~~~qo ~}}Jo}} o}}}no}r}c}JoX}I} oC}'}}ko}||Jo|| o|||ho|z|k|Jo`|Q| oK|/| |eo|{{Jo{{ o{{{bo{{s{Joh{Y{ oS{7{({_o"{{zJozz ozzz]ozz{zJopzaz o[z?z0z[o*zzyJoyy oyyyYoyyyJoxyiy ocyGy8yWo2yyyJoxx oxxxUoxxxJoxqx okxOx@xRo:xxxJoxw owwwPowwwJowyw oswWwHwtoBw&wwJo wv ovvvNovvvJovv o{v_vPvLoJv.vvJovv ouuuFouu ouuuBo~uou oiuMu>u>o3u$u;ouuou޴o u޴ouY~ou}ouzotq{otyotyzot{oti|ota}ot|ot޴ot޴ot޴ot޴ot+ot޴ot޴ot޴ot޴ot޴ot޴ot޴otot޴ot޴otuotot)otĄot_ot޴ot޴ot޴ot޴ot޴o|t޴oxt޴ott޴optnolt~oht޴odt޴o`t޴o\t޴oXt޴oTt޴oPt޴oLt޴oHt޴oDt޴o@tom,gkm,gkem,gk9o,gk9o,gk9o,gk9o,gk9o,gk9o,gk9o,gk9o,gk|n,gk|n,gk9o,gk4l,g|k4l,gxk4l,gtk9o,gpk9o,glk9o,ghk9o,gdk9o,g`k9o,g\kXl,gXkLl,gTkLl,gPk9o,gLk9o,gHk9o,gDk9o,g@k9o,ge6eeddddְ|dd|dxdM Bd$dccbbgbbaa0]a]aa0]a]a<]aua0]ka]ea[a0]Qa]a`0]``0]`ة]``0]`ǰ]``0]|`]d`\`]@`]`]`_0]_R]__{_U_K_0]A_]_<]_ _0]_]^^0]^]^^0]^{^0]q^]S^I^0]?^<]3^<]^]]M ]]*\z]r]\l]d]\^]V]ȯ\P]H]\B]:]\4],]\&]]ѯ\]]ȯ\ ]]\\\\\\\\t\\M [[[0W['W[<W[[0W[W[[0Wx[`Wl[<W_[U[0WK[IW[Z0WZWZ WZ WZZZ0WZWZZ0W|ZoWoZeZ0W:ZZYYY0WY3WY|Y0WrYWfY<WOY?YwXBX)XXWM WW0LWLWLWL!WW<LVV8LVLVLVLVV8LVLVLVLVxV8LnVήLhV^V8LTV̮LLVBV8L8V̮L-VL'VV8LVLVU8LULULUU8LU{LUUrULfUL`UVU4LLUL@UL:U0U4L&UԨLUDLUT4LTLTTT4LTTLTyT4LoTHLcT<LSTIT4L?TLTT4LSS4LSLSS4LS`LzSGSRR4LRR4LRHLR<LRR4LR>LRR4LR9L~RtR4LjR$LdRZR4LPRL@R6R4L,RLRR4LRLRQ4LQLQQ4LQ`LQQ4LQ LQXLQ<L~QLxQLrQjQLNQ@LAQL5Q@L)Q!QL QLQLPP4LPLP\LP<LPXLP<LPPLPP4LPLJP:PPP4LOO4LOLO`LOO4LO@L@O6O4LOO4L O+LNN<LN\LN<LNXLN<LnNLhN^N0LTNLHN<LNN0LNLM<LMM0LMLMM0LMM0LM LMM0L}MLqM<L)M<LL`LLM LLKLKLKLmLKgLVLݫKALK9L.LLLKKKKM KKJ>w=f=-5Y=-5S=I=0-5?=-5=<-5==0-5<-5<<0-5<-5<-5<-5<<<0-5<-5l<<-5f<\<0-5R<-5L<B<0-58<-5< <0-5<o-5;;0-5;;0-5;ة-5v;l;0-5b;ͩ-5\;R;0-5H;-5!;<-5;;0-5;-5;:0-5:-5::0-5|:r:0-5h:-55:+:0-5!:-5:<-5:990-59w-59-59-5990-59o-5990-5r9h90-5^9X-549`-5%9`-5990-5 9@-58<-5880-58'-58`-58<-58f8\88-5R8-5L8B88-588 -528(88-58-5888-57 -57`-5774-57-5774-57Ԩ-57D-5774-57ʨ-5y7j7`74-5V7-5P7F74-5<7-567,74-5"7`-57 74-56,-5666,-5~6t64-5j6H-5d6Z64-5C6964-5/6+-5654-55 -55`-5555e5X5H5)5M 5 5035 344403434V4L403B4364<3)440343 4<333M v3k32e3 2Y32Q3G32A3 2632+323 23 232222222 22 22M z211<11<1u181M 1/1 100/0//M /p//p//p///p/~/p/r/p/l/M 6// / ./. ...M .a..a..a.r.a.].M I.2.<*,.".(*.*..,*-*-\*-<*---(*-}*--,*-`*-\*-<*-x-0*n-@*[-Q-0*G- *;-<*5-+-0*!-*-<*-,8*,*,,4*,*,,,*,8*,<*,z,,*p,*d,<*X,\*R,<*L,B,,*8,*,,<* ,X*,<*, ,,*,*+<*+*++,*+*+<*+`*+X*{+<*p+f+,*\+O*P+X*J+@+,*6+8**+<***,****<***,****<***,****<*o*e*,*[**O*<*>*`*.*X*(*<*** *<**M ))(%)%))(%)%))(%)%))(%)%){)(%q)%k)a)(%W)`%C).))%))%((%(w(A($%;(1((%'(H%!(((% (1%('(%'%''(%'%''(%'%''(%'٤%''(%'Ƥ%'{'(%q'%k'a'(%W'%A'`%3'O%&'L% ''(% '5%'&(%&'%&&(%& %&&(%&%&&,%&%&&,%&%&z&,%p&ң%j&`&,%V&%P&F&,%<&%6&,&,%"&%&&,%&%&%,%%m%%%,%%\%%M %%(#%H#%%(#y%D#q%g%(#]%@#Q%G%(#=%8#/%%#$$ #x$F#r$h$(#^$,#X$E$;$(#1$#$$(#$ ##M ##($"#H$"##($"#D$"##($"#@$"#y#($"o#8$"^#T#($"J# $"D#:#($"0#$"##($" #2$""""($""ޢ$"""($"",$"""u"($"k"$"S"I"($"?" $" "M ""(!!!!!!!(!!!! !!F!!!(!!!w!!`!V!(!L!!4(*$( (|((m(`(@~t(jdZ(PJ@(60&(ɠ (((u([(@(zp(f#`V(LF<(2,"((ߟ,,,@,(y(h,bX,NH>,4.$, , `(((t0nd(ZTJ(@:2ܞ0 ,,,,@,{ uk,a[Q,GA7,-`0@`844w~0tUni]`WM,G=,3_+!,N,J,5,d,y si,_YO,E4`# d888Y8?``x4nh^4T ND4:ɛ2(4` 444ɛ`44|r4h`bX4N H>44 .$4 444000~xn0d`^T0JD:00* 0A 4,44444uoe4[`UK4A ;14'` 080˜000@w0mg]0SMC09,<&0 0000Y0U0vApf0\*VL0B<20(ߖ"0˖00`TTqdkf\(RLB(82(((`(H( (``(w(mg](SMC(91'(v (d`(((Ht\nd(Z-PJ@,6!0&, ,є  ,  4  ,  \  ,  \ \z n 4] 4W M ,C = 3 ,) f X  ,  X  , @ X  X X  ,   ,| v l ,b T 8N D ,: . >(  ,   ,  <  ,  > >  ,   , { v ,l i^ 6R 8F <: :4 * , Q 8 8  , 9 < <  ,  H H  , z Fn Fh ^ ,T H :B 8 ,. ߒ @  , ͒  ,  B B  ,  D  ,  @y @s i ,_ R 6F 6@ 6 ,, z T T  ,fH,ULL,DPPzp,f`V,L`F<,2K,",ۑ, ,,,ۑ,,|vl,b\R,H5+,!66,,`,K T|`vH=X4%X`,,,,,j}s,i[cY,OI?,5/%,K ,;,,+,, ,r`lb,XH\B8,.$ @8`54`50{`uk5Z,RB`<25!( `5M 000`0Gzp0f `V0LF<02,"00M 44z4_4Q{q4g _U4K>`8.4$Č, `,`M (M c[ 3d M  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($ |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($                                  | x t p l h d ` \ X T P L H D @ < 8 4 0 , ( $                                  | x t p l h d ` \ X T P L H D @ < 8 4 0 , ( $                                          | x t p l h d ` \ X T P L H D @ < 8 4 0 , ( $                                          | x t p l h d ` \ X T P L H D @ < 8 4 0 , ( $                                          | x t p l h d ` \ X T P L H D @ < 8 4 0 , ( $          |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@<840,($  |xtplhd`\XTPLHD@$  U OGAL < 6.(L # L  L  ffL  MML  44L  L  yL t nf`L [ UMGL B <4.L ) #L  L  llL  SSL  ::L  !!L  L z tlfL a [SML H B:4L / )!L  L  ~r~rL  zYzYL  v@v@L  r'r'L  nnL  zjrjlL g afYfSL N Hb@b:L 5 /^'^!L  ZZL  VxVxL  R_R_L  NFNFL  J-J-L  FFL  BxBrL m g>_>YL T N:F:@L ; 56-6'L " 22L  .~.~L  *e*eL  &L&LL  "3"3L  L  ~xL s me_L Z TLFL A ;3-L ( "  L  L kkL RRL 99L   L ~L y skeL ` ZտRտLL G A93L . ( L  L |xtplhd`\XTPLHD@<840,($  bj}[ikEl?B> =bj}[ikEl?B> =y~{xzwvut| `@!&`,7>xM[ipy  #%)T.. d//01123  5= >+?5\?>?L@WAaBiCq(EEHJKLW  \]#b1c;pdHOeYfdLom,x$ $1",<< h p lL@'!ADXN\.8J;:] g$6U>H<HiB]@}FuDTI@4 0s(|ioU\e 8(2,40P' ?Y*?QGyPz kTwaAKd.(Hq4u5 dm6_OkBreak_nocast_terse_no_arrays_has_last_has_badelse_has_enabled_has_pcvalue_has_np_has_sorted_has_random_has_xu_has_unless_has_provided_has_code__isok_evalindex_withprocname_mst_claimnr_eventmapnr___i686.get_pc_thunk.bx_tc_th_tm_tt_gensrc_tb___i686.get_pc_thunk.cx_bb_or_dd_Done_case_Pid_casing_multi_oval_target_has_global_putstmnt_putname_putremote_has_typ_count_runs_any_runs___i686.get_pc_thunk.axdyld_stub_binding_helper___sF_Mpars_rvopt_TestOnly_Npars_Level_NextLab_IsGuard_GenCode_runsafe_Fname_lineno_verbose_ccache_context_deadvar_all_names_u_async_u_sync_run_eventmap_nrRdy_merger_has_stack_m_loss_has_remvar_Etimeouts_Ntimeouts_has_remote_claimproc_oFname_separate_rdy_non_fatal_lookup_findloc_fflush_plunk_inline_plunk_expr_remotelab_Sym_typ_preruse_check_param_count_glob_inline_putsrc_cross_dsteps_memset_set_lab_strlen_has_lab_undostmnt_any_undo_get_lab_putcode_comment_huntstart_putskip_huntele_dumpsrc_walk2_struct_sprintf_strcpy_c_chandump_c_wrapper_spit_recvs_gensvmap_genunio_genaddqueue_genother_genaddproc_genheader_gencodetable_c_preview_plunk_c_fcts_plunk_c_decls_ntimes_ready_emalloc_alldone_printf_fopen_fprintf_fatal_strcmp_Nvr1_Pre0_Preamble_Tail_Dfa_Xpt_uniq_AllGlobal_fproc_reverse_procs_tm_predef_np_tt_predef_np_Cfile_find_id_dolen_BB_DD_Docase_genconditionals_putproc_Det_addTpe_T_sum_TPE_cnt_seq_EPT_typ_seq_hidden_Nn_T_mus_getNid_valTpe_Tpe_put_escp_put_sub_identical_samedeads_findnext_advance_equiv_merges_prev_case_new_case_nr_bup_nrhops_check_needed_multi_needed_multi_undo_doforward_XZ_YZ_YZmax_CnT_YZcnt_dobackward_didcase_lastfirst_lab_transfer_modifier_case_cache_put_el_nested_unless_put_seq_patch_atomic_mark_seq_find_target_t_cyc_scan_seq_glob_args_Bailout_getweight_do_count_runcount_opcount