PNG  IHDRQgAMA a cHRMz&u0`:pQ<bKGDgmIDATxwUﹻ& ^CX(J I@ "% (** BX +*i"]j(IH{~R)[~>h{}gy)I$Ij .I$I$ʊy@}x.: $I$Ii}VZPC)I$IF ^0ʐJ$I$Q^}{"r=OzI$gRZeC.IOvH eKX $IMpxsk.쒷/&r[޳<v| .I~)@$updYRa$I |M.e JaֶpSYR6j>h%IRز if&uJ)M$I vLi=H;7UJ,],X$I1AҒJ$ XY XzI@GNҥRT)E@;]K*Mw;#5_wOn~\ DC&$(A5 RRFkvIR}l!RytRl;~^ǷJj اy뷦BZJr&ӥ8Pjw~vnv X^(I;4R=P[3]J,]ȏ~:3?[ a&e)`e*P[4]T=Cq6R[ ~ޤrXR Հg(t_HZ-Hg M$ãmL5R uk*`%C-E6/%[t X.{8P9Z.vkXŐKjgKZHg(aK9ڦmKjѺm_ \#$5,)-  61eJ,5m| r'= &ڡd%-]J on Xm|{ RҞe $eڧY XYrԮ-a7RK6h>n$5AVڴi*ֆK)mѦtmr1p| q:흺,)Oi*ֺK)ܬ֦K-5r3>0ԔHjJئEZj,%re~/z%jVMڸmrt)3]J,T K֦OvԒgii*bKiNO~%PW0=dii2tJ9Jݕ{7"I P9JKTbu,%r"6RKU}Ij2HKZXJ,妝 XYrP ެ24c%i^IK|.H,%rb:XRl1X4Pe/`x&P8Pj28Mzsx2r\zRPz4J}yP[g=L) .Q[6RjWgp FIH*-`IMRaK9TXcq*I y[jE>cw%gLRԕiFCj-ďa`#e~I j,%r,)?[gp FI˨mnWX#>mʔ XA DZf9,nKҲzIZXJ,L#kiPz4JZF,I,`61%2s $,VOϚ2/UFJfy7K> X+6 STXIeJILzMfKm LRaK9%|4p9LwJI!`NsiazĔ)%- XMq>pk$-$Q2x#N ؎-QR}ᶦHZډ)J,l#i@yn3LN`;nڔ XuX5pF)m|^0(>BHF9(cզEerJI rg7 4I@z0\JIi䵙RR0s;$s6eJ,`n 䂦0a)S)A 1eJ,堌#635RIgpNHuTH_SԕqVe ` &S)>p;S$魁eKIuX`I4춒o}`m$1":PI<[v9^\pTJjriRŭ P{#{R2,`)e-`mgj~1ϣLKam7&U\j/3mJ,`F;M'䱀 .KR#)yhTq;pcK9(q!w?uRR,n.yw*UXj#\]ɱ(qv2=RqfB#iJmmL<]Y͙#$5 uTU7ӦXR+q,`I}qL'`6Kͷ6r,]0S$- [RKR3oiRE|nӦXR.(i:LDLTJjY%o:)6rxzҒqTJjh㞦I.$YR.ʼnGZ\ֿf:%55 I˼!6dKxm4E"mG_ s? .e*?LRfK9%q#uh$)i3ULRfK9yxm܌bj84$i1U^@Wbm4uJ,ҪA>_Ij?1v32[gLRD96oTaR׿N7%L2 NT,`)7&ƝL*꽙yp_$M2#AS,`)7$rkTA29_Iye"|/0t)$n XT2`YJ;6Jx".e<`$) PI$5V4]29SRI>~=@j]lp2`K9Jaai^" Ԋ29ORI%:XV5]JmN9]H;1UC39NI%Xe78t)a;Oi Ҙ>Xt"~G>_mn:%|~ޅ_+]$o)@ǀ{hgN;IK6G&rp)T2i୦KJuv*T=TOSV>(~D>dm,I*Ɛ:R#ۙNI%D>G.n$o;+#RR!.eU˽TRI28t)1LWϚ>IJa3oFbu&:tJ*(F7y0ZR ^p'Ii L24x| XRI%ۄ>S1]Jy[zL$adB7.eh4%%누>WETf+3IR:I3Xה)3אOۦSRO'ٺ)S}"qOr[B7ϙ.edG)^ETR"RtRݜh0}LFVӦDB^k_JDj\=LS(Iv─aTeZ%eUAM-0;~˃@i|l @S4y72>sX-vA}ϛBI!ݎߨWl*)3{'Y|iSlEڻ(5KtSI$Uv02,~ԩ~x;P4ցCrO%tyn425:KMlD ^4JRxSهF_}شJTS6uj+ﷸk$eZO%G*^V2u3EMj3k%)okI]dT)URKDS 7~m@TJR~荪fT"֛L \sM -0T KfJz+nإKr L&j()[E&I ߴ>e FW_kJR|!O:5/2跌3T-'|zX ryp0JS ~^F>-2< `*%ZFP)bSn"L :)+pʷf(pO3TMW$~>@~ū:TAIsV1}S2<%ޟM?@iT ,Eūoz%i~g|`wS(]oȤ8)$ ntu`өe`6yPl IzMI{ʣzʨ )IZ2= ld:5+請M$-ї;U>_gsY$ÁN5WzWfIZ)-yuXIfp~S*IZdt;t>KūKR|$#LcԀ+2\;kJ`]YǔM1B)UbG"IRߊ<xܾӔJ0Z='Y嵤 Leveg)$znV-º^3Ւof#0Tfk^Zs[*I꯳3{)ˬW4Ւ4 OdpbZRS|*I 55#"&-IvT&/윚Ye:i$ 9{LkuRe[I~_\ؠ%>GL$iY8 9ܕ"S`kS.IlC;Ҏ4x&>u_0JLr<J2(^$5L s=MgV ~,Iju> 7r2)^=G$1:3G< `J3~&IR% 6Tx/rIj3O< ʔ&#f_yXJiގNSz; Tx(i8%#4 ~AS+IjerIUrIj362v885+IjAhK__5X%nV%Iͳ-y|7XV2v4fzo_68"S/I-qbf; LkF)KSM$ Ms>K WNV}^`-큧32ŒVؙGdu,^^m%6~Nn&͓3ŒVZMsRpfEW%IwdǀLm[7W&bIRL@Q|)* i ImsIMmKmyV`i$G+R 0tV'!V)֏28vU7͒vHꦼtxꗞT ;S}7Mf+fIRHNZUkUx5SAJㄌ9MqμAIRi|j5)o*^'<$TwI1hEU^c_j?Е$%d`z cyf,XO IJnTgA UXRD }{H}^S,P5V2\Xx`pZ|Yk:$e ~ @nWL.j+ϝYb퇪bZ BVu)u/IJ_ 1[p.p60bC >|X91P:N\!5qUB}5a5ja `ubcVxYt1N0Zzl4]7­gKj]?4ϻ *[bg$)+À*x쳀ogO$~,5 زUS9 lq3+5mgw@np1sso Ӻ=|N6 /g(Wv7U;zωM=wk,0uTg_`_P`uz?2yI!b`kĸSo+Qx%!\οe|އԁKS-s6pu_(ֿ$i++T8=eY; צP+phxWQv*|p1. ά. XRkIQYP,drZ | B%wP|S5`~́@i޾ E;Չaw{o'Q?%iL{u D?N1BD!owPHReFZ* k_-~{E9b-~P`fE{AܶBJAFO wx6Rox5 K5=WwehS8 (JClJ~ p+Fi;ŗo+:bD#g(C"wA^ r.F8L;dzdIHUX݆ϞXg )IFqem%I4dj&ppT{'{HOx( Rk6^C٫O.)3:s(۳(Z?~ٻ89zmT"PLtw䥈5&b<8GZ-Y&K?e8,`I6e(֍xb83 `rzXj)F=l($Ij 2*(F?h(/9ik:I`m#p3MgLaKjc/U#n5S# m(^)=y=đx8ŬI[U]~SцA4p$-F i(R,7Cx;X=cI>{Km\ o(Tv2vx2qiiDJN,Ҏ!1f 5quBj1!8 rDFd(!WQl,gSkL1Bxg''՞^ǘ;pQ P(c_ IRujg(Wz bs#P­rz> k c&nB=q+ؔXn#r5)co*Ũ+G?7< |PQӣ'G`uOd>%Mctz# Ԫڞ&7CaQ~N'-P.W`Oedp03C!IZcIAMPUۀ5J<\u~+{9(FbbyAeBhOSܳ1 bÈT#ŠyDžs,`5}DC-`̞%r&ڙa87QWWp6e7 Rϫ/oY ꇅ Nܶըtc!LA T7V4Jsū I-0Pxz7QNF_iZgúWkG83 0eWr9 X]㾮݁#Jˢ C}0=3ݱtBi]_ &{{[/o[~ \q鯜00٩|cD3=4B_b RYb$óBRsf&lLX#M*C_L܄:gx)WΘsGSbuL rF$9';\4Ɍq'n[%p.Q`u hNb`eCQyQ|l_C>Lb꟟3hSb #xNxSs^ 88|Mz)}:](vbۢamŖ࿥ 0)Q7@0=?^k(*J}3ibkFn HjB׻NO z x}7p 0tfDX.lwgȔhԾŲ }6g E |LkLZteu+=q\Iv0쮑)QٵpH8/2?Σo>Jvppho~f>%bMM}\//":PTc(v9v!gոQ )UfVG+! 35{=x\2+ki,y$~A1iC6#)vC5^>+gǵ@1Hy٪7u;p psϰu/S <aʸGu'tD1ԝI<pg|6j'p:tպhX{o(7v],*}6a_ wXRk,O]Lܳ~Vo45rp"N5k;m{rZbΦ${#)`(Ŵg,;j%6j.pyYT?}-kBDc3qA`NWQū20/^AZW%NQ MI.X#P#,^Ebc&?XR tAV|Y.1!؅⨉ccww>ivl(JT~ u`ٵDm q)+Ri x/x8cyFO!/*!/&,7<.N,YDŽ&ܑQF1Bz)FPʛ?5d 6`kQձ λc؎%582Y&nD_$Je4>a?! ͨ|ȎWZSsv8 j(I&yj Jb5m?HWp=g}G3#|I,5v珿] H~R3@B[☉9Ox~oMy=J;xUVoj bUsl_35t-(ՃɼRB7U!qc+x4H_Qo֮$[GO<4`&č\GOc[.[*Af%mG/ ňM/r W/Nw~B1U3J?P&Y )`ѓZ1p]^l“W#)lWZilUQu`-m|xĐ,_ƪ|9i:_{*(3Gѧ}UoD+>m_?VPۅ15&}2|/pIOʵ> GZ9cmíتmnz)yߐbD >e}:) r|@R5qVSA10C%E_'^8cR7O;6[eKePGϦX7jb}OTGO^jn*媓7nGMC t,k31Rb (vyܴʭ!iTh8~ZYZp(qsRL ?b}cŨʊGO^!rPJO15MJ[c&~Z`"ѓޔH1C&^|Ш|rʼ,AwĴ?b5)tLU)F| &g٣O]oqSUjy(x<Ϳ3 .FSkoYg2 \_#wj{u'rQ>o;%n|F*O_L"e9umDds?.fuuQbIWz |4\0 sb;OvxOSs; G%T4gFRurj(֍ڑb uԖKDu1MK{1^ q; C=6\8FR艇!%\YÔU| 88m)֓NcLve C6z;o&X x59:q61Z(T7>C?gcļxѐ Z oo-08jہ x,`' ҔOcRlf~`jj".Nv+sM_]Zk g( UOPyεx%pUh2(@il0ݽQXxppx-NS( WO+轾 nFߢ3M<;z)FBZjciu/QoF 7R¥ ZFLF~#ȣߨ^<쩡ݛкvџ))ME>ώx4m#!-m!L;vv#~Y[đKmx9.[,UFS CVkZ +ߟrY٧IZd/ioi$%͝ب_ֶX3ܫhNU ZZgk=]=bbJS[wjU()*I =ώ:}-蹞lUj:1}MWm=̛ _ ¾,8{__m{_PVK^n3esw5ӫh#$-q=A̟> ,^I}P^J$qY~Q[ Xq9{#&T.^GVj__RKpn,b=`żY@^՝;z{paVKkQXj/)y TIc&F;FBG7wg ZZDG!x r_tƢ!}i/V=M/#nB8 XxЫ ^@CR<{䤭YCN)eKOSƟa $&g[i3.C6xrOc8TI;o hH6P&L{@q6[ Gzp^71j(l`J}]e6X☉#͕ ׈$AB1Vjh㭦IRsqFBjwQ_7Xk>y"N=MB0 ,C #o6MRc0|$)ف"1!ixY<B9mx `,tA>)5ػQ?jQ?cn>YZe Tisvh# GMމȇp:ԴVuږ8ɼH]C.5C!UV;F`mbBk LTMvPʍϤj?ԯ/Qr1NB`9s"s TYsz &9S%U԰> {<ؿSMxB|H\3@!U| k']$U+> |HHMLޢ?V9iD!-@x TIî%6Z*9X@HMW#?nN ,oe6?tQwڱ.]-y':mW0#!J82qFjH -`ѓ&M0u Uγmxϵ^-_\])@0Rt.8/?ٰCY]x}=sD3ojަЫNuS%U}ԤwHH>ڗjܷ_3gN q7[q2la*ArǓԖ+p8/RGM ]jacd(JhWko6ڎbj]i5Bj3+3!\j1UZLsLTv8HHmup<>gKMJj0@H%,W΃7R) ">c, xixј^ aܖ>H[i.UIHc U1=yW\=S*GR~)AF=`&2h`DzT󑓶J+?W+}C%P:|0H܆}-<;OC[~o.$~i}~HQ TvXΈr=b}$vizL4:ȰT|4~*!oXQR6Lk+#t/g lԁߖ[Jڶ_N$k*". xsxX7jRVbAAʯKҎU3)zSNN _'s?f)6X!%ssAkʱ>qƷb hg %n ~p1REGMHH=BJiy[<5 ǁJҖgKR*倳e~HUy)Ag,K)`Vw6bRR:qL#\rclK/$sh*$ 6덤 KԖc 3Z9=Ɣ=o>X Ώ"1 )a`SJJ6k(<c e{%kϊP+SL'TcMJWRm ŏ"w)qc ef꒵i?b7b('"2r%~HUS1\<(`1Wx9=8HY9m:X18bgD1u ~|H;K-Uep,, C1 RV.MR5άh,tWO8WC$ XRVsQS]3GJ|12 [vM :k#~tH30Rf-HYݺ-`I9%lIDTm\ S{]9gOڒMNCV\G*2JRŨ;Rҏ^ڽ̱mq1Eu?To3I)y^#jJw^Ńj^vvlB_⋌P4x>0$c>K†Aļ9s_VjTt0l#m>E-,,x,-W)سo&96RE XR.6bXw+)GAEvL)͞K4$p=Ũi_ѱOjb HY/+@θH9޼]Nԥ%n{ &zjT? Ty) s^ULlb,PiTf^<À] 62R^V7)S!nllS6~͝V}-=%* ʻ>G DnK<y&>LPy7'r=Hj 9V`[c"*^8HpcO8bnU`4JȪAƋ#1_\ XϘHPRgik(~G~0DAA_2p|J묭a2\NCr]M_0 ^T%e#vD^%xy-n}-E\3aS%yN!r_{ )sAw ڼp1pEAk~v<:`'ӭ^5 ArXOI驻T (dk)_\ PuA*BY]yB"l\ey hH*tbK)3 IKZ򹞋XjN n *n>k]X_d!ryBH ]*R 0(#'7 %es9??ښFC,ՁQPjARJ\Ρw K#jahgw;2$l*) %Xq5!U᢯6Re] |0[__64ch&_}iL8KEgҎ7 M/\`|.p,~`a=BR?xܐrQ8K XR2M8f ?`sgWS%" Ԉ 7R%$ N}?QL1|-эټwIZ%pvL3Hk>,ImgW7{E xPHx73RA @RS CC !\ȟ5IXR^ZxHл$Q[ŝ40 (>+ _C >BRt<,TrT {O/H+˟Pl6 I B)/VC<6a2~(XwV4gnXR ϱ5ǀHٻ?tw똤Eyxp{#WK qG%5],(0ӈH HZ])ג=K1j&G(FbM@)%I` XRg ʔ KZG(vP,<`[ Kn^ SJRsAʠ5xՅF`0&RbV tx:EaUE/{fi2;.IAwW8/tTxAGOoN?G}l L(n`Zv?pB8K_gI+ܗ #i?ޙ.) p$utc ~DžfՈEo3l/)I-U?aԅ^jxArA ΧX}DmZ@QLےbTXGd.^|xKHR{|ΕW_h] IJ`[G9{).y) 0X YA1]qp?p_k+J*Y@HI>^?gt.06Rn ,` ?);p pSF9ZXLBJPWjgQ|&)7! HjQt<| ؅W5 x W HIzYoVMGP Hjn`+\(dNW)F+IrS[|/a`K|ͻ0Hj{R,Q=\ (F}\WR)AgSG`IsnAR=|8$}G(vC$)s FBJ?]_u XRvύ6z ŨG[36-T9HzpW̞ú Xg큽=7CufzI$)ki^qk-) 0H*N` QZkk]/tnnsI^Gu't=7$ Z;{8^jB% IItRQS7[ϭ3 $_OQJ`7!]W"W,)Iy W AJA;KWG`IY{8k$I$^%9.^(`N|LJ%@$I}ֽp=FB*xN=gI?Q{٥4B)mw $Igc~dZ@G9K X?7)aK%݅K$IZ-`IpC U6$I\0>!9k} Xa IIS0H$I H ?1R.Чj:4~Rw@p$IrA*u}WjWFPJ$I➓/6#! LӾ+ X36x8J |+L;v$Io4301R20M I$-E}@,pS^ޟR[/s¹'0H$IKyfŸfVOπFT*a$I>He~VY/3R/)>d$I>28`Cjw,n@FU*9ttf$I~<;=/4RD~@ X-ѕzἱI$: ԍR a@b X{+Qxuq$IЛzo /~3\8ڒ4BN7$IҀj V]n18H$IYFBj3̵̚ja pp $Is/3R Ӻ-Yj+L;.0ŔI$Av? #!5"aʄj}UKmɽH$IjCYs?h$IDl843.v}m7UiI=&=0Lg0$I4: embe` eQbm0u? $IT!Sƍ'-sv)s#C0:XB2a w I$zbww{."pPzO =Ɔ\[ o($Iaw]`E).Kvi:L*#gР7[$IyGPI=@R 4yR~̮´cg I$I/<tPͽ hDgo 94Z^k盇΄8I56^W$I^0̜N?4*H`237}g+hxoq)SJ@p|` $I%>-hO0eO>\ԣNߌZD6R=K ~n($I$y3D>o4b#px2$yڪtzW~a $I~?x'BwwpH$IZݑnC㧄Pc_9sO gwJ=l1:mKB>Ab<4Lp$Ib o1ZQ@85b̍ S'F,Fe,^I$IjEdù{l4 8Ys_s Z8.x m"+{~?q,Z D!I$ϻ'|XhB)=…']M>5 rgotԎ 獽PH$IjIPhh)n#cÔqA'ug5qwU&rF|1E%I$%]!'3AFD/;Ck_`9 v!ٴtPV;x`'*bQa w I$Ix5 FC3D_~A_#O݆DvV?<qw+I$I{=Z8".#RIYyjǪ=fDl9%M,a8$I$Ywi[7ݍFe$s1ՋBVA?`]#!oz4zjLJo8$I$%@3jAa4(o ;p,,dya=F9ً[LSPH$IJYЉ+3> 5"39aZ<ñh!{TpBGkj}Sp $IlvF.F$I z< '\K*qq.f<2Y!S"-\I$IYwčjF$ w9 \ߪB.1v!Ʊ?+r:^!I$BϹB H"B;L'G[ 4U#5>੐)|#o0aڱ$I>}k&1`U#V?YsV x>{t1[I~D&(I$I/{H0fw"q"y%4 IXyE~M3 8XψL}qE$I[> nD?~sf ]o΁ cT6"?'_Ἣ $I>~.f|'!N?⟩0G KkXZE]ޡ;/&?k OۘH$IRۀwXӨ<7@PnS04aӶp.:@\IWQJ6sS%I$e5ڑv`3:x';wq_vpgHyXZ 3gЂ7{{EuԹn±}$I$8t;b|591nءQ"P6O5i }iR̈́%Q̄p!I䮢]O{H$IRϻ9s֧ a=`- aB\X0"+5"C1Hb?߮3x3&gşggl_hZ^,`5?ߎvĸ%̀M!OZC2#0x LJ0 Gw$I$I}<{Eb+y;iI,`ܚF:5ܛA8-O-|8K7s|#Z8a&><a&/VtbtLʌI$I$I$I$I$I$IRjDD%tEXtdate:create2022-05-31T04:40:26+00:00!Î%tEXtdate:modify2022-05-31T04:40:26+00:00|{2IENDB`Mini Shell

HOME


Mini Shell 1.0
DIR:/snap/certbot/current/lib64/python3.12/site-packages/cffi/__pycache__/
Upload File :
Current File : //snap/certbot/current/lib64/python3.12/site-packages/cffi/__pycache__/recompiler.cpython-312.pyc
�

N�gW�����ddlZddlZddlZddlmZmZddlmZddl�dZ	dZ
dZejd	k7xs ejd
kxsejdk\ZGd�d
�ZGd�d�ZGd�d�ZGd�d�ZGd�d�ZGd�d�Zejdk\r
ej*ZnGd�dej.�Zd�Zd�Zd%d�Zd%d�Zd�Zd �Zd!�Zd"�Zd#�Z 				d&d$�Z!y)'�N�)�ffiplatform�model)�VerificationError)�*i&i'i(�win32)�r)r	�c� �eZdZdd�Zd�Zd�Zy)�
GlobalExprc�J�||_||_||_||_||_y�N)�name�address�type_op�size�check_value)�selfrrrrrs      �/build/snapcraft-certbot-2c33630aaf29c47357e5a1683f659d3d/parts/certbot/install/lib/python3.12/site-packages/cffi/recompiler.py�__init__zGlobalExpr.__init__s&����	���������	�&���c	��d|j�d|j�d|jj��d|j�d�	S)N�  { "z", (void *)�, z
, (void *)� },)rrr�	as_c_exprr�rs rrzGlobalExpr.as_c_exprs0���I�I�t�|�|�T�\�\�%;�%;�%=�t�y�y�J�	Jrc�j�d|jj�|j|jfzS)Nz
b'%s%s',%d)r�as_python_bytesrrrs r�as_python_exprzGlobalExpr.as_python_exprs2���t�|�|�;�;�=�t�y�y�#�/�/�1�1�	1rN)rr��__name__�
__module__�__qualname__rrr �rrrrs��'�J�1rrc�$�eZdZd�Zd�Zd�Zd�Zy)�	FieldExprc�J�||_||_||_||_||_yr)r�field_offset�
field_size�fbitsize�
field_type_op)rrr)r*r+r,s      rrzFieldExpr.__init__s'����	�(���$��� ��
�*��rc���dt|j�z}d|j�d|j�d�d|�d|j�d�zd|�d|jj��d�zS)N� r�", z,
z     z   r)�lenrr)r*r,r)r�spacess  rrzFieldExpr.as_c_expr&sZ���s�4�9�9�~�%��%)�Y�Y��0A�0A�B�%+�T�_�_�=�>�%+�T�-?�-?�-I�-I�-K�L�M�	Nrc��t�r)�NotImplementedErrorrs rr zFieldExpr.as_python_expr,s��!�!rc��|jjtk(rd}n9|jjtk(rt	|j
�}nt�d|jj��|�|j�d�S)N��b'�')	r,�op�OP_NOOP�OP_BITFIELD�format_four_bytesr+r3rr)r�	size_exprs  r�as_field_python_exprzFieldExpr.as_field_python_expr/sj����� � �G�+��I�
�
�
�
"�
"�k�
1�)�$�-�-�8�I�%�%��"�0�0�@�@�B�'�"�i�i�)�	)rN)r"r#r$rrr r=r%rrr'r's��+�N�"�	)rr'c��eZdZd�Zd�Zd�Zy)�StructUnionExprc	�t�||_||_||_||_||_||_||_||_yr)r�
type_index�flagsr�	alignment�comment�first_field_index�c_fields)	rrrArBrrCrDrErFs	         rrzStructUnionExpr.__init__;s;����	�$�����
���	�"������!2��� ��
rc� �d|j|j|jfzd|j�d|j�d�zd|j
t
|j�fzz|jrd|jzzdzSdzdzS)Nz  { "%s", %d, %s,z
    rz%d, %d z	/* %s */ r5z},)	rrArBrrCrEr0rFrDrs rrzStructUnionExpr.as_c_exprFs���#�t�y�y�$�/�/�4�:�:�&N�N�&*�i�i����@�A��t�5�5�s�4�=�=�7I�J�J�K�26���;����-�G��	�	�DF�G��	�	rc��t|jt�}|jD�cgc]}|j	���}}dt|j��t|��|j�ddj|��d�Scc}w)Nz(b'�',�,�))	�evalrB�G_FLAGSrFr=r;rAr�join)rrB�c_field�fields_exprs    rr zStructUnionExpr.as_python_exprMst���T�Z�Z��)��&*�m�m�5�"��3�3�5�5��5�
�d�o�o�.��e�$��I�I��H�H�[�!�	#�	#��5s�BNr!r%rrr?r?:s��	!��#rr?c��eZdZd�Zd�Zd�Zy)�EnumExprc�J�||_||_||_||_||_yr�rrAr�signed�allenums)rrrArrUrVs      rrzEnumExpr.__init__Xs%����	�$�����	���� ��
rc�z�d|j|j|j|j|jfzS)Nz1  { "%s", %d, _cffi_prim_int(%s, %s),
    "%s" },rTrs rrzEnumExpr.as_c_expr_s9���!%���D�O�O�!%���D�K�K����!H�H�	Irc	��tttttt
ttd�|j|jf}dt|j��t|��|j�d|j�d�S)N))rr)rr)�r)rYr)�r)rZr)�r)r[rr6z\x00r7)�
PRIM_UINT8�	PRIM_INT8�PRIM_UINT16�
PRIM_INT16�PRIM_UINT32�
PRIM_INT32�PRIM_UINT64�
PRIM_INT64rrUr;rArrV)r�
prim_indexs  rr zEnumExpr.as_python_exprdsa���)��*��*��*�	�
�i�i����$�&�
�&7�t���%G�%6�z�%B�%)�Y�Y��
�
�?�	?rNr!r%rrrRrRWs��!�I�
	?rrRc��eZdZd�Zd�Zd�Zy)�TypenameExprc� �||_||_yr�rrA)rrrAs   rrzTypenameExpr.__init__ps����	�$��rc�8�d|j|jfzS)Nz  { "%s", %d },rhrs rrzTypenameExpr.as_c_exprts�� �D�I�I�t���#?�?�?rc�L�dt|j��|j�d�S)Nr6r7)r;rArrs rr zTypenameExpr.as_python_exprws��-�d�o�o�>��	�	�J�JrNr!r%rrrfrfos��%�@�Krrfc��eZdZdZdKd�Zd�Zd�Zd�Zd�Zd�Z	gd�Z
d	�ZdLd
�Zd�Z
d�Zd
�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Zd�Z d�Z!dMd!�Z"d"�Z#d#�Z$d$�Z%e%Z&d%�Z'd&�Z(e(Z)d'�Z*e*Z+d(�Z,d)�Z-d*�Z.		dNd+�Z/d,�Z0d-�Z1d.�Z2d/�Z3dMd0�Z4d1�Z5d2�Z6d3�Z7d4�Z8d5�Z9d6�Z:d7�Z;d8�Z<d9�Z=d:�Z>e>xZ?Z@d;�ZAd<�ZBd=�ZCd>�ZDd?�ZEeExZFZGd@�ZHdA�ZIdB�ZJdC�ZKdD�ZLdE�ZMdF�ZNeNZOeNZPdG�ZQdH�ZRdI�ZSeSZTdJ�ZUy )O�
Recompilerrc�D�||_||_||_t|_yr)�ffi�module_name�target_is_python�VERSION_BASE�_version)rrnrorps    rrzRecompiler.__init__�s �����&��� 0���$��
rc�:�t|j|�|_yr)�maxrr)r�vers  r�
needs_versionzRecompiler.needs_version�s���D�M�M�3�/��
rc
��i|_|jd�t|jt��}g|_|D�]/}|j
s�|j|�J�t
|j�|j|<|jj|�|jD]�}t|tjtjtjtjtjf�sJ�|j|�"t
|j�|j|<|jj|���|jjd���2|D]�}|j
r�|j|�� t
|j�|j|<|jj|�|j s�j|j"��w|jjd���d|jj%�vsJ�i|_i|_|D]V}t|tj*�rd|j&|<�-t|tj,�s�Hd|j(|<�Xt/t|j&d����D]\}}||j&|<�t/t|j(d����D]\}}||j(|<�|D];}t1|d|j2j4z�}|||j|��=|jD]}t|t6�r�J�t9|j�|_y)N�collecttype��key�END�LENc��|jSr�r��tps r�<lambda>z/Recompiler.collect_type_table.<locals>.<lambda>��
��R�W�W�rc��|jSrr~rs rr�z/Recompiler.collect_type_table.<locals>.<lambda>�r�r�_emit_bytecode_)�
_typesdict�	_generate�sorted�str�
cffi_types�is_raw_functionr0�append�args�
isinstancer�VoidType�BasePrimitiveType�PointerType�StructOrUnionOrEnum�FunctionPtrType�
is_array_type�length�values�_struct_unions�_enums�
StructOrUnion�EnumType�	enumerate�getattr�	__class__r"�CffiOp�tuple)r�	all_declsr��tp1�i�methodr8s       r�collect_type_tablezRecompiler.collect_type_table�s��������}�%��4�?�?��4�	�����	.�B��!�!����r�*�2�2�2�&)�$�/�/�&:�����#����&�&�r�*��7�7�0�C�%�c�E�N�N�,1�,C�,C�,1�,=�,=�,1�,E�,E�,1�,A�,A�	,C�D�D�D�
���s�+�3�/2�4�?�?�/C�����,��O�O�*�*�3�/�0����&�&�u�-�	.�"�	2�B��%�%�$�/�/�"�*=�*E�&)�$�/�/�&:�����#����&�&�r�*��#�#��	�	�(=��O�O�*�*�5�1�	2��4�?�?�1�1�3�3�3�3�!�������	'�B��"�e�1�1�2�*.��#�#�B�'��B����/�"&����B��		'�
�v�d�&9�&9�*<� >�?�	(�E�A�r�&'�D����#�	(��v�d�k�k�*<� >�?�	 �E�A�r��D�K�K��O�	 �
�	,�B��T�#4�r�|�|�7L�7L�#L�M�F��2�t���r�*�+�	,�
�/�/�	*�B��b�&�)�)�)�	*�����0��rc�>�|j}|j|�Sr)rp�
enumfields)rr��expand_anonymous_struct_unions   r�_enum_fieldszRecompiler._enum_fields�s#��-1�,A�,A�(A�%��}�}�:�;�;rc��t|tj�s)t|t�r|D]}|j	|��y||j
vr�d|j
|<t|tj�r |j	|j��yt|tj�rn|j�a||jjjvr>|j|�D])\}}}}|j	|j|||���+yyy|j�D]\}}|j	|��yyr)r�r�BaseTypeByIdentityr��_do_collect_typer�r��as_raw_functionr��fldtypesrn�_parser�_included_declarationsr��_field_type�
_get_items)rr��x�name1r��_s      rr�zRecompiler._do_collect_type�s*���"�e�6�6�7��"�e�$��-�A��)�)�!�,�-��
�T�_�_�$�"&�D�O�O�B���"�e�3�3�4��%�%�b�&8�&8�&:�;��B�� 3� 3�4��;�;�*��$�(�(�"2�"2�"I�"I�I�,0�,=�,=�b�,A�P�(��s�A�q��-�-�d�.>�.>�r�5�#�.N�O�P�J�+�
�M�M�O�-�D�A�q��)�)�!�,�-�%rc��|jjjj�}t	|�D]A\}\}}|jdd�\}}	t
|d|�d|���}	||_	|||��Cy#t$rtd|z��wxYw#t$r}	tj|	|��d}	~	wwxYw)Nr.r�_generate_cpy_r�z"not implemented in recompile(): %r)
rnr��
_declarations�itemsr��splitr��AttributeErrorr�_current_quals�	Exceptionr�attach_exception_info)
r�	step_name�lstrr��quals�kind�realnamer��es
          rr�zRecompiler._generate�s����h�h���,�,�2�2�4��!'���
	��D�+�2�u�!�Z�Z��Q�/�N�D�(�
A� ���@I�(K�L��

�&+��#��r�8�$�
	��
"�
A�'�8�4�?�A�A�
A���
��+�+�A�t�4���
�s$�A?�,B�?B�	B?�#B:�:B?)�global�field�struct_union�enum�typenamec�Z�i|_|jD]}g|j|<�t�|_|j	d�|j�|jD]A}|j|}|dk7r|j
d���t|�|j|<�C|jd}|jj�D]3\}}|t|�ksJ�||j|jk(r�3J�t|�t|j�k(sJ�|jd}|jj�D]3\}}|t|�ksJ�||j|jk(r�3J�t|�t|j�k(sJ�y)N�ctxr�c��|jSrr~)�entrys rr�z0Recompiler.collect_step_tables.<locals>.<lambda>s
��5�:�:�rryr�r�)
�_lsts�	ALL_STEPS�set�_seen_struct_unionsr��_add_missing_struct_unions�sortr�r�r�r0rr�)rr�r�r�r�s     r�collect_step_tableszRecompiler.collect_step_tables�s�����
����	'�I�$&�D�J�J�y�!�	'�#&�5�� ����u���'�'�)����	/�I��*�*�Y�'�C��G�#����5��6�$)�#�J�D�J�J�y�!�		/��j�j��(���(�(�.�.�0�	*�E�B���s�3�x�<��<��q�6�;�;�"�'�'�)�)�)�	*��3�x�3�t�2�2�3�3�3�3��j�j�� ���[�[�&�&�(�	*�E�B���s�3�x�<��<��q�6�;�;�"�'�'�)�)�)�	*��3�x�3�t�{�{�+�+�+�+rc�@�|jj|dz�y)N�
)�_f�write)r�whats  r�_prntzRecompiler._prnts�����
�
�d�T�k�"rc�t�|jr|�J�|j|�y|�J�|j||�yr)rp�write_py_source_to_f�write_c_source_to_f)r�f�preambles   r�write_source_to_fzRecompiler.write_source_to_fsA��� � ��#�#�#��%�%�a�(��'�'�'��$�$�Q��1rc���ttjjtjj	t
�|�d�}|j
�}|j�|S)N�r)�open�os�pathrN�dirname�__file__�	readlines�close)r�filename�g�liness    r�_rel_readlineszRecompiler._rel_readlines!sC��������b�g�g�o�o�h�7��B�C�H�����
��	���	��rc	���||_|j}|jj�|d�ts|d�|jd�}|j
d�}|jd�|||dz|dj|��|jjd�d	}|jj��|d
|j�d��|d�|j|jj�|d
�|d�|d|���|d�|d|���|d�|d|���|d�|jd�}|j
d�}|jd�|||dz|dj|��|jt�|d�|�||�|�|d�|�|d�t|jj�D��cgc]	\}}||f��c}}�}t!|j"�D]=\}}	d}
||vrd||j%�z}
|d||	j'�|
fz��?|j"s|d�|d�|�t)�|_|j-d�i}|j.D]c}|j0|}
t3|
�||<||dkDs�)|d |�d!|�d"��|
D]}||j'���|d�|��e|jj4rf|d#�|jj4D].}	|j6dd$\}}|�t;d(��|d)|�d*���0|d+�|d�|�|d,�|d-�|j.D]!}||dkDr|d.|z��|d/|z��#|j.D]}|d0k7s�	|d1|||fz��|jj4r	|d2�n|d3�|d4t3|j"�fz�d}|j<dkDs|jj�|dz}|d5|z�|d�|�|d6�|d7�|d�|�|d�|d8�|d9|�d:��|d;�|dzr|d<�|d=�|d>�|d?|j>z�|d@�|dA�|dB�|d�|dC�|dD�|dE�|dF�|dG|�dH��|dI�|dJ|�dK��|dL�|dL�|d�|d8�|dM|�dN��|d;�|dO|j|j>fz�|dC�|d�|d8�|dP|�dN��|d;�|dQ|j|j>fz�|dC�|d�|�|d6�|dR�|d�d|_ycc}}w#t8$rt;d%|j�d&|�d'���wxYw)SNz#define _CFFI_USE_EMBEDDINGz#define _CFFI_NO_LIMITED_APIz_cffi_include.hz#include "parse_c_type.h"
zparse_c_type.hrr5�.���z#define _CFFI_MODULE_NAME  "�"z1static const char _CFFI_PYTHON_STARTUP_CODE[] = {z0 };z#ifdef PYPY_VERSIONz3# define _CFFI_PYTHON_STARTUP_FUNC  _cffi_pypyinit_z#elif PY_MAJOR_VERSION >= 3z+# define _CFFI_PYTHON_STARTUP_FUNC  PyInit_�#elsez(# define _CFFI_PYTHON_STARTUP_FUNC  init�#endifz_embedding.hz#include "_cffi_errors.h"
z_cffi_errors.hz>/************************************************************/zstatic void *_cffi_types[] = {z // z/* %2d */ %s,%sz  0z};�declrzstatic const struct _cffi_z	_s _cffi_zs[] = {z.static const char * const _cffi_includes[] = {rY�ffi object �
 includes �8, but the latter has not been prepared with set_source()zMnot implemented yet: ffi.include() of a Python-based ffi inside a C-based ffiz  "z",z  NULLz?static const struct _cffi_type_context_s _cffi_type_context = {z  _cffi_types,z  _cffi_%ss,z  NULL,  /* no %ss */r�z  %d,  /* num_%ss */z  _cffi_includes,z  NULL,  /* no includes */z  %d,  /* num_types */z  %d,  /* flags */z#ifdef __GNUC__z?#  pragma GCC visibility push(default)  /* for -fvisibility= */�PyMODINIT_FUNC�_cffi_pypyinit_z(const void *p[])�{z%    if (((intptr_t)p[0]) >= 0x0A03) {zQ        _cffi_call_python_org = (void(*)(struct _cffi_externpy_s *, char *))p[1];z    }z    p[0] = (const void *)0x%x;z    p[1] = &_cffi_type_context;z#if PY_MAJOR_VERSION >= 3�    return NULL;�}z#  ifdef _MSC_VERz     PyMODINIT_FUNCz#  if PY_MAJOR_VERSION >= 3z     PyInit_z(void) { return NULL; }z#  elsez	     initz
(void) { }z#  endif�PyInit_�(void)z5  return _cffi_init("%s", 0x%x, &_cffi_type_context);�initz.  _cffi_init("%s", 0x%x, &_cffi_type_context);z#  pragma GCC visibility pop) r�r�rn�
_embedding�USE_LIMITED_APIr��indexrNror��_print_string_literal_in_arrayrv�VERSION_EMBEDDED�dictr�r�r�r��_get_c_namerr��_seen_constantsr�r�r�r0�_included_ffis�_assigned_sourcer�r�
_num_externpyrr)rr�r��prntr�r��base_module_namer��typeindex2typer8rD�numsr�r�r��ffi_to_include�included_module_name�included_sourcerBs                   rr�zRecompiler.write_c_source_to_f's�������z�z���8�8���*��.�/���/�0��#�#�$5�6���K�K�5�6���*�*�+;�<��a��!����R�W�W�U�^�� �+�+�1�1�#�6�r�:���8�8���*��d�6F�6F�H�I��D�E��/�/����0C�0C�D���L��&�'�� �#�
$��.�/�� �#�
$���M�� �#�
$���N��'�'��7�E����9�:�A��.�.�/?�@�E�!�A�a�C�L������� ����/�0�	
�
M�N����X�����
M�N���	
�
-�.��d�o�o�6K�6K�6M�N�7�B���2�w�N�O���t���/�	C�E�A�r��G��N�"� �>�!�#4�#@�#@�#B�B���"�a������%A�A�B�		C�
�����K��T�
��� #�u������v�������		�I��*�*�Y�'�C�!�#�h�D��O��I���"���y�*�+� �,�E�����*�+�,��T�
���		��8�8�"�"��A�B�"&�(�(�"9�"9�

:��8�&�7�7���;�:�(�/�#�*�+�3�4�4��"6�8�9�

:�
��N���J��F�	
�
N�O��
�����	:�I��I���"��^�i�/�0��,�y�8�9�		:�
���	L�I��G�#��+�t�I��	�.J�J�K�	L��8�8�"�"��$�%��-�.��
%��T�_�_�)=�(?�
?�@�������!�T�X�X�%8�%8�%D��Q�J�E��
!�E�
)�*��T�
���	
�
���
N�O��X�����
"�#��
���5E�
G�H��S�	��1�9��8�9��E�
F���M��
-��
�
�
=�>��
.�/��
(�)��
� ��X���S�	�	
�
 �!��
"�#��
*�+��8H�
J�K��Y���(8�
:�;��Z���Z���
*�+��
���"2�
4�5��S�	��
D����d�m�m�H-�-�	.��S�	��W�
��
���/�
1�2��S�	��
=����d�m�m�A-�-�	.��S�	��X�����
���
+�,��X����
��wO��H&�8�+�!�H�H�n�7�8�8�8�s�Y
�&Y�&Y7c�(�t|t�rd|�d�St|ttf�rR|D�cgc]}|j	|���}}t|�dk(r|j
d�ddj|��d�S|j�Scc}w)Nr6r7rr5�(rJrK)	r�r��listr��_to_pyr0r�rNr )rr��item�reps    rrzRecompiler._to_py�sz���a����>�!��a�$���'�12�3��4�;�;�t�$�3�C�3��3�x�1�}��
�
�2��� �X�X�c�]�,�,����!�!��	4s�Bc
��||_|j}|d�|d�t|jjxsd�}t|�D]H}|jj|}	|jdd\}}|�td��|d	||fz��J|�|d
|j�d��|d|jfz�d|_
t|j�|_|jD�cgc]}|j���}	}|d
|jdj|	���d��t!|j"j%�D�
�cgc]	\}
}||
f��c}}
�}|j&D]D}|j(|}
t|
�dkDs�!|dk7s�'|d|�d|j|
��d���F|dkDr5|ddjt|�D�cgc]}d|z��	c}��d��|d�y#t$rtd|j�d|�d���wxYwcc}wcc}}
wcc}w)Nz# auto-generated filezimport _cffi_backendr%rYr�r�r�zMnot implemented yet: ffi.include() of a C-based ffi inside a Python-based ffizfrom %s import ffi as _ffi%dzffi = _cffi_backend.FFI('rIz    _version = 0x%x,z
    _types = r5rJrr�z    _zs = z    _includes = (rz_ffi%dz,),rK)r�r�r0rnr�rangerr�rrorrr�r�rrrNrr�r�r�r�)rr�r	�num_includesr�r
rrr8�	types_lstr�rr�r�s              rr�zRecompiler.write_py_source_to_f�s3������z�z��	
�
$�%��
#�$��4�8�8�2�2�8�b�9���|�$�	M�A�!�X�X�4�4�Q�7�N�
4�"�3�3�B�Q�7�6�$�o��*�'�4�5�5�
�/�3G��2K�K�L�	M�	
����0@�0@�
B�C��
#�t�}�}�&6�
6�7���
� ����0���48�O�O�D�b�R�'�'�)�D�	�D��4�;�;�r�w�w�y�/A�#B�
D�E��d�o�o�6K�6K�6M�N�7�B���2�w�N�O�����	G�I��*�*�Y�'�C��3�x�!�|�	�W� 4���D�K�K��4D�E�F�	G��!����	�	��|�1D�E�A�8�a�<�E�F�I�
J�	
�S�	��C"�
4�'����.�3�4�4�
4��"E��N��Fs�/H�?H9�$H>
�-I�&H6c� �|j|Sr)r�)r�types  r�_gettypenumzRecompiler._gettypenums�����t�$�$rc
�N�d}t|tj�r�|j�s�|j	�r!|j
dk7rd}d|j
z}n|t|tj�rd|jd��d�}nL|jd�}d|�d|j
jdd	���}|d
vr|jt�d}n�t|tj�r|j||||�yt|tj�st|tj�r;|jd||j|�|fz�|jd
|z�yt|tj �r+d|jd�z}d|j|�z}d}nt#|��|jd|�d|�d|�|�d��|jd|�d|jd��d|�d��|jd
|z�y)Nr5�_Bool�_cffi_to_c_intz, %srz)_cffi_to_c_doublez)_cffi_to_c_r.r���char16_t�char32_tz-1z6  if (_cffi_to_c((char *)&%s, _cffi_type(%d), %s) < 0)z    %s;z(%s)_cffi_to_c_pointerz, _cffi_type(%d)�NULL�  z = �);z  if (z == (rKz && PyErr_Occurred()))r�rr��is_complex_type�is_integer_typer�UnknownFloatType�
get_c_name�replacerv�VERSION_CHAR16CHAR32r��"_convert_funcarg_to_c_ptr_or_arrayr�r�rr�r3)	rr��fromvar�tovar�errcode�extraarg�	converter�cname�errvalues	         r�_convert_funcarg_to_cz Recompiler._convert_funcarg_to_cs������b�%�1�1�2�2�;M�;M�;O��!�!�#����7�(:�,�	�!�B�G�G�+���B�� 6� 6�7�8:�}�}�R�7H�J�	��
�
�b�)��38�35�7�7�?�?�3��3L�N�	��4�4��&�&�';�<��H�
��E�-�-�
.��3�3�B��49�7�
D����U�6�6�7���U�4�4�5�
�J�J�O��� 0� 0�� 4�g�>�?�
@��J�J�y�7�*�+��
��E�1�1�
2�0�2�=�=��3D�D�I�)�D�,<�,<�R�,@�@�H��H�&�b�)�)��
�
��	�7�H�M�N��
�
��2�=�=��$�h�0�	1��
�
�9�w�&�'rc��t|tj�r4|jd�|jd�|jd�yy)NzPy_ssize_t datasizez-struct _cffi_freeme_s *large_args_free = NULLzIif (large_args_free != NULL) _cffi_free_array_arguments(large_args_free);)r�rr��add)rr��	localvars�	freeliness    r�_extra_local_variablesz!Recompiler._extra_local_variablesCsD���b�%�+�+�,��M�M�/�0��M�M�I�J��M�M�J�
K�-rc��|jd�|jd|j|�||fz�|jd�|jd|�d|jd��d��|jd|j|�||fz�|jd	�|jd
|z�|jd�y)Nz1  datasize = _cffi_prepare_pointer_call_argument(z(      _cffi_type(%d), %s, (char **)&%s);z  if (datasize != 0) {z    z  = ((size_t)datasize) <= 640 ? (r5z!)alloca((size_t)datasize) : NULL;zF    if (_cffi_convert_array_argument(_cffi_type(%d), %s, (char **)&%s,z,            datasize, &large_args_free) < 0)z	      %s;z  })r�rr))rr�r-r.r/s     rr,z-Recompiler._convert_funcarg_to_c_ptr_or_arrayJs����
�
�F�G��
�
�=����R� �'�5�A2�2�	3��
�
�+�,��
�
��2�=�=��$�&�	'�	
�
�
�#�&*�&6�&6�r�&:�G�U�%K�L�	M��
�
�A�B��
�
�;��(�)��
�
�5�rc��t|tj�r�|j�r"|jdk7rd|�d|j�d�St|tj
�rd|�d�S|jdk7rN|j
�s>|jjdd�}|d	vr|jt�d
|�d|�d�Sd||j|�fzSt|tjtjf�rd
||j|�fzSt|tj�r3d
||jtj|j��fzSt|tj�rB|j � t#d|j%��d|�d���d||j|�fzSt|tj&�rd||j|�fzSt)|��)Nrz_cffi_from_c_int(rrKz_cffi_from_c_double(�long doubler.r�r �
_cffi_from_c_rz/_cffi_from_c_deref((char *)&%s, _cffi_type(%d))z0_cffi_from_c_pointer((char *)%s, _cffi_type(%d))r7z
' is used as z, but is opaquez0_cffi_from_c_struct((char *)&%s, _cffi_type(%d)))r�rr�r'rr(r&r*rvr+rr�r��	ArrayTyperr��fldnames�	TypeErrorrr�r3)rr��var�contextr2s     r�_convert_expr_from_czRecompiler._convert_expr_from_cXs����b�%�1�1�2��!�!�#����7�(:�58�"�'�'�B�B��B�� 6� 6�7�47�9�9����M�)�"�2D�2D�2F�������S�1���4�4��&�&�';�<��05�s�;�;�H���)�)�"�-�L/�/�/�
��U�.�.��0E�0E�F�
G�E��T�%�%�b�)�I+�+�
+�
��E�O�O�
,�E��T�%�%�e�&7�&7����&@�A�IC�C�
C�
��E�/�/�
0��{�{�"���N�N�$�g�!/�0�0�E��T�%�%�b�)�I+�+�
+�
��E�N�N�
+�D��T�%�%�b�)�H+�+�
+�&�b�)�)rc�.�|j|d|�d��S)Nz(*(z *)0))�_global_type�rr�rs   r�
_typedef_typezRecompiler._typedef_type{s��� � ��T�%;�<�<rc�F�|j|j||��yr)r�rGrFs   r�!_generate_cpy_typedef_collecttypez,Recompiler._generate_cpy_typedef_collecttype~s�����d�0�0��T�:�;rc��yrr%rFs   r�_generate_cpy_typedef_declz%Recompiler._generate_cpy_typedef_decl����rc�r�|j|}|jdjt||��y)Nr�)r�r�r�rf)rr�rrAs    r�_typedef_ctxzRecompiler._typedef_ctx�s.���_�_�R�(�
��
�
�:��%�%�l�4��&D�Erc�Z�|j||�}|j||�t|dd�dk(r|j||jd��yt|tj�r>|j|j|jj|j|��yy)N�origin�unknown_type)�
approxname)rR�	named_ptr)	rGrNr��_struct_ctxrr�r�NamedPointerType�totyperFs   r�_generate_cpy_typedef_ctxz$Recompiler._generate_cpy_typedef_ctx�s���
�
�
��D�
)�����"�d�#��2�x��&�.�8����R����T��:�
��E�2�2�
3����R�Y�Y��	�	���2�7�7�')�
�
+�4rc��|j|j��|jr|js|j|�yyyr)r�r��ellipsisrprFs   r�"_generate_cpy_function_collecttypez-Recompiler._generate_cpy_function_collecttype�s=�����b�0�0�2�3�
�;�;�t�4�4��!�!�"�%� 5�;rc
��|jrJ�t|tj�sJ�|jr|j||�y|j}t|j�}|dk(rd}n
|dk(rd}nd}g}g}d|z}t|j�D]=\}	}
|j|
jd|	z|��|jd|	z��?d	j|�}|xsd
}|jr|jdz}nd}|�d
|�d|�d�}
|d|jj|
����|d�d	j|�}d}t|jtj�rd}|d|�|�d|�d��|d�|d�|d�|d|�d|�d��|d�d|z}t|j�D]%\}	}
|
jd|	z|�}|d|z��'t!�}t!�}|jD]}
|j#|
||��t%|�D]}|d|�d���t|jtj�s7d}d|z}d|jjd|�z}||�|d�nd}d}t|j�dkDr�t't|j��}|D]
}	|d |	z��|�|d!|t|�t|�d	j|D�	cgc]}	d"|	z��	c}	�fz�|d#�|�t|j�D]&\}	}
|j)|
d$|	zd|	zd%�|��(|d&�|d'�t't|j��D�	cgc]}	d|	z��	}}	d	j|�}|d(|�|�d|�d)��|d*�|d+�|�|d,�|dk(r|d-�|rA|d.|j+|jd/d0�z�|D]
}|d|z��|d1�n"|D]
}|d|z��|d2�|d3�|d�|d4�d5�}d6}g}g}d|z}t|j�D]Q\}	}
d}||
�rd7}d8}|
jd9||	fz|�}|j|�|jd:||	fz��S|j}||�r?d|z}|jd;|�}|j-d|�tj.}d}d<}d8}|r�d	j|�}|xsd
}|�d|�d|�d�}
|d|j|
����|d�|r||�d	j|�}|d(|�|�d|�d)��|r|d=�|d�n|d>|�d?|���|d@�|�ycc}	wcc}	w)ANr�noargr�arg0r��argument of %sz x%dzx%dr�voidr.r5�_cffi_d_rrK�static r�zreturn r$r%r�z#ifndef PYPY_VERSIONzstatic PyObject *�_cffi_f_z(PyObject *self, PyObject *z  %s;�;z	result = �result of %sz resultz  PyObject *pyresult;z  PyObject *arg%d;z1  if (!PyArg_UnpackTuple(args, "%s", %d, %d, %s))z&arg%dr�zarg%dzreturn NULLz  Py_BEGIN_ALLOW_THREADSz  _cffi_restore_errno();�  { z); }z  _cffi_save_errno();z  Py_END_ALLOW_THREADSz  (void)self; /* unused */z  (void)noarg; /* unused */z  pyresult = %s;�resultzresult typez  return pyresult;z  Py_INCREF(Py_None);z  return Py_None;r�c��t|tj�xs,t|tj�xr|j	�Sr)r�rr��
PrimitiveTyper&)rs r�need_indirectionz@Recompiler._generate_cpy_function_decl.<locals>.need_indirections=���t�U�%8�%8�9�-���e�&9�&9�:�,��)�)�+�
.rFrTz %sx%dz%sx%dz *resultz
*result = z  return result;z#  define _cffi_f_z	 _cffi_d_r�)rpr�rr�rY�_generate_cpy_constant_declr�r0r�r�r�r)rN�abirfr�r�r9r�rr4rC�insert�	void_type)rr�rr	�numargs�argname�	arguments�call_argumentsrBr�r�repr_argumentsrk�name_and_arguments�result_code�argr7r8r��result_decl�rng�freelineri�
difference�indirection�	tp_results                          r�_generate_cpy_function_declz&Recompiler._generate_cpy_function_decl�s���(�(�(�(��"�e�3�3�4�4�4�
�;�;�
�,�,�R��6���z�z���b�g�g�,���a�<��G�
��\��G��G��	���"�T�)�� ����)�	-�G�A�t����T�_�_�V�a�Z��A�B��!�!�%�!�)�,�	-����9�-��'�1�6��
�6�6��&�&�3�,�C��C�36��n�M���B�I�I�0�0�1C�D�
F�G��S�	����>�2�����b�i�i����0��K��k�4��
@�A��S�	��
#�$��
 �!��4��
I�J��S�	�"�T�)�� ����)�	 �G�A�t��/�/�&�1�*�g�6�C���3���	 ��E�	��E�	��G�G�	D�D��'�'��i��C�	D��9�%�	$�D��D�"�#�	$��"�)�)�U�^�^�4�%�K�$�t�+�G�!�B�I�I�$8�$8��G�$L�L�K�����(�)��K��K��r�w�w�<�!����B�G�G��%�C��
/���)�A�-�.�
/��F��D��c�#�h��C���	�	��5�A�8�a�<�5�6�H8�8�
9�
�#�$��� ����)�	�G�A�t��&�&�t�W�q�[�%�!�)�'4�
6��F�	�
	
�
'�(��
'�(�-2�3�r�w�w�<�-@�A��%�!�)�A��A����>�2���+�t�^�
D�E��
$�%��
%�&����
)�*��a�<��.�/���#��*�*�2�9�9�h�
�N�O�
P�%�
&���T�H�_�%�
&��%�&�%�
&���T�H�_�%�
&��(�)��$�%��S�	��W�
�	.��
��	���"�T�)�� ����)�	>�G�A�t��K���%�!��!�
��/�/�(�k�1�-=�"=�w�G�C����S�!��!�!�'�[�!�,<�"<�=�	>��I�I�	��I�&�$�t�+�G��&�&�z�7�;�C����Q��$����I��K�&�K��J��!�Y�Y�y�1�N�+�5�v�N�7:�D�7E�"G���	� 4� 4�5G� H�J�K���I���[�!�!�Y�Y�~�6�N��k�4��H�I���'�(���I��d�D�A�B��X�����g6��Bs�+X�Xc
��|jr|js|j||�y|j|j	�}t|j�}|jrt}n|dk(rt}n|dk(rt}nt}|jdjt|d|zt||�d|z���y)Nrrr�z
_cffi_f_%sz
_cffi_d_%s)r)rYrp�_generate_cpy_constant_ctxr�r�r0r��OP_DLOPEN_FUNC�OP_CPYTHON_BLTN_N�OP_CPYTHON_BLTN_O�OP_CPYTHON_BLTN_Vr�r�rr�)rr�rrArn�	meth_kinds      r�_generate_cpy_function_ctxz%Recompiler._generate_cpy_function_ctx;s���
�;�;�t�4�4��+�+�B��5���_�_�R�%7�%7�%9�:�
��b�g�g�,��� � �&�I�
��\�)�I�
��\�)�I�)�I��
�
�8��#�#��t�\�D�0��i��4�(�4�/�
1�	2rc��t|tj�ra|j}|dk(r|j	d�}d|�d|�d�}|j|d|z|j�}tj||�}|S)N�...rz_cffi_array_len(((�)0)->rK�%s[0])r�rr>r�r)r�r)r�	tp_struct�
field_name�tp_field�
actual_length�ptr_struct_name�tp_items       rr�zRecompiler._field_typeQsr���h����0�$�O�O�M���%�"+�"6�"6�s�";��#�Z�!1�
��&�&�y�'�J�2F�'/�}�}�6�G����w�
�>�H��rc��|j|�|jr'|j�D]}|j|��yyr)r�rp�anonymous_struct_fields�_struct_collecttype)rr��fldtypes   rr�zRecompiler._struct_collecttype]sD�����b�!�� � ��5�5�7�
2���(�(��1�
2�!rc
��|j�y|j}d|��}|d�|d|�d|�d��|d�|d�|d�|j|�D]�\}}}}		|j�s|d	k\r|d
k7r|d|�d|�d
|�d���6t	|t
j�rc|j�|jdk(rH|j}|dz}t	|t
j�r|j��8|jdk(r�H|d|jdd|z|	���d|�d����|d�|d|�d|�d��|�y#t$r}
|dt|
�z�Yd}
~
��d}
~
wwxYw)N�_cffi_checkfld_�_CFFI_UNUSED_FNzstatic void rz *p)r�z8  /* only to generate compile-time warnings or errors */z
  (void)p;rr5z
  (void)((p->z) | 0);  /* check that 'r�z' is an integer */r�z[0]rez*tmpzfield %r�r�z = &p->z; (void)tmp; }z
  /* %s */r�zstruct _cffi_align_z { char x; z y; };)r�r�r�r'r�rr>r�rr)rr�)rr�r2rRr	�
checkfuncname�fname�ftyper+�fqualr�s           r�_struct_declzRecompiler._struct_decldsq��
�;�;����z�z��/9�;�
��
���
�u�
=�>��S�	��
G�H��\��-1�->�->�r�-B�	,�)�E�5�(�E�
,��(�(�*�h�!�m���{��05�u�e�E�F��"�%����9�!�L�L�0�E�L�L�E�4I�!�J�J�E�!�E�M�E�"�%����9�!�L�L�0�E�L�L�E�4I���$�$�V�Z��-=�U�$�K����	,�(	
�S�	��:�u�
M�N����	%�
,��\�C��F�*�+�+��
,�s+�(,E�A,E�E�$E�	E?� E:�:E?Nc��|j|}d}g}t|tj�r|j	d�|j
�|j	d�d}||jjjvr�|�"||jjjvr�|j
�n7|jst|j��rn|j	d�|jrO|jdkDrt|�d|j�d���|j	d�n|j	d	�d
}dj|�xsd}g}|���t|j!|��}	|	D�]\}
}}}
|j#||
|�}|j%|d
|j&�d|
�d��t(}|dk\rt*}d|z}nQ|�&t|tj,�r|j.�d}n&d|�|j1d�n|j&�d|
�d�}|�|dk\rd}n.|�d|j&�d|
�d�}nd|j1d��d|
�d�}|j	t3|
|||t5||j|�����t7|j8d�}|j8dj;|�|�d}d}d }n,|�d!|j&�d"�}d#}nd$|�d�}d%|�d&�}d}nd}d'}d'}|}|j8d(j	t=|j&|||||||��|j>jA|�y))N�
_CFFI_F_UNION�_CFFI_F_OPAQUE�opaque�_CFFI_F_CHECK_FIELDSrz is declared with 'pack=zi'; only 0 or 1 are supported in API mode (try to use "...;", which does not require a 'pack' declaration)�_CFFI_F_PACKED�_CFFI_F_EXTERNAL�external�|�0zfield 'r�r7rz
%d /* bits */z
(size_t)-1z	sizeof(((rr�rKz((char *)&((z)4096)->z) - (char *)4096z	offsetof(r5rr�z
(size_t)-2����unnamedz	sizeof(*(z)0)z-1 /* unknown alignment */zsizeof(zoffsetof(struct _cffi_align_z, y)r�r�)!r�r�r�	UnionTyper�r�rnr�r��partial�anyr��packedr3rNrr�r��_check_not_opaquerr9r:r>r�r)r'r�r0r��extendr?r�r6)rr�r2rRrSrA�reason_for_not_expandingrBrFr��fldnamer�r+r�r8r�offsetrE�alignrDs                    rrTzRecompiler._struct_ctx�s9���_�_�R�(�
�#'� ����b�%�/�/�*��L�L��)�
�;�;���L�L�)�*�'/�$��d�h�h�&�&�=�=�=��"��$�(�(�"2�"2�"I�"I�I��{�{�"�����s�2�#=�#=�#?�@�����3�4��y�y��9�9�q�=�-��R�Y�Y�(�)�)�
���-�.��L�L�+�,�'1�$������&�3����#�+��d�/�/��3�4�J�5?�
E�1���(�E��*�*�2�w��@���&�&�w�:<�'�'�7�'K�M����q�=�$�B�*�X�5�D��]�"�7�E�O�O�<����.�'�D��/8�.?��
�
�c�*�09���?��!�D��=�H��M�)�F��*�!����1�F�+�46�=�=��3D�g�N�F�����g�v�t�X�$�R�����)A�B�D�E�3
E�8!$�D�J�J�w�$7� 8���J�J�w��&�&�x�0��}�#����#���(�/8�~�~�?�D�8�E�)�,1�2�D�DN�P�E����D��E� "��.�G��
�
�>�"�)�)��B�G�G�Z���e�W�-�x�
9�	:�	
� � �$�$�R�(rc���t|tj�r'|j}t|tj�r�'t|tj�r|j
�t
d|z��yy)Nz0%s is of an opaque type (not declared in cdef()))r�rr>rr�r�r@)rr��locations   rr�zRecompiler._check_not_opaque�sb����U�_�_�-����B���U�_�_�-��b�%�-�-�.�2�;�;�3F��B�X�M�O�
O�4G�.rc��t|jj��}|jd���|D]�\}}||jvs�|j
rt
d|�d���|jjd�r-|jddj�r|jdd}nA|jdk(r$|jdk(rd}|j|d�nt
d|����|j|d|���y)	Nc��|dS)Nrr%)�tp_orders rr�z7Recompiler._add_missing_struct_unions.<locals>.<lambda>�s
��h�q�k�rryzinternal inconsistency: z* is partial but was not seen at this point�$r�_IO_FILE�FILE)
rr�r�r�r�r�r3r�
startswith�isdigit�	forcenamerNrT)rr�r��orderrRs     rr�z%Recompiler._add_missing_struct_unions�s���
�4�&�&�,�,�.�/�����1��2��	7�I�B����1�1�1��:�:�-�>@�/C�D�D��7�7�%�%�c�*�r�w�w�q�r�{�/B�/B�/D�!#������J��W�W�
�*�r�|�|�v�/E�!'�J��%�%�b�&�1�-�/1�/4�5�5�� � ��T�:�6�	7rc�&�|j|�yr)r�rFs   r� _generate_cpy_struct_collecttypez+Recompiler._generate_cpy_struct_collecttype�s��� � ��$rc�b�|jd�}d|vr||jdd�fS|d|zfS)Nr5r.r�)r)r*)rr�r2s   r�
_struct_nameszRecompiler._struct_names�s<���
�
�b�!���%�<��%�-�-��S�1�1�1��#��+�%�%rc�H�|j|g|j|����yr)r�r�rFs   r�_generate_cpy_struct_declz$Recompiler._generate_cpy_struct_decls"������"�6�t�1�1�"�5�6rc�H�|j|g|j|����yr)rTr�rFs   r�_generate_cpy_struct_ctxz#Recompiler._generate_cpy_struct_ctx	s"�������5�d�0�0��4�5rc��t|tj�r|j||�y|j	|�yr)r�rr��_generate_cpy_enum_collecttyper�rFs   r�#_generate_cpy_anonymous_collecttypez.Recompiler._generate_cpy_anonymous_collecttypes.���b�%�.�.�)��/�/��D�9��$�$�R�(rc��t|tj�r|j|�y|j	||d|z�y�N�typedef_)r�rr��_generate_cpy_enum_declr�rFs   r�_generate_cpy_anonymous_declz'Recompiler._generate_cpy_anonymous_decls5���b�%�.�.�)��(�(��,����b�$�
�T�(9�:rc��t|tj�r|j||�y|j	||d|z�yr�)r�rr��	_enum_ctxrTrFs   r�_generate_cpy_anonymous_ctxz&Recompiler._generate_cpy_anonymous_ctxs5���b�%�.�.�)��N�N�2�t�$����R��z�D�'8�9rc��||f|jvrtd|�d|�d���|jj||f�|j}d|�d|��}|r`|d|z�|d�|d|�d	��|d
|�d|�d��|�|d
kDrd|fz}|d|�d��|d�|d�|d�n=|�J�|d|z�|d�|d|j	d��d|�d��|d�|�y)Nzduplicate declaration of z 'r7�_cffi_r�z$static int %s(unsigned long long *o)r�z  int n = (z) <= 0;z  *o = (unsigned long long)((z) | 0);  /* check that z is an integer */rz%dUz  if (!_cffi_check_int(*o, n, z))z    n |= 2;z  return n;r�zstatic void %s(char *o)z  *(rz)o = rc)rrr6r�r))r�is_intrr��categoryrr	�funcnames        r�_generate_cpy_constzRecompiler._generate_cpy_const&s
���d��t�3�3�3�#�6>��E�G�
G���� � �(�D�!1�2��z�z��$,�d�3����7�(�B�C���I��4�1�2��:>��F�
G��&���?�"'�;�.�"8�K��[�J�K��]�#������I��&�&�&��*�X�5�6���I��R�]�]�3�%7��>�?���I��rc�d�|j�}|r|jr|j|�yyr)r'rpr��rr�rr�s    r�"_generate_cpy_constant_collecttypez-Recompiler._generate_cpy_constant_collecttypeDs.���#�#�%����.�.��!�!�"�%�/rc�J�|j�}|j|||�yr)r'r�r�s    rrjz&Recompiler._generate_cpy_constant_declIs"���#�#�%��� � ���r�2rc��|js!|j�rttd�}n4|jrt}nt
}|j|}t||�}|jdjt|d|z|��y)Nr�r��_cffi_const_%s)
rpr'r��OP_CONSTANT_INT�OP_DLOPEN_CONST�OP_CONSTANTr�r�r�r)rr�rr�
const_kindrAs      rr~z%Recompiler._generate_cpy_constant_ctxMsy���$�$��);�);�)=��_�b�1�G��$�$�,�
�(�
�����,�J��Z��4�G��
�
�8��#�#��t�-��4�g�>�	@rc�&�|j|�yr)r�rFs   rr�z)Recompiler._generate_cpy_enum_collecttype]s�����b�!rc�J�|jD]}|jd|��y)NT)�enumeratorsr�)rr�r�
enumerators    rr�z"Recompiler._generate_cpy_enum_decl`s%���.�.�	7�J��$�$�T�:�6�	7rc	���|j|}ttd�}|jr|j	�t|j|j�D]3\}}|jdjt|d|z||����5|�d|vr|jsd|z}d|z}nh|j|jg�}	|jj|	�}tt|jj|	d��dk�}d	j!|j�}
|jd
jt#|j$||||
��y)Nr�r�r��rr�z
sizeof(%s)z
((%s)-1) <= 0rrJr�)r�r��OP_ENUMrp�check_not_partial�zipr��
enumvaluesr�r�r�build_baseinttypern�sizeof�int�castrNrRr)rr�r2rArr��	enumvaluerrU�basetprVs           rr�zRecompiler._enum_ctxds6���_�_�R�(�
���"�%��� � �� � �"�%(�������%G�	3�!�J�	��J�J�x� �'�'��:�'7�*�'D�g�'0�2�
3�	3�
���E�!1�$�:O�:O��%�'�D�$�u�,�F��)�)�$�(�(�B�7�F��8�8�?�?�6�*�D���T�X�X�]�]�6�2�6�7�!�;�<�F��8�8�B�N�N�+���
�
�6��!�!��R�W�W�j�$���A�	Crc�D�|j||j��yr)r�rrFs   r�_generate_cpy_enum_ctxz!Recompiler._generate_cpy_enum_ctxys�����r�2�>�>�+�,rc��yrr%rFs   r�_generate_cpy_macro_collecttypez*Recompiler._generate_cpy_macro_collecttyperLrc�@�|dk(rd}n|}|jd||��y)Nr�Tr�)r�)rr�rrs    r�_generate_cpy_macro_declz#Recompiler._generate_cpy_macro_decl�s(��
��;��K��K�� � ��t�� �Erc���|dk(r|jrtd|�d���d}n|}ttd�}|jdjt
|d|z||���y)Nr�z(cannot use the syntax '...' in '#define z ...' when using the ABI moder�r�r�r�)rprr�r�r�r�r)rr�rrrs     r�_generate_cpy_macro_ctxz"Recompiler._generate_cpy_macro_ctx�sm��
��;��$�$�'�,0�3�4�4��K��K���"�-���
�
�8��#�#��t�-��4�g�#.�
0�	1rc���t|tj�rL|j}|dk(rd|�d�}|j	|j
d|z�}tj||�}|S)Nr�z_cffi_array_len(rKr�)r�rr>r�rEr)rr��global_namer�r�s     rrEzRecompiler._global_type�sY���b�%�/�/�*��I�I�M���%�9D� F�
��'�'�����;�1F�G�G�����-�8�B��	rc�F�|j|j||��yr)r�rErFs   r�"_generate_cpy_variable_collecttypez-Recompiler._generate_cpy_variable_collecttype�s�����d�/�/��D�9�:rc�R�|j}|j||�}t|tj�r|j
�|j}d}nd}d|�d�}|d|j||j��z�|d�|d|�d	|�d
��|d�|�y)Nr5�&z*_cffi_var_r�rar�r�z	  return rr%r�)	r�rEr�rr>r�rr)r�)rr�rr	�	ampersandr�s      r�_generate_cpy_variable_declz&Recompiler._generate_cpy_variable_decl�s����z�z��
�
�
�r�4�
(���b�%�/�/�*�r�y�y�/@����B��I��I��)-�.���Y����t�4�3F�3F��G�
G�H��S�	��9�d�
3�4��S�	��rc
���|j||�}|j|}|jrt}nt}|j
dj
t|d|zt||���y)Nr�z_cffi_var_%s)	rEr�rp�
OP_GLOBAL_VAR�OP_GLOBAL_VAR_Fr�r�rr�)rr�rrAr8s     r�_generate_cpy_variable_ctxz%Recompiler._generate_cpy_variable_ctx�se��
�
�
�r�4�
(���_�_�R�(�
�� � ��B� �B��
�
�8��#�#��t�^�d�2�F�2�z�4J�K�	Mrc�^�t|tj�sJ�|j|�yr)r�rr�r�rFs   r�'_generate_cpy_extern_python_collecttypez2Recompiler._generate_cpy_extern_python_collecttype�s&���"�e�3�3�4�4�4����b�!rc	��|j}t|jtj�rd}n%d|z}d|jjd|��d�}|d|z�|d|j�d|�d	|�d
��|�g}d|z}t|j�D]+\}}	|	jd|z|�}
|j|
��-d
j|�}|xsd}|�d|�d�}|jdk(rd|z}d�}
tt|j�dzd�}|
|j�rt|d�}t|jtj�r;d|jjd�||jjd�|fz}||�|jj|����|d�|d|z�|d�t|j�D]f\}}	d|z}
t|	tj�s|
|	�rd|
z}
tj|	�}	|d|	jd�|dz|
fz��h|d|z�t|jtj�s%|d|jjd��d��|d �|�|xj d!z
c_y)"Nr�rdz(int)sizeof(r5rKz3static struct _cffi_externpy_s _cffi_externpy__%s =rr�r/z	, 0, 0 };r^z a%drr_r�	__stdcallz_cffi_stdcall c�X�t|tj�xr|jdk(S)Nr<)r�rrhrrs r�may_need_128_bitsz9Recompiler._extern_python_decl.<locals>.may_need_128_bits�s(���r�5�#6�#6�7�-��G�G�}�,�
.rr[�z!sizeof(%s) > %d ? sizeof(%s) : %dr�z
  char a[%s];z  char *p = a;za%dr�z  *(%s)(p + %d) = %s;rz,  _cffi_call_python(&_cffi_externpy__%s, p);z  return *(z)p;r�r)r�r�rfrr�r)ror�r�r�rNrkrtr0r�r�r)rr�r�
tag_and_spacer	�size_of_resultrBrpr�rrurrrsr
�	size_of_as               r�_extern_python_declzRecompiler._extern_python_decl�s����z�z���b�i�i����0� �N�$�t�+�G��	�	�$�$�R��1�4�N��
B�T�
I�J�����d�N�4�	5����	�"�T�)�� ����)�	"�G�A�t��/�/�&�1�*�g�6�C����S�!�	"����9�-��'�1�6��)-�~�>��
�6�6�[� �!1�4F�!F��	.���B�G�G��Q���*�	��R�Y�Y�'��I�r�*�I��b�i�i��!4�!4�5�;��	�	�$�$�R�(�)��	�	�$�$�R�(�)�?5�5�I�	
�}�b�i�i�&:�&:�;M�&N�
O�P��S�	��_�y�
(�)��
�� ����)�	M�G�A�t��!�)�C��4��!4�!4�5�%�d�+��C�i���(�(��.���(�D�O�O�C�,@�!�A�#�s�+K�K�L�
	M�	
�
;�d�
B�C��"�)�)�U�^�^�4��r�y�y�';�';�C�'@�B�C��S�	������a��rc�*�|j||d�y)Nra�rrFs   r� _generate_cpy_extern_python_declz+Recompiler._generate_cpy_extern_python_decls��� � ��T�9�5rc�*�|j||d�y)NzCFFI_DLLEXPORT rrFs   r�#_generate_cpy_dllexport_python_declz.Recompiler._generate_cpy_dllexport_python_decl
s��� � ��T�+<�=rc�*�|j||d�y)Nr5rrFs   r�'_generate_cpy_extern_python_plus_c_declz2Recompiler._generate_cpy_extern_python_plus_c_decl
s��� � ��T�2�.rc��|jrtd��|jrtd��|j|}tt|�}|jdjt|d|z||��y)Nz,cannot use 'extern "Python"' in the ABI modez$a vararg function is extern "Python"r�z&_cffi_externpy__%s)
rprrYr3r�r��OP_EXTERN_PYTHONr�r�r)rr�rrArs     r�_generate_cpy_extern_python_ctxz*Recompiler._generate_cpy_extern_python_ctxsw��� � �#�@�B�
B�
�;�;�%�&N�O�O��_�_�R�(�
��)�:�6���
�
�8��#�#��t�2�T�9�7�D�I�	Krc��|j}|d�t|t�s|jd�}n|j	d�	|j	d�|j
d�D]}|}td�turtt|�}nt|�dd}|d	|zj��d
}|D]#}t|�dk\r
||�d
}|d|fzz
}�%||���y#t
$rd|z}Y��wxYw)
Nz=// # NB. this is not a string because of a size limit in MSVCzutf-8�asciis# -*- encoding: utf8 -*-
Tz//rr�z// r5�Lz%d,)
r�r��bytes�encode�decode�UnicodeDecodeError�
splitlinesr�map�ordr�rstripr0)r�sr	�linerD�printed_line�cs       rrz)Recompiler._print_string_literal_in_arrays	���z�z���
L�M��!�U�#�����!�A�
�H�H�W��	2�
�H�H�W���L�L��&�	�D��G��D�z�U�"��3��~�� ��.��2�.���%�'�/�)�)�+�,��L��
-���|�$��*���&�#%�L������,��	
-�

���	��"�	2�-��1�A�	2�s�	C.�.C?�>C?c�F�ttt�|j|<yr)r��OP_PRIMITIVE�	PRIM_VOIDr��rr�rs   r�_emit_bytecode_VoidTypez"Recompiler._emit_bytecode_VoidType=s��!'��i�!@�����rc�d�t|j}tt|�|j|<yr)�PRIMITIVE_TO_INDEXrr�r*r�)rr�rrds    r�_emit_bytecode_PrimitiveTypez'Recompiler._emit_bytecode_PrimitiveType@s%��'����0�
�!'��j�!A�����rc��d|j�d|j�d|j�d�}tt|�|j|<y)Nz_cffi_prim_int(sizeof(z), (
           ((z)-1) | 0 /* check that z' is an integer type */
         ) <= 0)�rr�r*r��rr�rr%s    r�!_emit_bytecode_UnknownIntegerTypez,Recompiler._emit_bytecode_UnknownIntegerTypeDs5��$&�7�7�B�G�G�R�W�W�>��"(��a�!8�����rc�x�d|j�d|j�d�}tt|�|j|<y)Nz_cffi_prim_float(sizeof(z) *
           (((z6)1) / 2) * 2 /* integer => 0, float => 1 */
         )r2r3s    r�_emit_bytecode_UnknownFloatTypez*Recompiler._emit_bytecode_UnknownFloatTypeJs/�� �W�W�b�g�g�/��"(��a�!8�����rc�4�tt|j|j�|j|<|dz
}|j
D]e}|j|}||k7rJt
|tj�r|j||�ntt|�|j|<|dz
}�gt|j�}|j�-|jdk(r|dz}ntd|j����tt|�|j|<y)NrrrYzabi=)r��OP_FUNCTIONr�rfr�r�r�rrhr0r9r�rYrkr3�OP_FUNCTION_END)rr�rr��	realindexrBs      r�_emit_bytecode_RawFunctionTypez)Recompiler._emit_bytecode_RawFunctionTypePs���!'��T�_�_�R�Y�Y�5O�!P������
��
���7�7�	�C�����,�I��	�!��c�5�#6�#6�7��5�5�c�5�A�-3�G�Y�-G�D�O�O�E�*��Q�J�E�	��B�K�K� ��
�6�6���v�v��$���
��)�b�f�f�*>�?�?�!'���!?�����rc�l�tt|j|j�|j|<yr)r��
OP_POINTERr�rVr�r,s   r�_emit_bytecode_PointerTypez%Recompiler._emit_bytecode_PointerTypecs$��!'�
�D�O�O�B�I�I�4N�!O�����rc�x�|j�}tt|j|�|j|<yr)r�r�r=r�r�)rr�r�raws    r�_emit_bytecode_FunctionPtrTypez)Recompiler._emit_bytecode_FunctionPtrTypeis.��� � �"��!'�
�D�O�O�C�4H�!I�����rc��|j|j}|j�tt|�|j
|<y|jdk(r(t
dt|�jdd��d���|j
|dzdk(sJ�tt|�|j
|<tdt|j��|j
|dz<y)Nr�ztype z/*...*/zb badly placed: the '...' array length can only be used on global arrays or on fields of structuresrr|)
r�rr�r��
OP_OPEN_ARRAYr�rr�r*�OP_ARRAY)rr�r�
item_indexs    r�_emit_bytecode_ArrayTypez#Recompiler._emit_bytecode_ArrayTypems����_�_�R�W�W�-�
�
�9�9��%+�M�:�%F�D�O�O�E�"�
�Y�Y�%�
�#���G�O�O�I�u�5�8�9�
9�
�?�?�5�1�9�-��6�6�6�%+�H�j�%A�D�O�O�E�"�)/��c�"�)�)�n�)E�D�O�O�E�A�I�&rc�\�|j|}tt|�|j|<yr)r�r��OP_STRUCT_UNIONr�)rr�r�struct_indexs    r�_emit_bytecode_StructTypez$Recompiler._emit_bytecode_StructType{s'���*�*�2�.��!'���!F�����rc�\�|j|}tt|�|j|<yr)r�r�r�r�)rr�r�
enum_indexs    r�_emit_bytecode_EnumTypez"Recompiler._emit_bytecode_EnumType�s$���[�[��_�
�!'���!<�����r�F)r5r)N�constN)Vr"r#r$rrrvr�r�r�r�r�r�r�r�r�r�rr�rr4r9r,rCrGrIrKrNrWrZr|r�r�r�r�rTr�r�r��_generate_cpy_union_collecttyper�r��_generate_cpy_union_declr��_generate_cpy_union_ctxr�r�r�r�r�rjr~r�r�r�r�r�r�r�rEr�rrr�*_generate_cpy_dllexport_python_collecttype�._generate_cpy_extern_python_plus_c_collecttyperrrrr�"_generate_cpy_dllexport_python_ctx�&_generate_cpy_extern_python_plus_c_ctxrr-r0r4r6r;r>�_emit_bytecode_ConstPointerType�_emit_bytecode_NamedPointerTyperArFrJ�_emit_bytecode_UnionTyperMr%rrrlrl~s����M�%�0�81�t	<�-�&�&H�I�,�>#�2��k�Z"�0�h%�+(�ZK��*�F=�<�
�F�+�&�
`�D2�,
�2� �DT)�lO�7�.%�&F�#�&�7�8��6�6��)�;�:�CJ�(,��<&�
3�@� "�7�C�*-�
�F�1�"�;��.M�"�
.�.�.�4�4 �l6�>�/�	K�&�&�&�,��<A�B�9�9�@�&P�'A�#�&@�#�J�F�G� 9��=rrl)r	c���eZdZ�fd�Z�xZS)�NativeIOc�n��t|t�r|jd�}tt|�|�y)Nr)r��unicoder�superr[r�)rr%r�s  �rr�zNativeIO.write�s*����!�W�%��H�H�W�%���(�D�'��*r)r"r#r$r��
__classcell__)r�s@rr[r[�s
���	+�	+rr[c��t|d�S)Nr�)�hasattr)�	maybefiles r�
_is_file_likerc�s���9�g�&�&rc��|rtd|���t|||du��}|j�|j�t	|�r|j||�yt
�}|j||�|j�}	t|d�5}|jt|�dz�|k7rt�	ddd�|rtd�y#1swY�xYw#t$r�d|tj�fz}	t|	d	�5}|j|�ddd�n#1swYnxYw	tj|	|�Yy#t $r/tj"|�tj|	|�YYywxYwwxYw)
Nzgenerating )rpTr�rz(already up-to-date)Fz%s.~%d�w)�printrlr�r�rcr�r[�getvaluer��readr0�IOErrorr��getpidr��rename�OSError�unlink)
rnror��target_file�verbose�
recompilerr��output�f1�tmp_files
          r�_make_c_or_py_sourcert�sn���
��.�/��C��.6�$�.>�A�J��!�!�#��"�"�$��[�!��$�$�[�(�;���
�A�� � ��H�-�
�Z�Z�\�F��
�+�s�
#�	�r��w�w�s�6�{�Q��'�6�1��
�2�	���(�)��	�	���	��{�B�I�I�K�8�8��
�(�C�
 �	�B��H�H�V��	�	�	��	-��I�I�h��,����	-��I�I�k�"��I�I�h��,��	-��
	�sZ�C"�'C�C"�C�C"�".F�D+�"	F�+D4	�0F�8E�4F�F�F�Fc�(�|�J�t|||||�Sr�rt)rnror��
target_c_fileros     r�
make_c_sourcerx�s&��������[�(�M� '�)�)rc� �t||d||�Srrv)rnro�target_py_fileros    r�make_py_sourcer{�s����[�$�� '�)�)rc��|jd�}	tjtjj|g|dd����|dxx|z
cc<tjj|g|���|fS#t
$rY�:wxYw)Nr�r�)r�r��makedirsr�rNrl)�	outputdir�modname�	extension�partss    r�_modname_to_filer��sz���M�M�#��E�
�
���B�G�G�L�L��8�U�3�B�Z�8�9�
�"�I���I�
�7�7�<�<�	�*�E�*�E�1�1���
��
�s�6A8�8	B�Bc�`�t||�}|j|||f�t|||�|Sr)r�r��setattr)�	patchlist�clsr�new_meth�olds     r�_patch_methr��s4��
�#�t�
�C�
���c�4��%�&��C��x� ��Jrc�F�t|�D]\}}}t|||��yr)�reversedr�)r�r�r�old_meths    r�_unpatch_methsr��s)��'�	�2�%���T�8���T�8�$�%rc���tjdk(rddlm}|�t	||dd��tjdk(rddlm}�fd�}t	||d	|��yy)
Nrr)�MSVCCompiler�_remove_visual_c_refc��|Srr%)r�
manifest_files  rr�z&_patch_for_embedding.<locals>.<lambda>�s��M�r�darwin)�	CCompilerc���d|jvrDt|j�|_|jjd�}d|j|<�|g|��i|��S)Nz-bundlez-dynamiclib)�	linker_sorr)rr��kwdsr��old_link_shared_objects    �r�my_link_shared_objectz3_patch_for_embedding.<locals>.my_link_shared_object�sV����D�N�N�*�!%�d�n�n�!5����N�N�(�(��3��$1����q�!�)�$�>��>��>�>r�link_shared_object)�sys�platform�cffi._shimmed_dist_utilsr�r�r�)r�r�r�r�r�s    @r�_patch_for_embeddingr��s`���
�|�|�w��	:��#��	�<�1G�A�
C��|�|�x��6�	?�"-�Y�	�-A�-B�"D�� rc����ddlm}�jd�r<�dd�tjdk(r�dz
�ntjdk(r�dz
�n�d	z
�t||d
�fd��y)Nr)�	build_extz.*r�rz.dllr�z.dylibz.so�get_ext_filenamec����Srr%)r�ext_name�targets  �rr�z#_patch_for_target.<locals>.<lambda>�s���v�r)r�r��endswithr�r�r�)r�r�r�s ` r�_patch_for_targetr��sf���2����t��������<�<�7�"��f��F�
�\�\�X�
%��h��F��e�O�F��	�9�&8�-�/rc��t|t�s|jd�}|jr|j	|�|��m|rt|�rt
d��|jdu}
|
r|j|�|�5t|||�\}}|r|g|z}tjj|�}n|}|	�
|
rd|z}	nd}	|rtj||fi|��}nd}t|||||��}|r�g}tj �}	|
rt#|�|	dk7rt%||	�|r7|dk(rd}nd}t'|�d	tjj)|����tj*|�tj,d|||
�}tj*|�t/|�|S||fS|�t||d
�\}}t1||||��}|r|Sd|fS#tj*|�t/|�wxYw)NrzGWriting to file-like objects is not supported with call_c_compiler=Truez%s.*r)ror�zthe current directory isz setting the current directory tor.z.py)r�r�r�_windows_unicode�_apply_windows_unicodercr@r��_apply_embedding_fixr�r�r�rNr�
get_extensionrx�getcwdr�r�rf�abspath�chdir�compiler�r{)rnror��tmpdir�call_c_compiler�c_file�source_extension�extradir�compiler_verboser��debug�uses_ffiplatformr��	embeddingr��
ext_c_file�ext�updatedr��cwd�msg�outputfilenamer�s                       r�	recompiler��s���k�3�'�!�(�(��1��
����"�"�4�(����}�V�4��8�9�
9��^�^�4�/�	���$�$�T�*��>�,�V�[�-=�?�M�F�E��!�
�U�*�������u�-�J��J��>���+�-������+�+�J��L�t�L�C��C���[�(�F�(8�:����I��)�)�+�C�
*��(��3��S�=�%�i��8�#���}�8��@���S�"�'�'�/�/�&�*A�B�C����� �!,�!4�!4�S�#�5E�u�"N������
��y�)�!�!���<���>�(���e�D�I�F�A� ��k�6�)9�;����M���=� ������
��y�)�s
�BG�"G:rN)	r�TNz.cNrNNT)"r�r��ior5rr�errorr�cffi_opcoderqrr+r��version_infor�rr'r?rRrfrl�StringIOr[�BytesIOrcrtrxr{r�r�r�r�r�r�r%rr�<module>r�s	���� �$���������<�<�7�*�.�c�.>�.>��.G�.��#�#�v�-��1�1� )�)�8#�#�:?�?�0	K�	K�D=�D=�N(���t���{�{�H�+�2�:�:�+�'��>)�
)�2��%�D�./�"GK�;?�59�#�C!r