~Eerrcl-;>cA-;>hA-;>aA-;>nA-;>nA-;>eA-;>lA-;> A-;>wA-; >aA-; >sA-; > A-; >cA-; >lA-;>oA-;>sA-;>eA-;>dA~>_chanfree> A~@cp@ pT&AXchanlockp>DpSLDP=mcslock=p@pS>p>DpSLDP=mcsunlock=LpN= chaninit = A~@ elemcntp @ ~@ elemsizep @ p@ & AU8<& AQ9 .string-; > chaninitpApSp> DpSp SL.r= _threaddebug =pAL=chancreate=Ap @ p @ & AUU<& ASU %pchan-; > create %pApSp> DpS~?cp ?p S =p?~>isopenfor>A~@cp@ pQ & AOy<~@op&@AXxDpS=p? ~@altsp@ p TQpAPQ~?npA?~?apA?p@ WDp S =p ?p SLW=_procsplx =p ?p APOp A p? p S~? xap  ?pR p S>p ? &AO!canexec!>p ? &AXDpS=p?pS=p ? p?pAPOpR&AXp( ? &(AO(&enqueue*&>p* ? W*DO+ D p3  Op4>Dp4S4=p5?p5S5=p6?p6APOp7#? 7@ p7*A=7 p7 7A7A 7 p7 7W75<&8%?AO85Dp:S:=p;?p;S;=p<?p<APOp=A=WH6DpISI=pJ?pJSJ=aK? pK SpKASL%ы='_threadrendezvousK'=~?(rpK(?L=pL?pM>DpMSM=&O(?AXOL<&P?AOPKD p^  Qp`  ?p` S~>)dequeue`)>p` ? W`ODpbSb=pc?pcSc=&d?AXdw<&e?AXer pc==(Ch-e; > annel*)~pe> DpeSL?;=*_asserte*=pfAfWf}+altexeci+>L)L=,_schedj,=pk?pkAPOpl? l@ pl*A=l pl lAlA l pl llLV5=-chanclosep-=Au=pu?pv>DpvSv=~@.cpv.@ pwR&wAOwDpySy=pz?pzSz=p{A{p}ARpA WDpS=p?pS=WDpS=p/? p.@ Wp>DpS=p?pS=pALV5=0chanclosing0= A=p?p>DpS=p.@ pP&AXDpS=p?pS=p?~>1runop1>@Ap@p?p.@p?~@vp@p?pA?pA?~@nb& @AO * DpS*=pA&?AO 0nbERR-;0 > OR: chan-;8 > nel alt -;@ > returnedpApSp>- DpSp SLJ=fprint=L)L=abort=pAa? p S=p &AO<&AO<&AOLD+f=nbrecv=ApA p Sp.@ p Sp@ p SpA p  S1>LD+f=send=ApA p Sp.@ p Sp@ p SpA S1>LD+f=nbsend=ApA p Sp.@ p Sp@ p SpA p  S1>~> channelsize >Ap.@ ~@ szp @ p Q& Oq<-;H > %d exp-;P > ected ch-;X > annel wi-;` > th eleme-;h > nts of s-;p > ize %d, -;x > got sizepApSp>M DpSp Sp Qp S==LMV== sendul =Ap.@pSpApS >p.@ p Sa@ p S=L((+= recvul = Ap .@p Sp Ap S  >p .@ p  S~? va  ? p  S =& AP p.@ p S~@va@ p S=LoD=recvp= Ap.@pSpApS >p.@ p S~?va? p S=&APp'.@ p' S~@va'@ p' S'=''L((+=nbrecvul+= Ap/.@p/Sp/Ap/S/ >p0.@ p0 S~?va0? p0 S0=&0AX0p9.@ p9 S~@va9@ p9 S9=99LoD=nbrecvp== ApA.@pASpAApASA >pB.@ pB S~?vaB? pB SB=&BAXBemptyentryH>ApH.@ pLR&LAXL.string-L;> %d (c--L;> >nentry=-L;> =0 && c--L;> >qentry=-L;> =nil) ||-L;> (c->nen-L;> try && c-L;> ->qentrypL>DpLSL*=pL.@ pNA WN  )reallo-V;> c channe-V;> l entriepV>DpVSLP=sysfatalV=pV.@ pWQpW/? aW OpWSpWASpW?WApWSLX=memsetW=pX/?XX\&>A~@ ap\ @ -`;> s: %rQu-`;> euing al-`;> t %p on -`;> channel p`Ap`Sp`>Dp`Sp` Sp`Pp` S~=!_threaddebug`!=p` @ pa.@ pa QpbQ pb Sb>pb @ pb pcRpcOac Opc Ocg)>Apg @ plTpmA WmR %pDeque-o;> uing alt-o;> %p from-o;> channelpoApoSpo>DpoSpo SpoTpo So!=po"? ppRpp/? ap OppAOprR&rAOro#_chanfrees#>tWtO<t~>$canexecy$>Apy @p~V pVpApA W %pcan -; > rendez a-;(> lt %p chpApSp>DpSpSp  S!=pAW} an %pca-;8> n buffer-;@> alt %p -;H> chan %ppApSp>6DpSpSp  S!=pApA~>%altexecbuffered%> Ap @ pR pR&AX buffer r-;X> ecv alt -;`> %p chan pApSp>PDpSp Sp "?p  S!=p"?~?&.safep&?pUpA pU p &?2&?p p U p &?|&?p p&?a U  Ap ~@'willreplace&'@AX %pbuffe-;p> r send a-;x> lt %p chpApSp>kDpSp Sp "?p  S!=p"?p&?pUpU  pA pU p &?2&?p p U p &?|&?p p&?a U  Ap &'@AX (altcopy(> A~@)srcp)@ p @ ~@*dstp*@ & AO!<& AO,altexec,>8Ap @pV pVpA  ~?-otheropp -?pA~?.bpA.?pV~?/mep/?pA W2 an %pre-;> ndez %s -;> alt %p c-;> han %p a-;> lt %pre-;> cvsendpApSp>DpSpV & AXeDWfDpSp Sp Sp.?pS!=p @ p/? p"? p.?pO ~?waiterp ?pP&AOxp p/?pS~?bufp ?p Sp"?p OpS(>p?pSp?pSp"?p OpS(>WWp.?pOp"? p O-;> unlockin-;> g the chpApSp>DpS!=~>chanlockp>DpS~=mcsunlock=~@splp@pS~=_procsplx=-;> anlockc-;> hanlock -;> is %ludpApSp>DpSp>pS!=Wp"? p/? p p @pO&AXWp>DpS=p@pS=pA~> errcl5 >A5>A5>AI